社区讨论

10pts求调

P10484送礼物参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lz59ykt3
此快照首次捕获于
2024/07/28 16:04
2 年前
此快照最后确认于
2024/07/28 17:23
2 年前
查看原帖
rt,除#1外全WA
CPP
#include <bits/stdc++.h>
#define l long long
#define re register
#define rl re l
#define cin std::cin
#define printf std::printf
using namespace std;
l w,n,a[56],k1[114514],k2[114514],kk1,kk2,ans;
void mian()
{
	cin>>w>>n;
	for(rl i=1;i<=n;i++) cin>>a[i];
	for(rl i=1;i<=n/2;i++)
	{
		for(rl j=1;j+i<=n/2+1;j++)
		{
			l su=0;
			for(rl k=j;k<i+j;k++)
			{
				su+=a[k];
			}
			if(su<=w)
			{
				k1[++kk1]=su;
			}
		}
	}
	if(n%2==0)
	{
		for(rl i=1;i<=n/2;i++)
		{
			for(rl j=1;j+i<=n/2+1;j++)
			{
				l su=0;
				for(rl k=j;k<i+j;k++)
				{
					su+=a[k+n/2];
				}
				if(su<=w)
				{
					k2[++kk2]=su;
				}
			}
		}
	}
	else
	{
		for(rl i=1;i<=n/2;i++)
		{
			for(rl j=1;j+i<=n/2+1;j++)
			{
				for(rl oo=1;oo<=2;oo++)
				{
					l su;
					if(oo==1) su=0;
					else su=a[n];
					for(rl k=j;k<i+j;k++)
					{
						su+=a[k+n/2];
					}
					if(su<=w)
					{
						k2[++kk2]=su;
					}
				}
			}
		}
	}
	sort(k1+1,k1+kk1+1);
	sort(k2+1,k2+kk2+1);
	for(rl i=0;i<=kk1;i++)
	{
		l key=w-k1[i];
		l wz=upper_bound(k2+1,k2+kk2+1,key)-k2-1;
		ans=max(ans,k1[i]+k2[wz]);
	}
	printf("%lld",ans);
}
int main()
{
	mian();
	return 0;
}


回复

0 条回复,欢迎继续交流。

正在加载回复...