社区讨论

何意味

P15342「RedStone OI R1 B」浮木保卫战参与者 4已保存回复 3

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mm94xrwk
此快照首次捕获于
2026/03/02 20:08
上周
此快照最后确认于
2026/03/05 21:05
5 天前
查看原帖
为什么 O(NMK)O(NMK) 能AC?
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=2e3+10,K=5e3+10;
int n,m,k,a[N],b[N],l1[N],l2[N],r1[N],c[N],r2[N],dp[2][K][N],ans;
signed main()
{
	scanf("%d%d%d",&n,&m,&k);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=n;i++) scanf("%d%d",&l1[i],&r1[i]);
	for(int i=1;i<=m;i++) scanf("%d",&b[i]);
	for(int i=1;i<=m;i++) scanf("%d%d",&l2[i],&r2[i]);
	for(int i=1;i<=k;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(i<b[j]) c[j]=0;
			else c[j]=dp[1][i-b[j]][j];
		}
		for(int j=1;j<=n;j++)
		{
			for(int l=l1[j];l<=r1[j];l++) dp[0][i][j]=max(dp[0][i][j],c[l]);
			dp[0][i][j]+=a[j];
			ans=max(ans,dp[0][i][j]);
		}
		for(int j=1;j<=n;j++) c[j]=dp[0][i][j];
		for(int j=1;j<=m;j++)
		{
			for(int l=l2[j];l<=r2[j];l++)
			{
				dp[1][i][j]=max(dp[1][i][j],c[l]);
			}
		}
	}
	printf("%d",ans);
	return 0;
}
求卡

回复

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

正在加载回复...