POJ-3045 Cow Acrobats---贪心
题目链接:
https://cn.vjudge.net/problem/POJ-3045
题目大意:
一群牛在叠罗汉;
每头牛都有一个重量W和力量值X;
在叠的时候每头牛都有一个风险值R;
要你求总的风险值中最大的那个风险值R’;
解题思路:
坑点:答案可能为负数!!!风险值为之前的牛重量 - 下一头牛力量
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 using namespace std; 7 typedef long long ll; 8 const int maxn = 1e5 + 10; 9 struct node 10 { 11 int x, y, s; 12 bool operator <(const node& a)const 13 { 14 return s < a.s; 15 } 16 }a[maxn]; 17 int sum[maxn]; 18 int main() 19 { 20 int n; 21 while(cin >> n){ 22 memset(sum, 0, sizeof(sum)); 23 for(int i = 0; i < n; i++) 24 { 25 scanf("%d%d", &a[i].x, &a[i].y); 26 a[i].s = a[i].x + a[i].y; 27 } 28 sort(a, a + n); 29 sum[0] = a[0].x; 30 for(int i = 1; i < n; i++) 31 sum[i] = sum[i - 1] + a[i].x; 32 int ans = 0 - a[0].y; 33 for(int i = 1; i < n; i++) 34 { 35 ans = max(ans, sum[i - 1] - a[i].y); 36 } 37 cout<<ans<<endl;} 38 return 0; 39 }
越努力,越幸运