博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 1691: [Usaco2007 Dec]挑剔的美食家【贪心+splay】
阅读量:5263 次
发布时间:2019-06-14

本文共 1112 字,大约阅读时间需要 3 分钟。

高端贪心,好久没写splay调了好久……

以下v为价格,w为鲜嫩度
把牛和草都按v排升序,扫草,首先把v小于等于当前草的牛都丢进splay,这样一来splay里全是可选的牛了,按w排序,然后贪心的为当前的草取牛:w小于等于当前草的w的牛,取出来删除,ans加上当前草的价格(没有则跳过)
取牛的时候统计一下来判无解

#include
#include
#include
using namespace std;const int N=100005,inf=1e9+7;int n,m,tot,con,rot;struct phs{ int f,c[2],v,s;}t[N];struct qwe{ int v,w;}a[N],b[N];bool cmp(const qwe &a,const qwe &b){ return a.v
'9'||p<'0') { if(p=='-') f=-1; p=getchar(); } while(p>='0'&&p<='9') { r=r*10+p-48; p=getchar(); } return r*f;}inline void ud(int x){ t[x].s=t[t[x].c[0]].s+t[t[x].c[1]].s+1;}void zhuan(int x,int &k){ int y=t[x].f,z=t[y].f,l=t[y].c[0]!=x,r=l^1; if(y!=k) t[z].c[t[z].c[0]!=y]=x; else k=x; t[x].f=z; t[y].c[l]=t[x].c[r]; t[t[y].c[l]].f=y; t[x].c[r]=y; t[y].f=x; ud(y); ud(x);}void splay(int x,int &k){ while(x!=k) {//cerr<
<<" "<
<
2) ans+=b[i].v,con++,shanchu(now);//,cerr<
<<" "<
<
<

转载于:https://www.cnblogs.com/lokiii/p/8991323.html

你可能感兴趣的文章
jQuery $.extend()用法总结
查看>>
octave基本操作
查看>>
排球计分程序重构(一)
查看>>
go 文件上传
查看>>
axure学习点
查看>>
javascript: 处理URL字符串
查看>>
MATLAB数值计算与数据分析(2)
查看>>
JUnit
查看>>
将自己apk打包进其他apk安装思路
查看>>
专题四--1004
查看>>
android学习——Intent总结
查看>>
全文搜索(AC-1)-互联网信息过载问题
查看>>
[占位 补充看图感想]vm子系统交互图 清晰版本【再发】
查看>>
WPF文本框只允许输入数字[转]
查看>>
事务的四种隔离级别和七种传播行为
查看>>
dom4j 通用解析器,解析成List<Map<String,Object>>
查看>>
Denver Broncos nfl jersey authentic considering alot more
查看>>
HDU 3572 最大流
查看>>
Bootstrap基础
查看>>
Javascript: 从prototype漫谈到继承(1)
查看>>