CF1582E
  • 板块题目总版
  • 楼主hefeibazhong
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/20 14:48
  • 上次更新2024/8/20 16:31:38
查看原帖
CF1582E
1183375
hefeibazhong楼主2024/8/20 14:48

第18个测试点错误求调试,代码如下:

#include<iostream>
#include<cmath>
#include<cstring>

typedef long long ll;
using namespace std;
int T,n;
ll f[100005][330],a[100005],qzh[100005];

int main()
{
//	freopen("新建文本文档 (2).txt","w",stdout);
	scanf("%d",&T);
	while(T--)
	{
//		memset(f,0,sizeof(f));
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			scanf("%lld",&a[i]);
			qzh[i]=qzh[i-1]+a[i];
			f[i][0]=0x3f3f3f3f3f3f3f3f;
//			f[i][1]=a[i];//
		}
		f[n][1]=a[n];
		for(int i=n-1;i>=1;i--)
		{
			f[i][1]=max(f[i+1][1],a[i]);
		}
		for(int i=n;i>=1;i--)
		{
			for(int j=2;i+j*(j+1)/2-1<=n;j++)
			{
				f[i][j]=0;
				if(i+1<=n&&i+j*(j+1)/2<=n)f[i][j]=f[i+1][j];
				if(i+j<=n&&qzh[i+j-1]-qzh[i-1]<f[i+j][j-1])f[i][j]=max(f[i][j],qzh[i+j-1]-qzh[i-1]);
			}
		}
//		for(int i=1;i<=n;i++)
//		{
//			for(int j=1;j<=3;j++)
//			{
//				printf("f[%d][%d]=%lld  ",i,j,f[i][j]);
//			}
//			cout<<'\n';
//		}
		int ans=0;
		for(int i=1;i*(i+1)/2<=n;i++)
		{
			if(f[1][i]>0){
				ans=i;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}

提交记录

2024/8/20 14:48
加载中...