【問題解】AcWing 110.日焼け止め(普及問題)

1465 ワード

【問題解】AcWing 110.日焼け止め(普及問題)
AcWing 110. 日焼け止め
君が使ったことのない新しいOJ
へへへ水問題.
テーマは1次元の座標軸の上で多数の線分を与えて、多数の点を与えて、点は線分の上で貢献をもたらして、点は繰り返して、最大の貢献を聞きます
テンプレートの問題は、主に与えるときに必ずしも点が異なるとは限らないことに気づくので、記録しておきます.重さに気をつけてください.
//@winlere
#include
#include
#include
#include
#include

using namespace std;  typedef long long ll;
inline int qr(){
      register int ret=0,f=0;
      register char c=getchar();
      while(c<48||c>57)f|=c==45,c=getchar();
      while(c>=48&&c<=57) ret=ret*10+c-48,c=getchar();
      return f?-ret:ret;
}

const int maxn=2505;
struct L{
      int l,r;
      L(){l=r=0;}
      L(const int&a,const int&b){l=a;r=b;}
      inline bool operator a.l:r s;

int main(){
      n=qr();m=qr();
      for(register int t=1,t1,t2;t<=n;++t)
        t1=qr(),t2=qr(),data[t]=L(t1,t2);
      for(register int t=1,t1,t2;t<=m;++t){
        t1=qr();t2=qr();
        cnt[t1]+=t2;
        s.insert(t1);
      }
      sort(data+1,data+n+1);
      for(register int t=1;t<=n;++t){
        set::iterator a=s.lower_bound(data[t].l);
        if(a==s.end()||*a>data[t].r) continue;
        if(--cnt[*a]<=0) s.erase(a);
        ++ans;
      }
      printf("%d
",ans); return 0; }

転載先:https://www.cnblogs.com/winlere/p/11223219.html