题目描述

有 n 个小朋友排成一列。每个小朋友手上都有一个数字,这个数字可正可负。规定每个

小朋友的特征值等于排在他前面(包括他本人)的小朋友中连续若干个(最少有一个)小朋

友手上的数字之和的最大值。

作为这些小朋友的老师,你需要给每个小朋友一个分数,分数是这样规定的:第一个小

朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),

小朋友分数加上其特征值的最大值。

请计算所有小朋友分数的最大值,输出时保持最大值的符号,将其绝对值对 p 取模后

输出。

输入输出格式

输入格式:

输入文件为 number.in。

第一行包含两个正整数 n、p,之间用一个空格隔开。

第二行包含 n 个数,每两个整数之间用一个空格隔开,表示每个小朋友手上的数字。

输出格式:

输出文件名为 number.out。

输出只有一行,包含一个整数,表示最大分数对 p 取模的结果。

输入输出样例

输入样例#1:

5 997
1 2 3 4 5

输出样例#1:

21

输入样例#2:

5 7
-1 -1 -1 -1 -1

输出样例#2:

-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 小朋友的数字相关推荐

  1. Python儿童数字消消乐游戏源代码,小朋友认数字游戏源代码

    Python儿童数字消消乐源代码,小朋友认数字游戏源代码,通过消消乐游戏的方式来让小朋友来学习数字,让孩子在玩中学数字 完整代码下载地址:Python儿童数字消消乐游戏源代码 核心代码 import ...

  2. 2013NOIP普级组-- 小朋友的数字

    题目链接: https://www.luogu.org/problemnew/show/P1982 很显然,这是一个最大字段和问题,但是要注意的是在算每个小朋友的分数的时候是会爆longlong的,我 ...

  3. 2017.5.5 小朋友的数字 思考记录

    这题一定要把计算方式绕出来,, 就是将分数.特征值表示出来,然后熟悉流程 而且题目有问题,根本就不用取绝对值 并且max不能取模!!! 而且最大和连续子序列不是读到负数就断开.而是一直加和,,和变成负 ...

  4. NOIP普及组历届真题(1997~2018)

    供大家刷题. 先上快捷的查看方式:NOIP普及组历届真题 第二页 来自洛谷--一个很好的刷题网站 剩下是具体题目和难度以及是第几年的题. P1002 过河卒 NOIp普及组 2002 普及- P100 ...

  5. 2017-2018年度刷题记录

    2018暑假刷题1: T1.CF6A Triangle (#模拟 -1.4) T2.CF59A Word(#模拟 -1.5) T3.[洛谷]P2772 寻找平面上的极大点(#贪心 -1.4) T4.[ ...

  6. 【CCF】201712-2游戏

    问题描述 有n个小朋友围成一圈玩游戏,小朋友从1至n编号,2号小朋友坐在1号小朋友的顺时针方向,3号小朋友坐在2号小朋友的顺时针方向,--,1号小朋友坐在n号小朋友的顺时针方向. 游戏开始,从1号小朋 ...

  7. 在vc++里面进行图像处理的时候应该把图形放哪_图形找朋友小班教案

    图形找朋友小班教案 作为一位优秀的人民教师,时常要开展教案准备工作,编写教案助于积累教学经验,不断提高教学质量.我们该怎么去写教案呢?下面是小编收集整理的图形找朋友小班教案,欢迎大家借鉴与参考,希望对 ...

  8. 历年CSP-J(NOIP普及组)分类汇总目录

    内容持续更新中... ... [2022CSPJ普及组]T1.乘方                    数学问题 [2022CSPJ普及组]T2.解密                    数学问题 ...

  9. NOIP2013普及组 题解

    T1  计数问题 题目描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1 到 11 中,即在 1.2.3.4.5.6.7.8.9.10.11 中, ...

最新文章

  1. 转_前端开发技术概要
  2. python购物车程序2019_Python——购物车程序(列表的应用)
  3. SQLAlchemy 中的 Session、sessionmaker、scoped_session
  4. ffmpeg 0.8.7在windows环境mingw环境的编译
  5. 最近在我的python博客上花时间!
  6. 日志读取_实时数仓之Maxwell读取MySQL binlog日志
  7. 专访京东副总裁翁志:全方位解读 CNCC 2018「数据开创商业新生态」技术论坛 | CNCC 2018...
  8. flash声音播放-Sound
  9. JAVA垃圾回收机制
  10. java hostwrite_Java IOUtils.write方法代碼示例
  11. Java学习-Java系统介绍
  12. 封装解决WebView的那些坑
  13. Rabbitmq Plugin configuration unchanged. 问题完全解决方案
  14. 第四章: 元语言抽象
  15. operator开发流程
  16. Natural Cleaning Solutions
  17. Python cv2读取/存储图片中含中文路径失败的解决方法
  18. 美标线材AWG能通过电流到底多大?
  19. gitlab使用Mirroring repositories远程合并代码到其他仓库
  20. 矩阵论笔记(一) - 线性空间、线性子空间、矩阵的值域和核空间

热门文章

  1. makefile文件编写_九图记住Makefile
  2. mybatis plus 链式编程查询
  3. idea怎么将本地文件和远程git对比_IntelliJ IDEA将文件和文件夹与本地版本进行比较...
  4. stm32 交换机芯片_基于STM32的全链路语音交互 - stm32/stm8 - 电子工程世界
  5. 策略模式和工厂模式的区别_java设计模式之状态模式,策略模式孪生兄弟
  6. python 用户输入_Python 用户输入(input)
  7. 计算机在线采集数据注意,全站仪数据采集和传输中的常见问题解决方案
  8. matlab parfor不能用,matlab中parfor函数
  9. python新建文件夹口令_Python 口令保管箱
  10. 自己动手写了个 Web 框架,我膨胀了