传送门:

一句话题解:贪心+treap

好几天前刚学的treap,然后真到了考treap又写不出来,这么辣鸡还搞什么OI

先按$A_i$递减排序,然后把$C_i$也递减排序,然后用一个指针指向$M$序列,遍历$N$序列,这样的话每次所找到的元素必定是$A_i \leq B_i$的

这样我们就可以专注于$B_i$和$D_i$的关系,这个关系我们用平衡树维护就行了,Treap就是个不错的选择。每次插入合法的$C_i$,然后累加每个最优的$C_i$

具体参考代码:

 //OJ 1939
 //by Cydiater
 //2016.9.10
 #include <iostream>
 #include <cstdio>
 #include <cstring>
 #include <string>
 #include <algorithm>
 #include <queue>
 #include <map>
 #include <ctime>
 #include <cmath>
 #include <string>
 #include <iomanip>
 using namespace std;
 #define ll long long
 #define up(i,j,n)        for(int i=j;i<=n;i++)
 #define down(i,j,n)        for(int i=j;i>=n;i--)
 ;
 const ll oo=0x3f3f3f3f;
 inline ll read(){
     ,f=;
     ;ch=getchar();}
     +ch-';ch=getchar();}
     return x*f;
 }
 ,tol=,tmp;
 ll ans=;
 struct _data{
     int x,y;
 }a[MAXN],b[MAXN];
 struct tree{
     int leftt,rightt,v,siz,cnt,rnd;
 }t[MAXN];
 namespace solution{
     inline bool cmpfory(_data x,_data y){return x.y>y.y;}
     inline void updata(int k){t[k].siz=t[t[k].leftt].siz+t[t[k].rightt].siz+t[k].cnt;}
     void init(){
         N=read();M=read();
         up(i,,N){
             a[i].x=read();a[i].y=read();
         }
         up(i,,M){
             b[i].x=read();b[i].y=read();
         }
         sort(a+,a+N+,cmpfory);
         sort(b+,b+M+,cmpfory);
     }
     void lefturn(int &k){
         int tt=t[k].rightt;t[k].rightt=t[tt].leftt;t[tt].leftt=k;
         t[tt].siz=t[k].siz;updata(k);k=tt;
     }
     void righturn(int &k){
         int tt=t[k].leftt;t[k].leftt=t[tt].rightt;t[tt].rightt=k;
         t[tt].siz=t[k].siz;updata(k);k=tt;
     }
     void insert(int &k,int v){
         ){
             k=++tol;t[k].leftt=t[k].rightt=;
             t[k].rnd=rand();t[k].v=v;t[k].siz=t[k].cnt=;
             return;
         }
         t[k].siz++;
         if(t[k].v==v){
             t[k].cnt++;
             return;
         }
         if(v<t[k].v){
             insert(t[k].leftt,v);
             if(t[k].rnd>t[t[k].leftt].rnd)righturn(k);
         }else if(v>t[k].v){
             insert(t[k].rightt,v);
             if(t[k].rnd>t[t[k].rightt].rnd)lefturn(k);
         }
     }
     void nxt(int k,int v){
         )return;
         if(t[k].v>=v){
             tmp=t[k].v;
             nxt(t[k].leftt,v);
         }else nxt(t[k].rightt,v);
     }
     void del(int &k,int v){
         )return;
         if(v==t[k].v){
             ){
                 t[k].cnt--;
                 t[k].siz--;
                 return;
             }
             ){
                 k=t[k].leftt+t[k].rightt;
                 return;
             }
             if(t[t[k].leftt].rnd<t[t[k].rightt].rnd){
                 righturn(k);
                 del(k,v);
             }else{
                 lefturn(k);
                 del(k,v);
             }
         }
         else if(v<t[k].v){
             t[k].siz--;
             del(t[k].leftt,v);
         }else{
             t[k].siz--;
             del(t[k].rightt,v);
         }
     }
     void slove(){
         ;
         up(i,,N){
             while(b[j].y>=a[i].y&&j<=M)
                 insert(root,b[j++].x);
             tmp=-;
             nxt(root,a[i].x);ans+=tmp;
             ){
                 puts("-1");
                 exit();
             }
             del(root,tmp);
         }
     }
     void output(){
         cout<<ans<<endl;
     }
 }
 int main(){
     //freopen("input.in","r",stdin);
     using namespace solution;
     init();
     slove();
     output();
     ;
 }

另外,这个会爆ll

BZOJ1691: [Usaco2007 Dec]挑剔的美食家的更多相关文章

  1. [BZOJ1691][Usaco2007 Dec]挑剔的美食家

    [BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...

  2. bzoj1691[Usaco2007 Dec]挑剔的美食家 平衡树treap

    Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...

  3. 【贪心】【二维偏序】【权值分块】bzoj1691 [Usaco2007 Dec]挑剔的美食家

    既然题目中的要求满足二维偏序,那么我们很自然地想到将所有东西(草和牛)都读进来之后,对一维(美味度)排序,然后在另一维(价值)中取当前最小的. 于是,Splay.mutiset.权值分块什么的都支持查 ...

  4. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 786  Solved: 391[Submit][S ...

  5. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )

    按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...

  6. BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心

    BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心 题意: 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返 ...

  7. 「BZOJ1691」[Usaco2007 Dec] 挑剔的美食家 (Treap)

    Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...

  8. 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家(set+贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1691 懒得打平衡树了.... 而且multiset是很快的... 排到了rank1 T_T 贪心就是 ...

  9. 1691: [Usaco2007 Dec]挑剔的美食家

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 621  Solved: 280[Submit][Status][Discuss] Description ...

随机推荐

  1. linux上课

    1. service --status-all 2. service sshd restart 3. service --status-all  | grep ssh 4. chkconfig --l ...

  2. 基于Html5缓存的页面P2P技术可行性探讨

    P2P技术,在分享大文件(你懂的)是现在必不可缺的技术,现在的人,已经很难想象在没有这玩意的互联网早期,人们是怎样的艰难求生.想当年,不要说电影,下一个稍大点的文件,都是很吃力的事情. 后来牛人科恩, ...

  3. pdo知识总结

    PDO 用了这么久了这里抽时间总结下: pdo (php data object) 是php5 新出来的支持 mysql 操作的一个功能.用其可代替mysqli扩展.因为是php自带的.所以我觉得效率 ...

  4. Python 练习册

    01:将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果 [图像处理] 类似于图中效果: py 2.7代码: from PIL import Image, Im ...

  5. JNI系列——简便开发流程

    1.编写Java代码 2.选中工程目录--右键单击Android Tools--Add Native Support 3.输入要生成的库名 4.到工程目录中jni目录下对自动生成文件和.mk文件进行相 ...

  6. SpringMVC学习--springmvc原理

    简介 springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合.springmvc是一个基于mvc的web框架. spring的结构图: mvc在b/ ...

  7. 开发错误记录5-Failed to sync Gradle project ‘HideTitleDemo’

    今天用Android Studio2.0创建的项目,到Android Studio1.5打开,直接报错: 意思就是内存空间不够,要在gradle.properties 文件中进行内存设置,因为是从高版 ...

  8. jsp内置对象作业1-用户登录

    题目:编写一个jsp程序,实现用户登录,当用户输入的用户名或密码错误时,将页面重定向到错误提示也,并在该页面显示30秒后,自动返回到用户登录页面. 1.用户登录页面 <%@ page langu ...

  9. Swift基础--通知,代理和block的使用抉择以及Swift中的代理

    什么时候用通知,什么时候用代理,什么时候用block 通知 : 两者关系层次太深,八竿子打不着的那种最适合用通知.因为层级结构深了,用代理要一层一层往下传递,代码结构就复杂了 代理 : 父子关系,监听 ...

  10. js_RGB转16进制(rgb2hex)

    输入:rgb(13,0,255) 输出:#0d00ff 在线颜色转换工具:http://www.atool.org/colorpicker.php 1 2 3 4 5 6 7 8 9 function ...