博客第一篇……水题……
题意:给n个元素,每一个元素有两个值(ai,bi),可以按照任意顺序选择元素,包括选择元素的所有元素的ai=ai-bi。求已选择元素的最大的和。
题解:其实所求与选择的顺序无关,而是与最终选择的数量有关。枚举每一个数量的值,求max。(看了小兰的我会说……)
1 #include <iostream> 2 #include <cstdio> 3 #include <functional> 4 #include <algorithm> 5 6 using namespace std; 7 8 const int maxn=1010; 9 int a[maxn],b[maxn],solve[maxn]; 10 11 int main() 12 { 13 //freopen("/Users/apple/Desktop/stoneI/stoneI/in.txt", "r", stdin); 14 //freopen("/Users/apple/Desktop/stoneI/stoneI/out.txt", "w", stdout); 15 16 int n; 17 int res; 18 while ((scanf("%d",&n))!=EOF&&n!=0) { 19 res=0; 20 for (int i=0; i<n; i++) { 21 scanf("%d%d",&a[i],&b[i]); 22 } 23 for (int num=1; num<n; num++) { 24 for (int i=0; i<n; i++) { 25 solve[i]=a[i]-num*b[i]; 26 } 27 sort(solve, solve+n, greater<int>()); 28 int t=0; 29 for (int i=0; i<num; i++) { 30 t+=solve[i]; 31 } 32 res=max(t,res); 33 } 34 printf("%d ",res); 35 } 36 37 return 0; 38 }