标签:第十四 hat copy nes who case namespace data- tor
There are multiple cases.
The first line is an integer T(T≤10), which is the number of test cases.
For each test case, the first line is two number n(1≤n≤100) and C(1≤C≤108), the number of seeds and the capacity of the land.
Then next n lines, each line contains two integer ci(1≤ci≤106) and vi(1≤vi≤100), the space cost and the value of the i-th tree.
For each case, output one integer which means the max value of the trees that can be plant in the land.
22
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <vector> 5 #include <cmath> 6 #include <algorithm> 7 using namespace std; 8 #define N 105 9 #define mod 530600414 10 #define mem(a,b) memset(a,b,sizeof(a)) 11 #define ll long long 12 #define inf 0x3f3f3f3f 13 int t,n,C; 14 int c[N],v[N]; 15 int dp[10010]; 16 int main() 17 { 18 scanf("%d",&t); 19 while(t--) 20 { scanf("%d%d",&n,&C); 21 mem(dp,inf); 22 dp[0]=0; 23 //dp[i] 要达到价值i,需要的最小空间。 24 for(int i=0;i<n;i++) scanf("%d%d",&c[i],&v[i]); 25 for(int i=0;i<n;i++) 26 { 27 for(int j=10000;j-v[i]>=0;j--){ 28 dp[j]=min(dp[j],dp[j-v[i]]+c[i]); 29 } 30 /* 31 for(int j=0;j+v[i]<=10000;j++){ 32 dp[j+v[i]]=min(dp[j+v[i]],dp[j]+c[i]); 33 1 34 3 10 35 5 10 36 5 10 37 4 12 38 dp[24]=8,因此要逆序 39 } 40 */ 41 } 42 for(int i=10000;i>=0;i--){ 43 if(dp[i]<=C) { 44 printf("%d\n",i); 45 break; 46 } 47 } 48 } 49 return 0; 50 }
第十四届华中科技大学程序设计竞赛决赛同步赛 Beautiful Land
标签:第十四 hat copy nes who case namespace data- tor
原文地址:https://www.cnblogs.com/tingtin/p/9426808.html