AT2645Exhausted?

Posted shxnb666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AT2645Exhausted?相关的知识,希望对你有一定的参考价值。

题面

$zhhx$讲过的题,拓展霍尔定理。

题解

考虑一个区间$[1..l]$,找到让它最紧张的$[r..n]$,这个操作我们用线段树实现,因为$r$越往左越宽裕,所以在一开始的时候,是一个递减的等差数列的形式。

然后线段树区间修改求最小值。

代码$WA$了几个点,应该是有点小锅的。要是有大佬看出来的记得说一下w。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define N 200050
#define ri register int
#define INF 10000007

using namespace std;

int n,m;
struct node 
  int l,r;
  bool operator < (const node &rhs) const 
    return l<rhs.l;
  
 a[N];

int b[N];

struct segment_tree
  int tt[N<<2],tag[N<<2];
  void maketree(int x,int lb,int rb) 
    if (lb==rb) 
      tt[x]=b[lb];
      tag[x]=0;
      return;
    
    int mid=(lb+rb)/2;
    maketree(2*x,lb,mid); maketree(2*x+1,mid+1,rb);
    tt[x]=min(tt[2*x],tt[2*x+1]);
  
  void pushdown(int x) 
    int k=tag[x]; tag[x]=0;
    tt[2*x]+=k; tag[2*x]+=k;
    tt[2*x+1]+=k; tag[2*x+1]+=k;
  
  void add(int x,int l,int r,int k,int lb,int rb) 
    if (l<=lb && rb<=r) 
      tt[x]+=k; tag[x]+=k;
      return;
    
    if (lb>r || rb<l) return;
    pushdown(x);
    int mid=(lb+rb)/2;
    add(2*x,l,r,k,lb,mid); add(2*x+1,l,r,k,mid+1,rb);
    tt[x]=min(tt[2*x],tt[2*x+1]);
  
  int query(int x,int l,int r,int lb,int rb) 
    if (l<=lb && rb<=r) 
      return tt[x];
    
    if (lb>r || rb<l) return INF;
    pushdown(x);
    int mid=(lb+rb)/2;
    return min(query(2*x,l,r,lb,mid),query(2*x+1,l,r,mid+1,rb));
  
 yy;

int main() 
  scanf("%d %d",&m,&n);
  for (ri i=1;i<=m;i++) scanf("%d %d",&a[i].l,&a[i].r);
  sort(a+1,a+m+1);
  int cnt=0;
  for (ri i=n+1;i>=1;i--) b[i]=cnt++;
  yy.maketree(1,1,n+1);
  int ans=0;
  for (ri i=1;i<=m;i++) 
    yy.add(1,1,a[i].r,-1,1,n+1);
    int ming=yy.query(1,a[i].l+1,n+1,1,n+1);
    if (a[i].l+ming<ans) ans=a[i].l+ming;
  
  printf("%d\n",-ans);

以上是关于AT2645Exhausted?的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder F - Exhausted?

Centos安装php提示virtual memory exhausted: Cannot allocate memory

virtual memory exhausted: Cannot allocate memory

Atcoder Regular Contest 076 F - Exhausted?题解

[ARC076F]Exhausted?

Allowed memory size of 134217728 bytes exhausted