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 }

猜你喜欢

转载自www.cnblogs.com/fzl194/p/9021692.html