社区讨论
为什么WA两个点????
P1982[NOIP 2013 普及组] 小朋友的数字参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mi6ujhlz
- 此快照首次捕获于
- 2025/11/20 11:03 4 个月前
- 此快照最后确认于
- 2025/11/20 11:03 4 个月前
把n方改成了O(n),结果WA两个点,大佬们帮忙看一下
CPP#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
LL sum[1000100],n,p,a[1000100],te[1000100],sc[1000100],maxn=-99999999999,ans;
inline LL read(){
LL x=0,k=1;
char ch=getchar();
while(ch<'0' || ch>'9'){
if(ch=='-') k=-1;
ch=getchar();
}
while(ch>='0' && ch<='9'){
x=x*10+ch-'0';
ch=getchar();
}
return x*k;
}
int main(){
int i,j,k;
n=read(),p=read();
for(i=1;i<=n;i++){
k=read();
if(sum[i-1]>0) sum[i]=sum[i-1]+k;
else sum[i]=k;
maxn=max(maxn,sum[i]);
te[i]=maxn;
}
sc[1]=te[1];
ans=sc[1];
maxn=-9999999999;
for(i=2;i<=n;i++){
maxn=max(maxn,sc[i-1]+te[i-1]);
sc[i]=maxn;
if(ans<maxn) ans=maxn;
}
if(ans<0) printf("-%lld",abs(ans)%p);
else printf("%lld",ans%p);
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...