贪心75哪错了...
查看原帖
贪心75哪错了...
205782
R浩轩泽Anmicius楼主2020/7/29 16:12

怎么也举不出反例啊...

而且最后一个数据点我输出的是1,expected 9 怎么想都不对啊

#include<iostream>
#include<cstring>
#include<algorithm>
using std::cin;
using std::cout;
const int N=18;
#define reint register int
int n,w,val[N],k,ans;
bool vis[N];
inline bool cmp(int a,int b)
{
	return a>b;
}
int main()
{
	std::ios::sync_with_stdio(false);
	cin>>n>>w;
	memset(vis,false,sizeof(vis));
	for(reint i=1;i<=n;++i)
	cin>>val[i];
	std::sort(val+1,val+1+n,cmp);
	for(reint i=1;i<=n;++i)
	{
		if(vis[i])continue;
		++ans;
		int nows=val[i];
		for(reint j=i+1;j<=n;++j)
		{
			if(vis[j]||nows+val[j]>w)continue;
			nows+=val[j];
			vis[j]=true;
		}
	}
	cout<<ans<<'\n';
	return 0;
}
2020/7/29 16:12
加载中...