[USACO12FEB]牛券Cow Coupons
嘟嘟嘟
这其实是一道贪心题,而不是dp。
首先我们贪心的取有优惠券中价值最小的,并把这些东西都放在优先队列里,然后看[k + 1, n]中,有些东西使用了优惠券减的价钱是否比[1, k]中用了优惠券的物品更划算,是的话就更新。
1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #include<cstdlib> 7 #include<cctype> 8 #include<vector> 9 #include<stack> 10 #include<queue> 11 using namespace std; 12 #define enter puts("") 13 #define space putchar(' ') 14 #define Mem(a, x) memset(a, x, sizeof(a)) 15 #define rg register 16 typedef long long ll; 17 typedef double db; 18 const int INF = 0x3f3f3f3f; 19 const db eps = 1e-8; 20 const int maxn = 5e4 + 5; 21 inline ll read() 22 { 23 ll ans = 0; 24 char ch = getchar(), last = ' '; 25 while(!isdigit(ch)) {last = ch; ch = getchar();} 26 while(isdigit(ch)) {ans = ans * 10 + ch - '0'; ch = getchar();} 27 if(last == '-') ans = -ans; 28 return ans; 29 } 30 inline void write(ll x) 31 { 32 if(x < 0) x = -x, putchar('-'); 33 if(x >= 10) write(x / 10); 34 putchar(x % 10 + '0'); 35 } 36 37 int n, k; 38 ll m; 39 struct Node 40 { 41 ll c, p; 42 }t[maxn]; 43 44 bool cc(Node a, Node b) {return a.c < b.c;} 45 bool cp(Node a, Node b) {return a.p < b.p;} 46 47 priority_queue<ll, vector<ll>, greater<ll> > q; 48 49 int solve() 50 { 51 sort(t + 1, t + n + 1, cc); 52 ll sum = 0; 53 for(int i = 1; i <= k; ++i) 54 { 55 sum += t[i].c; 56 if(sum > m) return i - 1; 57 else if(i == n) return n; 58 q.push(t[i].p - t[i].c); 59 } 60 sort(t + k + 1, t + n + 1, cp); 61 int ans = k; 62 for(int i = k + 1; i <= n; ++i) 63 { 64 ll tp = q.empty() ? (ll)INF * (ll)INF : q.top(); 65 if(t[i].p - t[i].c > tp) 66 { 67 sum += tp + t[i].c; 68 q.pop(); q.push(t[i].p - t[i].c); 69 } 70 else sum += t[i].p; 71 if(sum > m) return ans; 72 ans++; 73 } 74 return ans; 75 } 76 77 int main() 78 { 79 n = read(); k = read(); m = read(); 80 for(int i = 1; i <= n; ++i) t[i].p = read(), t[i].c = read(); 81 write(solve()); 82 return 0; 83 }
View Code
转载于:https://www.cnblogs.com/mrclr/p/9847742.html
[USACO12FEB]牛券Cow Coupons相关推荐
- 专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box
文章目录 [JSOI2007]建筑抢修 [USACO12FEB]Cow Coupons G CF1251E2 Voting (Hard Version) CF436E Cardboard Box [J ...
- 洛谷P3048 [USACO12FEB]牛的IDCow IDs
P3048 [USACO12FEB]牛的IDCow IDs 12通过 67提交 题目提供者lin_toto 标签USACO2012 难度普及/提高- 时空限制1s / 128MB 提交 讨论 题解 ...
- 洛谷 P3014 [USACO11FEB]牛线Cow Line
P3014 [USACO11FEB]牛线Cow Line 题目背景 征求翻译.如果你能提供翻译或者题意简述,请直接发讨论,感谢你的贡献. 题目描述 The N (1 <= N <= 20) ...
- 洛谷 P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver
P3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题目描述 The cows are out exercising their hooves again! There are N ...
- P2901 [USACO08MAR]牛慢跑Cow Jogging
题目描述 传送门 Bessie has taken heed of the evils of sloth and has decided to get fit by jogging from the ...
- linux内核通用提权漏洞expliot 脏牛Dirty COW
0x01 漏洞简介 Linux内核在处理内存写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射.一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可 ...
- [USACO12FEB]牛的IDCow IDs
题目描述 Being a secret computer geek, Farmer John labels all of his cows with binary numbers. However, ...
- [USACO07NOV]牛继电器Cow Relays
题目描述 给出一张无向连通图,求S到E经过k条边的最短路. 输入输出样例 输入样例#1: 2 6 6 4 11 4 6 4 4 8 8 4 9 6 6 8 2 6 9 3 8 9 输出样例#1: 10 ...
- P2419 [USACO08JAN]牛大赛Cow Contest
Floyd不仅能求出最短路,还能利用或运算,与运算判断两点是否连通. 小范围数据,Floyd经常是很好的思路! 代码! #include<cstdio> #include<iostr ...
最新文章
- MinGW-w64 编译器下载,安装,以及环境变量配置
- 世界很大,先从这几个公众号看起!
- JVM——Java对象是如何创建、存储和访问的?
- myeclipse中将web项目部署到tomcat里面出错
- 因为一个YYYY-MM-dd的Bug,我被老板骂的狗血淋头!
- 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例7
- S7-200SMART案例分析——伺服选型(一)
- 大数据之Hadoop命令
- python爬虫做毕业设计_毕业设计之 --- 爬虫
- 云流化如何实现多人线上协作的?
- IDEA项目can not reconnect错误
- 以太坊编程涉及那些开发语言?
- 练习:编写程序判断当前系统状态
- 自然语言处理训练营NLP--笔记
- 计算机中的dump到底是什么意思?
- JZ45 扑克牌顺子
- 直接更改maven的settings设置jdk版本
- DNS解析出现错误故障解决
- OSChina 周五乱弹 ——和我斗!要赢好难!
- 2018年网上最靠谱的正规赚钱思路