XTU 1262 Fish(优先队列+贪心)
2017-10-10 21:59
190 查看
钓鱼
http://202.197.224.59/exam/index.php/problem/read/id/1262
题目描述
小明很喜欢钓鱼,现在有n个池塘可以钓鱼,第i个池塘首次内能钓到ai条鱼。 第i个池塘如果被钓过k次,那么每次下一次能钓到的鱼的数目为max{0,ai−k×bi}。 现在小明能钓m次鱼,请问他最多能钓到多少条鱼?
输入
第一行是一个整数T(1≤T≤100),表示样例的个数。
每个样例的第一行是n(1≤n≤1000),m(1≤m≤100000);
以后的n行,每行是ai(1≤ai≤10000),bi(0≤bi≤10000)。
输出
每行输出一个样例的结果。
样例输入
2
3 5
3 1
4 2
1 0
2 5
2 1
1 1
样例输出
12
4
样例解释
第一个样例,在第1个池塘钓3次,第2个池塘钓2次,3+2+1+4+2 = 12;
第二个样例,在第1个池塘钓2次,第2个池塘钓1次,2+1+1 = 4。
思路:
维护一个优先队列,使价值最高的鱼优先级最高,钓出这种鱼后,从队首弹出这种鱼,改变价值后再压入,这样便能保证每次钓到的鱼都是价值最高的。
转载请注明出处^ ^
http://202.197.224.59/exam/index.php/problem/read/id/1262
题目描述
小明很喜欢钓鱼,现在有n个池塘可以钓鱼,第i个池塘首次内能钓到ai条鱼。 第i个池塘如果被钓过k次,那么每次下一次能钓到的鱼的数目为max{0,ai−k×bi}。 现在小明能钓m次鱼,请问他最多能钓到多少条鱼?
输入
第一行是一个整数T(1≤T≤100),表示样例的个数。
每个样例的第一行是n(1≤n≤1000),m(1≤m≤100000);
以后的n行,每行是ai(1≤ai≤10000),bi(0≤bi≤10000)。
输出
每行输出一个样例的结果。
样例输入
2
3 5
3 1
4 2
1 0
2 5
2 1
1 1
样例输出
12
4
样例解释
第一个样例,在第1个池塘钓3次,第2个池塘钓2次,3+2+1+4+2 = 12;
第二个样例,在第1个池塘钓2次,第2个池塘钓1次,2+1+1 = 4。
思路:
维护一个优先队列,使价值最高的鱼优先级最高,钓出这种鱼后,从队首弹出这种鱼,改变价值后再压入,这样便能保证每次钓到的鱼都是价值最高的。
#include <bits/stdc++.h> using namespace std; struct node { int a,b; friend bool operator <(node A,node B)//价值高的优先级高 { return A.a<B.a; } }; priority_queue<node>pq; int main() { int t,n,m,a,b; scanf("%d",&t); while(t--) { while(!pq.empty()) pq.pop(); scanf("%d%d",&n,&m); node now; while(n--) { scanf("%d%d",&a,&b); now.a=a; now.b=b; pq.push(now); } int ans=0; while(!pq.empty()) { now=pq.top(); pq.pop(); if(now.b==0) { ans+=now.a*m; m=0; break; } else { ans+=now.a; now.a = max(0,now.a-now.b); m--; pq.push(now); } if(!m)break; } printf("%d\n",ans); } return 0; } Problem: 1262 User: 2016551517 Memory: 1416K Time: 1531MS Language: G++ Result: Accepted
转载请注明出处^ ^
相关文章推荐
- UVa 1153 Keep the Customer Satisfied (贪心+优先队列)
- 51nod 1163 最高的奖励 (贪心+优先队列/并查集)&& 1191 消灭兔子(贪心+优先队列维护) && 1475 建设国家 (思维枚举+优先队列)
- POJ 2431 - Expedition (贪心 优先队列)
- POJ 2431 Expedition (贪心、优先队列)
- HDU - 6047 多校2 1003 Maximum Sequence (贪心+优先队列)
- bjfu1262 优先队列
- hdu 5835 Danganronpa(贪心,优先队列)
- Hdu 2850 Load Balancing (贪心 优先队列)
- POJ -3190 Stall Reservations (贪心+优先队列)
- 贪心+线段树(优先队列)——51nod1191 消灭兔子
- 蓝桥杯 算法提高 排队打水问题(贪心排序+优先队列)
- BZOJ 1150 二叉堆(优先队列) + 贪心
- Codeforces 721D Maxim and Array【贪心+优先队列+分类讨论】
- poj Supermarket(贪心)(并查集)(优先队列)
- poj 2431 Expedition (贪心+优先队列)
- ZJU 3433 Gu Jian Qi Tan 贪心 优先队列
- POJ 1328 3190 贪心 优先队列
- poj 3190 贪心(区间)+优先队列维护
- D. Fedor and coupons(贪心+优先队列)
- 51 nod 最高奖励(贪心+优先队列)