【洛谷P1982】小朋友的数字
2024-08-30 09:13:58
小朋友的数字
题目翻译:
每个小朋友有一个数字,构成一个数字序列a1,a2…an
我们定义“特征值”fi为a1~ai中的最大连续子段和
再定义“分数”si为1~i-1中最大的(sj+fj),特殊的,s1=f1,
要求输出最大的si
DP:
于是我们可以dp求出每个最大连续子段和作为特征值
然后按题意模拟一遍求出每个分数
状态定义:
dp[i]表示以i为结尾的最大子段和
方程
dp[i]=max(dp[i-1],0)+x; //连着/不连着 前面
f[i]=max(f[i-1],dp[i]);
优化:
空间:
我们发现f[i]、dp[i]都是由f[i-1]、dp[i-1]转移来的,我们可以考虑将数组降一维 于是空间复杂度就是常数级别的了
时间:
1.1e6的数据快读是有一定作用的
2.边读入边处理,减少常数
3.由于要用long long,取模运算很慢,可以考虑减少取模次数,当ans>1e17时再取模
#include<cstdio>
using namespace std;
#define int long long
#define N 1000010
#define INF 0x3f3f3f3f
const int ch_top=4e7+;
char ch[ch_top],*now_r=ch-,*now_w=ch-;
inline int read(){ //快读
int f=;
while(*++now_r<'') if(*now_r=='-') f=-;
register int x=*now_r-'';
while(*++now_r>='')x=(x<<)+(x<<)+*now_r-'';
return x*f;
}
inline void write(int x){ //并没用什么卵用的快写
if(x<){*++now_w='-',x=-x;}
static char st[];static int top;
while(st[++top]=''+x%,x/=);
while(*++now_w=st[top],--top);
*++now_w='\n';
}
int n,p,dp,ans1,ans;
bool flag;
#undef int
int main()
#define int long long
{
fread(ch,,ch_top,stdin);//快读
n=read(); p=read();
int x,f;
dp=f=read();
ans1=f;ans=f*; //特殊处理第一个数
/*ans1为第一个小朋友的分数,
ans为其他小朋友的分数的最大值*/
for(int i=;i<n;i++){
x=read();
dp=(dp>?dp:)+x;
if(dp>f) f=dp;
if(f>) ans=ans+f;
if(ans>1e17) { ans%=p,flag=; }
/*当ans为负时,一定不会是两个以上的
负数之和,不会爆ll,若取过模,ans一定大于
ans1,用一个flag记录*/
}
if(flag)write(ans%p);
else{
if(ans1>ans) ans=ans1;
write(ans%p);
}
fwrite(ch,,now_w-ch,stdout); //快写
return ;
}
开O2 32ms ,大概是非打表提交的最优解
最新文章
- [DataBase] MongoDB (7) MongoDB 索引
- iOS_UIImage_jpg<;-->;png转换
- scrollTo 和 scrollBy
- BZOJ4118 : [Wf2015]Window Manager
- 兼容的firstChild,lastChild,nextSibling,previousSibling写法
- c# base关键的理解
- Linux(9.14-9.20)学习笔记
- appium +python api 新手
- A Tour of Go For continued
- 使用 asp.net mv4开发企业级办公OA
- perl 当前包会覆盖父类的同名方法
- SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理
- IOS应用的国际化
- Mysql密码忘记后如何重设密码
- Oracle基础知识点——Oracle服务端和客户端
- 使用awk和sed获取文件奇偶数行的方法总结
- kafka-producer kerberos 原理和配置
- 20175227张雪莹 2018-2019-2 《Java程序设计》第三周学习总结
- ON 子句和 WHERE 子句的不同
- 新建react项目
热门文章
- requset获取post提交的请求参数
- java web 之Session
- CSS的BFC和hasLayout及其应用场景
- 基于Vue的WebApp项目开发(二)
- silverlight generic.xaml 包含中文 编译错误的问题
- git internal for computer scientists
- SQL Server ->;>; SQL Server 2016新特性之 -- AlwaysOn的增强改进
- SQL Server ->;>; FIRST_VALUE和LAST_VALUE函数
- MySQL5.7二进制安装
- js 获取URL中参数