bzoj1691 [Usaco2007 Dec]挑剔的美食家
2018-02-28 14:03
232 查看
http://www.elijahqi.win/2018/02/28/bzoj1691/
Description
与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了。现在,Farmer John不得不去牧草专供商那里购买大量美味多汁的牧草,来满足他那N(1 <= N <= 100,000)头挑剔的奶牛。 所有奶牛都对FJ提出了她对牧草的要求:第i头奶牛要求她的食物每份的价钱不低于A_i(1 <= A_i <= 1,000,000,000),并且鲜嫩程度不能低于B_i(1 <= B_i <= 1,000,000,000)。商店里供应M(1 <= M <= 100,000)种不同的牧草,第i 种牧草的定价为C_i(1 <= C_i <= 1,000,000,000),鲜嫩程度为D_i (1 <= D_i <= 1,000,000,000)。 为了显示她们的与众不同,每头奶牛都要求她的食物是独一无二的,也就是说,没有哪两头奶牛会选择同一种食物。 Farmer John想知道,为了让所有奶牛满意,他最少得在购买食物上花多少钱。
Input
第1行: 2个用空格隔开的整数:N 和 M
第2..N+1行: 第i+1行包含2个用空格隔开的整数:A_i、B_i * 第N+2..N+M+1行: 第j+N+1行包含2个用空格隔开的整数:C_i、D_i
Output
第1行: 输出1个整数,表示使所有奶牛满意的最小花费。如果无论如何都无法 满足所有奶牛的需求,输出-1
Sample Input
4 7
1 1
2 3
1 4
4 2
3 2
2 1
4 3
5 2
5 4
2 6
4 4
Sample Output
12
输出说明:
给奶牛1吃价钱为2的2号牧草,奶牛2吃价钱为4的3号牧草,奶牛3分到价钱
为2的6号牧草,奶牛4选择价钱为4的7号牧草,这种分配方案的总花费是12,为
所有方案中花费最少的。
这题:考虑按照b值排序 从大到小做 贪心即可 因为随着b递降 我可选择的范围比较大所以尽量让选择范围小的先选即可 并且因为最后求的是总的答案可以想象的到 这样贪心一定是对的
treap的删除已经不会了 大概就是不停的往下旋转删除即可 直到我到叶子节点了 或者我左右儿子有一个是空的了我就在这个地方把这个点删除
Description
与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了。现在,Farmer John不得不去牧草专供商那里购买大量美味多汁的牧草,来满足他那N(1 <= N <= 100,000)头挑剔的奶牛。 所有奶牛都对FJ提出了她对牧草的要求:第i头奶牛要求她的食物每份的价钱不低于A_i(1 <= A_i <= 1,000,000,000),并且鲜嫩程度不能低于B_i(1 <= B_i <= 1,000,000,000)。商店里供应M(1 <= M <= 100,000)种不同的牧草,第i 种牧草的定价为C_i(1 <= C_i <= 1,000,000,000),鲜嫩程度为D_i (1 <= D_i <= 1,000,000,000)。 为了显示她们的与众不同,每头奶牛都要求她的食物是独一无二的,也就是说,没有哪两头奶牛会选择同一种食物。 Farmer John想知道,为了让所有奶牛满意,他最少得在购买食物上花多少钱。
Input
第1行: 2个用空格隔开的整数:N 和 M
第2..N+1行: 第i+1行包含2个用空格隔开的整数:A_i、B_i * 第N+2..N+M+1行: 第j+N+1行包含2个用空格隔开的整数:C_i、D_i
Output
第1行: 输出1个整数,表示使所有奶牛满意的最小花费。如果无论如何都无法 满足所有奶牛的需求,输出-1
Sample Input
4 7
1 1
2 3
1 4
4 2
3 2
2 1
4 3
5 2
5 4
2 6
4 4
Sample Output
12
输出说明:
给奶牛1吃价钱为2的2号牧草,奶牛2吃价钱为4的3号牧草,奶牛3分到价钱
为2的6号牧草,奶牛4选择价钱为4的7号牧草,这种分配方案的总花费是12,为
所有方案中花费最少的。
这题:考虑按照b值排序 从大到小做 贪心即可 因为随着b递降 我可选择的范围比较大所以尽量让选择范围小的先选即可 并且因为最后求的是总的答案可以想象的到 这样贪心一定是对的
treap的删除已经不会了 大概就是不停的往下旋转删除即可 直到我到叶子节点了 或者我左右儿子有一个是空的了我就在这个地方把这个点删除
#include<cstdio> #include<algorithm> #define ll long long #define N 110000 #define inf 0x3f3f3f3f using namespace std; inline char gc(){ static char now[1<<16],*S,*T; 4000 if (T==S){T=(S=now)+fread(now,1,1<<16,stdin);if (T==S) return EOF;} return *S++; } inline int read(){ int x=0,f=1;char ch=gc(); while(ch<'0'||ch>'9') {if (ch=='-') f=-1;ch=gc();} while(ch<='9'&&ch>='0') x=x*10+ch-'0',ch=gc(); return x*f; } struct node{ int p,b; }c ,gr ; long long ans; int su,nm ,size ,lc ,rc ,n,m,rt,rd ,cnt,v ; inline bool cmp(const node &a,const node &b){ return a.b>b.b; } inline void update(int x){ size[x]=size[lc[x]]+nm[x]+size[rc[x]]; } inline void r_rotate(int &x){ int tmp=lc[x];lc[x]=rc[tmp];rc[tmp]=x;update(x);update(tmp);x=tmp; } inline void l_rotate(int &x){ int tmp=rc[x];rc[x]=lc[tmp];lc[tmp]=x;update(x);update(tmp);x=tmp; } inline void insert1(int &x,int vv){ if (!x) {x=++cnt;v[x]=vv;size[x]=nm[x]=1;rd[x]=rand();return;} if (v[x]==vv){++nm[x],++size[x];return;} if (vv<v[x]){ insert1(lc[x],vv);if (rd[lc[x]]<rd[x]) r_rotate(x); return; }insert1(rc[x],vv);if (rd[rc[x]]<rd[x]) l_rotate(x); } inline void succ(int x,int vv){ if(!x) return; if (v[x]>=vv) su=v[x],succ(lc[x],vv);else succ(rc[x],vv); } inline void del(int &x,int vv){ if (v[x]==vv){ if (nm[x]>1) --nm[x],--size[x];else if (lc[x]*rc[x]==0) x=lc[x]+rc[x];else if (rd[lc[x]]<rd[rc[x]]) r_rotate(x),del(x,vv);else l_rotate(x),del(x,vv);return; }--size[x]; if (vv<v[x]) del(lc[x],vv);else del(rc[x],vv); } inline void print(int x){ if (lc[x]) print(lc[x]); printf("%d ",v[x]); if (rc[x]) print(rc[x]); } int main(){ freopen("bzoj1691.in","r",stdin); n=read();m=read();int tot=1;srand(998244353); for (int i=1;i<=n;++i) c[i].p=read(),c[i].b=read(); for (int i=1;i<=m;++i) gr[i].p=read(),gr[i].b=read(); sort(c+1,c+n+1,cmp);sort(gr+1,gr+m+1,cmp); for (int i=1;i<=n;++i){ while(tot<=m&&gr[tot].b>=c[i].b) insert1(rt,gr[tot++].p); //print(rt);puts(""); su=inf;succ(rt,c[i].p); del(rt,su);ans+=su; }printf("%lld\n",ans); }
相关文章推荐
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家 Treap
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家
- 【bzoj1691】[Usaco2007 Dec]挑剔的美食家
- BZOJ1691 [Usaco2007 Dec]挑剔的美食家
- 【BZOJ 1691】[Usaco2007 Dec]挑剔的美食家 treap+贪心
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
- BZOJ[1691][Usaco2007 Dec]挑剔的美食家 贪心+Splay
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家
- USACO 2007 Dec Gourmet Grazers 挑剔的美食家
- bzoj1691 [Usaco2007 Dec]挑剔的美食家 treap+贪心
- 【贪心+Treap】BZOJ1691-[Usaco2007 Dec]挑剔的美食家
- bzoj1691 [Usaco2007 Dec]挑剔的美食家
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 set
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家
- 【贪心】【二维偏序】【权值分块】bzoj1691 [Usaco2007 Dec]挑剔的美食家
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家【贪心+splay】
- 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家
- 1691: [Usaco2007 Dec]挑剔的美食家
- 1691: [Usaco2007 Dec]挑剔的美食家