P1982 小朋友的数字
题目描述
有 n 个小朋友排成一列。每个小朋友手上都有一个数字,这个数字可正可负。规定每个
小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋
友手上的数字之和的最大值。
作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:第一个小
朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),
小朋友分数加上其特征值的最大值。
请计算所有小朋友分数的最大值,输出时保持最大值的符号,将其绝对值对 p 取模后
输出。
输入输出格式
输入格式:
输入文件为 number.in。
第一行包含两个正整数 n、p,之间用一个空格隔开。
第二行包含 n 个数,每两个整数之间用一个空格隔开,表示每个小朋友手上的数字。
输出格式:
输出文件名为 number.out。
输出只有一行,包含一个整数,表示最大分数对 p 取模的结果。
输入输出样例
5 997 1 2 3 4 5
21
5 7 -1 -1 -1 -1 -1
-1
说明
Case 1:
小朋友的特征值分别为 1、3、6、10、15,分数分别为 1、2、5、11、21,最大值 21
对 997 的模是 21。
Case 2:
小朋友的特征值分别为-1、-1、-1、-1、-1,分数分别为-1、-2、-2、-2、-2,最大值
-1 对 7 的模为-1,输出-1。
对于 50%的数据,1 ≤ n ≤ 1,000,1 ≤ p ≤ 1,000所有数字的绝对值不超过 1000;
对于 100%的数据,1 ≤ n ≤ 1,000,000,1 ≤ p ≤ 10^9,其他数字的绝对值均不超过 10^9
我们用dptz表示特征的最大值。
用dpfs表示分数的最大值
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6 #include<algorithm> 7 #define lli long long int 8 using namespace std; 9 const lli MAXN=1000001; 10 void read(lli &n) 11 { 12 char c='+';lli x=0,flag=1; 13 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=-1;} 14 while(c>='0'&&c<='9'){x=x*10+c-48;c=getchar();} 15 n=x*flag; 16 } 17 lli n,mod; 18 lli dptz[MAXN]; 19 lli dpfs[MAXN]; 20 lli a[MAXN]; 21 lli now=0;// 当前最大字段和 22 lli ans=-1270000; 23 int main() 24 { 25 read(n);read(mod); 26 for(lli i=1;i<=n;i++) 27 read(a[i]); 28 dptz[1]=a[1]; 29 for(lli i=1;i<=n;i++) 30 { 31 now+=a[i]; 32 dptz[i]=now; 33 if(now<0) 34 now=0; 35 } 36 for(lli i=2;i<=n;i++) 37 dptz[i]=max(dptz[i],dptz[i-1]); 38 dpfs[1]=dptz[1]; 39 dpfs[2]=dpfs[1]+dptz[1]; 40 bool flag=0; 41 for(lli i=3;i<=n;i++) 42 { 43 dpfs[i]=dpfs[i-1]; 44 if(dptz[i-1]>0) 45 dpfs[i]+=dptz[i-1]; 46 if(dpfs[i]>dpfs[1])flag=1; 47 if(flag==1) 48 dpfs[i]=dpfs[i]%mod; 49 } 50 if(flag==1) 51 printf("%lld",dpfs[n]); 52 else 53 printf("%lld",dpfs[1]); 54 return 0; 55 }
转载于:https://www.cnblogs.com/zwfymqz/p/7125046.html
P1982 小朋友的数字相关推荐
- Python儿童数字消消乐游戏源代码,小朋友认数字游戏源代码
Python儿童数字消消乐源代码,小朋友认数字游戏源代码,通过消消乐游戏的方式来让小朋友来学习数字,让孩子在玩中学数字 完整代码下载地址:Python儿童数字消消乐游戏源代码 核心代码 import ...
- 2013NOIP普级组-- 小朋友的数字
题目链接: https://www.luogu.org/problemnew/show/P1982 很显然,这是一个最大字段和问题,但是要注意的是在算每个小朋友的分数的时候是会爆longlong的,我 ...
- 2017.5.5 小朋友的数字 思考记录
这题一定要把计算方式绕出来,, 就是将分数.特征值表示出来,然后熟悉流程 而且题目有问题,根本就不用取绝对值 并且max不能取模!!! 而且最大和连续子序列不是读到负数就断开.而是一直加和,,和变成负 ...
- NOIP普及组历届真题(1997~2018)
供大家刷题. 先上快捷的查看方式:NOIP普及组历届真题 第二页 来自洛谷--一个很好的刷题网站 剩下是具体题目和难度以及是第几年的题. P1002 过河卒 NOIp普及组 2002 普及- P100 ...
- 2017-2018年度刷题记录
2018暑假刷题1: T1.CF6A Triangle (#模拟 -1.4) T2.CF59A Word(#模拟 -1.5) T3.[洛谷]P2772 寻找平面上的极大点(#贪心 -1.4) T4.[ ...
- 【CCF】201712-2游戏
问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,--,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋 ...
- 在vc++里面进行图像处理的时候应该把图形放哪_图形找朋友小班教案
图形找朋友小班教案 作为一位优秀的人民教师,时常要开展教案准备工作,编写教案助于积累教学经验,不断提高教学质量.我们该怎么去写教案呢?下面是小编收集整理的图形找朋友小班教案,欢迎大家借鉴与参考,希望对 ...
- 历年CSP-J(NOIP普及组)分类汇总目录
内容持续更新中... ... [2022CSPJ普及组]T1.乘方 数学问题 [2022CSPJ普及组]T2.解密 数学问题 ...
- NOIP2013普及组 题解
T1 计数问题 题目描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1.2.3.4.5.6.7.8.9.10.11 中, ...
最新文章
- 转_前端开发技术概要
- python购物车程序2019_Python——购物车程序(列表的应用)
- SQLAlchemy 中的 Session、sessionmaker、scoped_session
- ffmpeg 0.8.7在windows环境mingw环境的编译
- 最近在我的python博客上花时间!
- 日志读取_实时数仓之Maxwell读取MySQL binlog日志
- 专访京东副总裁翁志:全方位解读 CNCC 2018「数据开创商业新生态」技术论坛 | CNCC 2018...
- flash声音播放-Sound
- JAVA垃圾回收机制
- java hostwrite_Java IOUtils.write方法代碼示例
- Java学习-Java系统介绍
- 封装解决WebView的那些坑
- Rabbitmq Plugin configuration unchanged. 问题完全解决方案
- 第四章: 元语言抽象
- operator开发流程
- Natural Cleaning Solutions
- Python cv2读取/存储图片中含中文路径失败的解决方法
- 美标线材AWG能通过电流到底多大?
- gitlab使用Mirroring repositories远程合并代码到其他仓库
- 矩阵论笔记(一) - 线性空间、线性子空间、矩阵的值域和核空间
热门文章
- makefile文件编写_九图记住Makefile
- mybatis plus 链式编程查询
- idea怎么将本地文件和远程git对比_IntelliJ IDEA将文件和文件夹与本地版本进行比较...
- stm32 交换机芯片_基于STM32的全链路语音交互 - stm32/stm8 - 电子工程世界
- 策略模式和工厂模式的区别_java设计模式之状态模式,策略模式孪生兄弟
- python 用户输入_Python 用户输入(input)
- 计算机在线采集数据注意,全站仪数据采集和传输中的常见问题解决方案
- matlab parfor不能用,matlab中parfor函数
- python新建文件夹口令_Python 口令保管箱
- 自己动手写了个 Web 框架,我膨胀了