为什么WA
查看原帖
为什么WA
397809
yangyi2120楼主2021/3/4 20:24

示例是对的,然而提交就错了

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int T,ans[100],cnt[100],k;
void solve()
{
	int dp[51]={0};
	vector<int>v;
	v.push_back(-1);//确保下标从1开始 
	int n,t,i,j,temp;
	cin>>n>>t;
	for(i=1;i<=n;i++)
	{
		cin>>temp;
		v.push_back(temp);
	}
	sort(v.begin(),v.end());
	int sum=0,N=0;
	for(i=1;i<=n;i++)
	{
		if(sum+v[i]>t)
			break;
		sum+=v[i];
		N++;
	}
	cnt[k]=N;//最多的曲数
	for(i=1;i<=n;i++)
	{
		for(j=N;j>=1;j--)
		{
			if(dp[j-1]+v[i]>dp[j]&&dp[j-1]+v[i]<t)
				dp[j]=dp[j-1]+v[i];
		}
	}
	ans[k]=dp[N]+678;
}
int main()
{
	cin>>T;
	for(k=0;k<T;k++)
	{
		solve();
	}
	for(k=0;k<T;k++)
	{
		if(k>0)
			printf("\n");
		printf("Case %d: %d %d",k+1,cnt[k]+1,ans[k]);
	}
	return 0;
}
2021/3/4 20:24
加载中...