【贪心】【二维偏序】【权值分块】bzoj1691 [Usaco2007 Dec]挑剔的美食家
既然题目中的要求满足二维偏序,那么我们很自然地想到将所有东西(草和牛)都读进来之后,对一维(美味度)排序,然后在另一维(价值)中取当前最小的。
于是,Splay、mutiset、权值分块什么的都支持查询后继呢。
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int Num,CH[],f,c;
inline void R(int &x){
c=;f=;
for(;c<''||c>'';c=getchar())if(c=='-')f=-;
for(x=;c>=''&&c<='';c=getchar())(x*=)+=(c-'');
x*=f;
}
long long ans;
struct Val3{int c,v;bool is;void Read(){R(c);R(v);}}a[];
struct Point{int v,p;}t[];
bool operator < (const Val3 &a,const Val3 &b){return a.v!=b.v ? a.v>b.v : a.is>b.is;}
bool operator < (const Point &a,const Point &b){return a.v<b.v;}
int n,m,en,ma[],b[],sumv[],l[],r[],num[],sum=;
int B[];
void makeblock()
{
int sz=sqrt(en); if(!sz) sz=;
for(;sum*sz<en;++sum)
{
l[sum]=r[sum-]+; r[sum]=sum*sz;
for(int i=l[sum];i<=r[sum];++i) num[i]=sum;
}
l[sum]=r[sum-]+; r[sum]=en;
for(int i=l[sum];i<=r[sum];++i) num[i]=sum;
}
void Insert(const int &x){++B[x]; ++sumv[num[x]];}
void Delete(const int &x){--B[x]; --sumv[num[x]];}
int Next(const int &x)
{
for(int i=x;i<=r[num[x]];i++) if(B[i]) return i;
for(int i=num[x]+;i<=sum;i++) if(sumv[i])
for(int j=l[i];j<=r[i];j++)
if(B[j]) return j;
return -;
}
int main()
{
R(n); R(m);
for(int i=;i<=n;++i) a[i].Read();
for(int i=n+;i<=m+n;++i)
{
a[i].Read();
a[i].is=;
}
sort(a+,a+n+m+);
for(int i=;i<=m+n;++i)
{
t[i].v=a[i].c;
t[i].p=i;
}
sort(t+,t++n+m);
ma[b[t[].p]=++en]=t[].v;
for(int i=;i<=n+m;++i)
{
if(t[i].v!=t[i-].v) ++en;
ma[b[t[i].p]=en]=t[i].v;
} makeblock();
for(int i=;i<=n+m;++i)
if(a[i].is) Insert(b[i]);
else
{
int Nex=Next(b[i]);
if(Nex==-)
{
puts("-1");
return ;
}
ans+=(long long)ma[Nex];
Delete(Nex);
}
printf("%lld\n",ans);
return ;
}
【贪心】【二维偏序】【权值分块】bzoj1691 [Usaco2007 Dec]挑剔的美食家的更多相关文章
- [BZOJ1691][Usaco2007 Dec]挑剔的美食家
[BZOJ1691][Usaco2007 Dec]挑剔的美食家 试题描述 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了. ...
- bzoj1691[Usaco2007 Dec]挑剔的美食家 平衡树treap
Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...
- BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心
BZOJ_1691_[Usaco2007 Dec]挑剔的美食家_贪心 题意: 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返 ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家 [treap 贪心]
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 786 Solved: 391[Submit][S ...
- 【BZOJ】1691: [Usaco2007 Dec]挑剔的美食家(set+贪心)
http://www.lydsy.com/JudgeOnline/problem.php?id=1691 懒得打平衡树了.... 而且multiset是很快的... 排到了rank1 T_T 贪心就是 ...
- BZOJ1691: [Usaco2007 Dec]挑剔的美食家
传送门: 一句话题解:贪心+treap 好几天前刚学的treap,然后真到了考treap又写不出来,这么辣鸡还搞什么OI 先按$A_i$递减排序,然后把$C_i$也递减排序,然后用一个指针指向$M$序 ...
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家【贪心+splay】
高端贪心,好久没写splay调了好久-- 以下v为价格,w为鲜嫩度 把牛和草都按v排升序,扫草,首先把v小于等于当前草的牛都丢进splay,这样一来splay里全是可选的牛了,按w排序,然后贪心的为当 ...
- 「BZOJ1691」[Usaco2007 Dec] 挑剔的美食家 (Treap)
Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...
- BZOJ 1691 [Usaco2007 Dec]挑剔的美食家 multiset_排序_贪心
Description 与很多奶牛一样,Farmer John那群养尊处优的奶牛们对食物越来越挑剔,随便拿堆草就能打发她们午饭的日子自然是一去不返了.现在,Farmer John不得不去牧草专供商那里 ...
随机推荐
- linux bash善用判断式
1.利用 test 指令的测试功能 $ test -e hello.sh && echo "ok" || echo "no" ok 2.首先,判 ...
- POJ1087:A Plug for UNIX(最大流)
A Plug for UNIX 题目链接:https://vjudge.net/problem/POJ-1087 Description: You are in charge of setting u ...
- HDU3038:How Many Answers Are Wrong(带权并查集)
How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- idea中如何配置git以及在idea中初始化git
idea中如何配置git以及在idea中初始化git呢: 参考此博文: http://blog.csdn.net/qq_28867949/article/details/73012300 *为了这个问 ...
- TCP ------ keep-alive - 判断TCP链路的连接情况
TCP 是面向连接的 , 在实际应用中通常都需要检测对端是否还处于连接中.如果已断开连接,主要分为以下几种情况: 1. 连接的对端正常关闭,即使用 closesocket 关闭连接 ...
- SpringMVC学习 -- REST
REST:表现层状态转化. REST 是目前最流行的一种互联网软件架构.他结构清晰.符合标准.易于理解.扩展方便 , 所以正得到越来越多网站的采用. 状态转化:浏览器 form 表单只支持 GET 和 ...
- java使用JNA调用dll
1.自己搞一个dll出来.参考下面链接 http://blog.csdn.net/lqena/article/details/46357165. 2.下载jar jna-4.2.1.jar. 3.复制 ...
- struts学习笔记(四)
一. 文件的上传: 1). 表单需要注意的 3 点 2). Struts2 的文件上传实际上使用的是 Commons FileUpload 组件, 所以需要导入 commons-fileupload- ...
- Nginx各项配置的含义
#user nobody; #配置用户或者组,默认为nobody nobody worker_processes 4; #允许生成的进程数,默认为1 worker_cpu_affinity 00000 ...
- Chocolatey 使用
最近空了下来不干点什么就感觉脑袋热,可是出过的问题挖过的坑还是要自己去解决. 一直网络不好安装choco一直都是报错,今天又建立了chocolatey 在windows上来用,网络问题解决了,类似于m ...