请求撤下部分题解
查看原帖
请求撤下部分题解
668156
封禁用户楼主2024/7/15 15:14

比如:Twilight_ 创建时间:2017-09-02 15:47:48
这篇题解,上面说的AC代码其实会MLE#2、#9、#10三个测试点。

//这是该题解提供者的“AC”代码
#include<bits/stdc++.h>
using namespace std;
int n,sum[3001],c[3001],dp[3001][3000]; //数组要开大一点,不然会WA;
int main()
{
    cin>>n;
    for(int i=n;i>=1;i--)cin>>c[i];//为了处理方便,我们直接逆序输入(编号自底向上)
    for(int i=1;i<=n;i++)sum[i]+=sum[i-1]+c[i];//获取前缀和
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            dp[i][j]=dp[i][j-1];//重合部分
            int k=2*j-1;
            if(k<=i)dp[i][j]=max(dp[i][j],sum[i]-dp[i-k][k]);//新增状态
            k+=1;
            if(k<=i)dp[i][j]=max(dp[i][j],sum[i]-dp[i-k][k]);//新增状态
        }
    cout<<dp[n][1]<<endl;
    return 0;
}

实际上只能得70分。错在哪里?就是那句数组要开大一点,然后ta开了3001……人家题目当中说了小于等于2000,所以说我把范围改成2001就AC了。这种细节性的错误都发现不了而是误导别人,自信地在批注里面写开大点,因此这是该撤下的。

//这是我的代码部分,你可以看看数据范围
#include<bits/stdc++.h>
using namespace std;
const int p=2001;
int sum[p],a[p],dp[p][p];
int main(){
	int n;
	cin>>n;
	for(int i=n;i>=1;i--)
		cin>>a[i];
	for(int i=1;i<=n;i++)
		sum[i]+=sum[i-1]+a[i];
	//后面内容省略
	return 0;
}

因此请求撤下题解,还有一些以“显然,易得、某位大佬曾经说过”等为托省去思路的可以考虑一并撤下

2024/7/15 15:14
加载中...