SCUT校赛130:对抗女巫的魔法碎片(思维)
来源:互联网 发布:在线播放网站源码 编辑:程序博客网 时间:2024/04/30 00:26
题目描述
光明世界的一个国家发生动荡,女巫利用了邪恶的力量将国家的村庄都施下了咒语,好在国家还有英勇的士兵,他们正义的力量能够破解这些魔咒夺回村庄,并且得到魔法碎片,利用足够多的魔法碎片可以将女巫铲除。
现在已经被魔咒封印的村庄有m个,编号为1到m。英勇的士兵n个,编号从1到n。第i个士兵攻击力为ai,第j个村庄防御力为bj,魔法价值为ci。
现在这些士兵想夺回这些村庄,每个士兵可以最多占领一个村庄,一个村庄最多被一个士兵占领。当士兵的攻击力ai大于村庄的防御力bj的时候,该士兵就可以夺回这个村庄,并且士兵会获得魔法碎片ai−bj+cj 个。
现在想知道这些士兵夺回村庄,获得的魔法碎片之和最多是多少。
输入格式
输入第一行一个整数T,表示有T组数据。
接下来一行输入两个整数n和m。
接下来一行,输入n个数 ai,表示士兵的攻击力。
接下来m行,每行输入两个数bi,ci,表示村庄的防御力和该村庄的魔法价值。
1≤n,m≤100000
1≤ai,bi,ci≤100000
输出格式
一个整数,表示获得的魔法碎片的数量
样例数据
输入
23 34 4 42 31 35 33 34 4 62 34 35 3
输出
1110
备注
思路:要攻占掉尽量多的村庄,将N个人按攻击力从小到大排,将村庄按收益从大到小排,每个村庄二分出刚好能攻占他的人,同时记录被攻占的村庄数cnt,取前cnt大的人就是最优解了。# include <bits/stdc++.h># define ll long longusing namespace std;const int maxn = 1e5;int a[maxn+3], b[maxn+3], c[maxn+3], d[maxn+3];multiset<int>s;bool cmp(int x, int y){ return c[x]-b[x] > c[y]-b[y];}int main(){ int n, m, t; scanf("%d",&t); while(t--) { s.clear(); scanf("%d%d",&n,&m); for(int i=0; i<n; ++i) scanf("%d",&a[i]); for(int i=0; i<m; ++i) { scanf("%d%d",&b[i],&c[i]); d[i] = i; } sort(a, a+n, greater<int>()); sort(d, d+m, cmp); if(n > m) n = m; for(int i=0; i<n; ++i) s.insert(a[i]); int cnt = 0; ll ans = 0; for(int i=0; i<m; ++i) { int id = d[i]; multiset<int>::iterator it = s.upper_bound(b[id]); if(it == s.end()) continue; ++cnt; ans += c[id]-b[id]; s.erase(it); } for(int i=0; i<n&&i<cnt; ++i) ans += a[i]; printf("%lld\n",ans); } return 0;}
0 0
- SCUT校赛130:对抗女巫的魔法碎片(思维)
- 对抗女巫的魔法碎片(贪心,排序)
- 对抗女巫的魔法碎片(multiset排序 杭电排位赛-6)
- SCUT校赛131:小P玩游戏II(贪心 & 思维)
- SCUT校赛129:笔芯值(数学)
- 魔法宝石(思维啊……)
- 女巫
- 哈理工OJ 2248 开锁魔法1(简单的思维题目)
- qscoj 28 喵哈哈村的嘟嘟熊魔法(4)(思维+前缀和)@
- 基于WWW的可视化设计环境的思维碎片(一)
- 基于WWW的可视化设计环境的思维碎片(一)
- 基于WWW的可视化设计环境的思维碎片(一)
- Scut
- sybil attack (女巫攻击)
- 【GAN的魔法】生成对抗网络技术进展及论文笔记1
- 【GAN的魔法】生成对抗网络技术进展及论文笔记2
- 【GAN的魔法】生成对抗网络技术进展及论文笔记3
- 关于开放API将成为一种趋势的思维碎片
- Android中 主线程 Looper.loop() 死循环?
- Java封装_访问控制保留字
- Python中redis的使用
- 实例探索Java模式之路——简单工厂模式
- LeetCode(110)Balanced Binary Tree
- SCUT校赛130:对抗女巫的魔法碎片(思维)
- 在MYSQL建立外码的时候遇到的几个属性
- Android与JavaWeb服务器交互教程(2)-搭建简易的JavaWeb服务
- svn: E220001: Item is not readable
- 我的java学习路之初识ava
- Scala基础
- JavaScript基本概念(三)
- 变态跳台阶
- 对于Linux内核tty设备的一点理解