[NOIP2013 普及组] 小朋友的数字
思路
题中“特征值”是指前面最大的一段数字之和,即以该数结尾的序列的最大子段和,用
另外,此题数据会很大,
代码
#include<bits/stdc++.h>
#define MAXN 1000010
#define INF 2000000000
#define int __int128
using namespace std;
int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
}
inline void write(int x)
{
if(x<0){putchar('-');x=-x;}
if(x>9)write(x/10);
putchar(x%10+'0');
}
int n,p,num[MAXN],te[MAXN],fen[MAXN],sum[MAXN],now=-INF,ans=-INF;
int mid[MAXN];
signed main()
{
n=read();
p=read();
int nowm=-INF;
for(int i=1;i<=n;i++)
{
num[i]=read();
if(i==1)mid[i]=num[i];
else mid[i]=max(num[i],mid[i-1]+num[i]);
}
for(int i=1;i<=n;i++)
{
nowm=max(nowm,mid[i]);
te[i]=nowm;
}
for(int i=1;i<=n;i++)
{
if(i==1)fen[i]=te[i];
else fen[i]=now;
now=max(now,fen[i]+te[i]);
ans=max(ans,fen[i]);
}
if(ans>=0)write(ans%p);
else write(-1*((-1*ans)%p));
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】