XTU 1262 Fish(优先队列+贪心)
来源:互联网 发布:python简明教程pdf版 编辑:程序博客网 时间:2024/06/16 16:28
钓鱼
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: 2016551517Memory: 1416K Time: 1531MSLanguage: G++ Result: Accepted
转载请注明出处^ ^
阅读全文
0 0
- XTU 1262 Fish(优先队列+贪心)
- poj3614-贪心、优先队列
- EOJ1855 贪心+优先队列
- uvalive4254(贪心+优先队列)
- HOJ1062 贪心+优先队列
- poj3465 贪心+优先队列
- 贪心+优先队列
- 贪心+优先队列
- POJ2010 贪心优先队列
- 贪心+优先队列
- POJ3614Sunscreen(优先队列+贪心)
- 优先队列贪心
- HDU6047优先队列+贪心
- POJ2431 优先队列+贪心
- 贪心加优先队列
- poj1042(贪心+优先队列)
- uva10954Add All(贪心+优先队列)
- hdu2850Load Balancing 贪心+优先队列
- java的动态代理机制详解
- 数据结构|创建学生成绩的单链表(实验2.2)
- JavaScript基础学习(一)
- BZOJ2648&&2716 不讲道理的KD-tree
- 【秋招总结】360、滴滴、华为、阿里、携程、58、京东、美团等后台开发面经
- XTU 1262 Fish(优先队列+贪心)
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- 插入排序(Insert-Sort)
- 10月10日 c语言 输入星星图形 1
- Linux中的用户管理
- java之用反射实现方法(已知实体对象和实体参数)
- Tensorflow实现经典损失函数
- spring和springmvc的关系
- [HDU 1502][动态规划]Regular Words