debug了好一会,突然发现,输出错了,emmm.........
明天再写debug历程
贴身ac代码先
1 #include<bits/stdc++.h> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define memF(a,b,n) for(int i=0;i <= n;a[i++]=b); 6 const int maxn=1e5+50; 7 8 int n,T; 9 int t[60]; 10 int dp[maxn]; 11 12 void Solve() 13 { 14 memF(dp,-1,T); 15 dp[0]=0; 16 for(int i=1;i <= n;++i) 17 { 18 for(int j=T-1;j >= t[i];--j) 19 { 20 if(dp[j-t[i]] != -1) 21 dp[j]=max(dp[j],dp[j-t[i]]+1); 22 } 23 } 24 int ans=*max_element(dp,dp+T-1); 25 for(int i=T-1;i >= 0;--i) 26 if(dp[i] == ans) 27 { 28 printf("%d %d\n",dp[i]+1,i+678); 29 return ; 30 } 31 } 32 int main() 33 { 34 int test; 35 scanf("%d",&test); 36 for(int kase=1;kase <= test;++kase) 37 { 38 scanf("%d%d",&n,&T); 39 for(int i=1;i <= n;++i) 40 scanf("%d",t+i); 41 42 printf("Case %d: ",kase); 43 Solve(); 44 } 45 return 0; 46 }
原文地址:https://www.cnblogs.com/violet-acmer/p/10961558.html
时间: 2024-12-17 10:43:33