SCUT校赛130:对抗女巫的魔法碎片(思维)
2017-04-30 15:56
211 查看
题目描述
光明世界的一个国家发生动荡,女巫利用了邪恶的力量将国家的村庄都施下了咒语,好在国家还有英勇的士兵,他们正义的力量能够破解这些魔咒夺回村庄,并且得到魔法碎片,利用足够多的魔法碎片可以将女巫铲除。现在已经被魔咒封印的村庄有mm个,编号为11到mm。英勇的士兵nn个,编号从11到nn。第ii个士兵攻击力为a_iai,第jj个村庄防御力为b_jbj,魔法价值为c_ici。
现在这些士兵想夺回这些村庄,每个士兵可以最多占领一个村庄,一个村庄最多被一个士兵占领。当士兵的攻击力a_iai大于村庄的防御力b_jbj的时候,该士兵就可以夺回这个村庄,并且士兵会获得魔法碎片a_i
- b_j + c_jai−bj+cj 个。
现在想知道这些士兵夺回村庄,获得的魔法碎片之和最多是多少。
输入格式
输入第一行一个整数TT,表示有TT组数据。接下来一行输入两个整数nn和mm。
接下来一行,输入nn个数 a_iai,表示士兵的攻击力。
接下来mm行,每行输入两个数b_i,c_ibi,ci,表示村庄的防御力和该村庄的魔法价值。
1
\leq n, m \leq 1000001≤n,m≤100000
1
\leq
fb73
a_i, b_i, c_i \leq 1000001≤ai,bi,ci≤100000
输出格式
一个整数,表示获得的魔法碎片的数量
样例数据
输入2 3 3 4 4 4 2 3 1 3 5 3 3 3 4 4 6 2 3 4 3 5 3
输出
11 10
备注
思路:要攻占掉尽量多的村庄,将N个人按攻击力从小到大排,将村庄按收益从大到小排,每个村庄二分出刚好能攻占他的人,同时记录被攻占的村庄数cnt,取前cnt大的人就是最优解了。# include <bits/stdc++.h> # define ll long long using 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; }
相关文章推荐
- 对抗女巫的魔法碎片(贪心,排序)
- 对抗女巫的魔法碎片(multiset排序 杭电排位赛-6)
- SCUT校赛131:小P玩游戏II(贪心 & 思维)
- GDUT2017校赛:Problem H: tmk买礼物(思维)
- 2012中南大学校赛D题 - 很好的思维题...
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- 2017浙工大之江学院校赛 C 组合数学+思维
- 关于开放API将成为一种趋势的思维碎片
- qscoj 28 喵哈哈村的嘟嘟熊魔法(4)(思维+前缀和)@
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- SCUT校赛129:笔芯值(数学)
- 2012中南大学校赛F题 - 旋转卡壳的思维...
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- 之江学院2017ACM 校赛 Problem K: qwb与小数(思维 快速幂)
- 个人之最(思维碎片)
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- hdu 2015校赛1002 Dual horsetail (思维题 )
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)