poj 3045 Cow Acrobats (贪心!!不是二分,)
2018-01-25 23:12
405 查看
农夫的N只牛(1<=n<=50,000)决定练习特技表演。 特技表演如下:站在对方的头顶上,形成一个垂直的高度。 每头牛都有重量(1 <= W_i <= 10,000)和力量(1 <= S_i <= 1,000,000,000)。奶牛崩溃的风险等同于她身上所有的奶牛的重量(当然不包括她自己)减去她的力量。你的任务是确定奶牛的顺序,从而使得所有牛的风险中最大的一个尽量小。
Input第1行:一个整数N 第2 . .N+ 1行: 两个空格分隔的整数重量wi和力量si来描述奶牛i。
Output一个整数,在所有牛的风险中最大的一个
Sample Input
Sample Output
Hint
样例解释: 把重量为10的牛放在底部。她将携带另外两只牛,所以她的崩溃的风险是2 +3-3= 2。其他的奶牛有比她低的崩溃风险。
Input第1行:一个整数N 第2 . .N+ 1行: 两个空格分隔的整数重量wi和力量si来描述奶牛i。
Output一个整数,在所有牛的风险中最大的一个
Sample Input
3 10 3 2 5 3 3
Sample Output
2
Hint
样例解释: 把重量为10的牛放在底部。她将携带另外两只牛,所以她的崩溃的风险是2 +3-3= 2。其他的奶牛有比她低的崩溃风险。
#include <iostream> #include <algorithm> #include <cstdio> using namespace std; #define MAX 50000 struct Cow { int weight, strength; bool operator<(const Cow& other)const { //return other.weight<weight; return other.strength+other.weight<strength+weight; } }cow[MAX]; int main() { int N; while(cin>>N) { int total = 0; for (int i=0;i<N;++i) { scanf("%d%d",&cow[i].weight,&cow[i].strength); total+= cow[i].weight; } sort(cow,cow+N); int risk = 0x80808080; for(int i=0; i<N;++i) { total-=cow[i].weight; // 减去自己的重量 risk=max(risk,total-cow[i].strength); // 计算risk } cout <<risk<<endl; } return 0; }
相关文章推荐
- POJ 3045 Cow Acrobats(贪心 or 二分)
- POJ - 3045 Cow Acrobats (二分,或者贪心)
- POJ 3045 Cow Acrobats 贪心\二分
- poj 3045 Cow Acrobats (贪心)
- POJ3045 Cow Acrobats 贪心
- POJ 题目3045 Cow Acrobats(贪心)
- POJ 3045 Cow Acrobats (贪心)
- POJ 3045 Cow Acrobats 贪心
- poj 3045 Cow Acrobats 贪心
- POJ - 3045 Cow Acrobats (贪心)
- POJ 3045 - Cow Acrobats(贪心)
- [POJ 3045] Cow Acrobats (贪心)
- POJ --3045--Cow Acrobats(贪心模拟)
- POJ 3045 Cow Acrobats 贪心
- POJ --3045--Cow Acrobats(贪心模拟)
- poj 3045 Cow Acrobats(二分搜索?)
- poj 3045 Cow Acrobats 【二分】
- POJ - 3045 Cow Acrobats 贪心
- [POJ 2976] Dropping tests 二分答案+伪贪心规划
- nyoj586||poj2456 二分+贪心