【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3544

【题目大意】

  找一段区间使得Σai mod m的值最大。

【题解】

  首先计算前缀和顺序插入set,对于一个位置为右端点的数来说,
  如果前缀的前缀和中有比其大的数,选择比其大的最小的那个计算用来更新答案一定最优
  如果不存在,则选择set中最小的来计算更新答案。

【代码】

#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;
const int N=200010;
typedef long long LL;
const LL INF=0x3f3f3f3f3f3f3f3f;
int n;
LL m,a[N],s[N];
int main(){
while(~scanf("%d%lld",&n,&m)){
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
a[i]=(a[i]%m+m)%m;
s[i]=(s[i-1]+a[i])%m;
}LL t=0;
LL ans=-INF; set<LL> st;
st.insert(0);
for(int i=1;i<=n;i++){
if(st.upper_bound(s[i])!=st.end())t=*st.upper_bound(s[i]);
else t=*st.begin();
ans=max((s[i]-t+m)%m,ans);
st.insert(s[i]);
}printf("%lld\n",ans);
}return 0;
}

BZOJ 3544 [ONTAK2010]Creative Accounting(set)的更多相关文章

  1. BZOJ 3544: [ONTAK2010]Creative Accounting( BST )

    题意 : 一段序列 , 求一段子序列和取余 M 的最大值 其实是一道水题... 前缀和 , 然后就是找 ( sum( r ) - sum( l ) ) % M 的最大值 . 考虑一个 sum( r ) ...

  2. BZOJ 3544: [ONTAK2010]Creative Accounting [set]

    给定一个长度为N的数组a和M,求一个区间[l,r],使得$(\sum_{i=l}^{r}{a_i}) mod M$的值最大,求出这个值,注意这里的mod是数学上的mod 这道题真好,题面连LaTeX都 ...

  3. bzoj 3544 [ONTAK2010]Creative Accounting 贪心

    Description 给定一个长度为N的数组a和M,求一个区间[l,r],使得(\sum_{i=l}^{r}{a_i}) mod M的值最大,求出这个值,注意这里的mod是数学上的mod Input ...

  4. 【BZOJ3544】[ONTAK2010]Creative Accounting 前缀和+set

    [BZOJ3544][ONTAK2010]Creative Accounting Description 给定一个长度为N的数组a和M,求一个区间[l,r],使得(\sum_{i=l}^{r}{a_i ...

  5. 【BZOJ】3709: [PA2014]Bohater(贪心)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3709 很水的题...但是由于脑洞小..漏想了一种情况.. 首先显然能补血的先杀.. 然后杀完后从补血 ...

  6. 【BZOJ】1251: 序列终结者(splay)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1251 不行..为什么写个splay老是犯逗,这次又是null的mx没有赋值-maxlongint.. ...

  7. bzoj 3118: Orz the MST(单纯形)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3118 题意:给出一个图以及图中指定的n-1条边组成的生成树.每条边权值加1或者减去 ...

  8. BZOJ 2004 Bus 公交线路(矩阵)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2004 题意:小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依 ...

  9. BZOJ 1503 郁闷的出纳员(splay)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1503 题意:给出一个数列(初始为空),给出一个最小值Min,当数列中的数字小于Min时自动 ...

随机推荐

  1. Fermat2018游记

    day (-22) 2018年2月5日 Devin大佬给我发了一份Waterloo AIF的原件截图,发现里面居然直接问你的Fermat分数,那么这么重要的考试当然不能错过啊 若干天之后刚开学不久的一 ...

  2. JS的prototype和__proto__

    一.prototype和__proto__的概念 prototype是函数的一个属性(每个函数都有一 个prototype属性),这个属性是一个指针,指向一个对象.它 是显示修改对象的原型的属性. _ ...

  3. bzoj 1004 burnside 引理+DP

    对于burnside引理需要枚举染色,这道题属于burnside的一种简单求解的方法,就是polya,我们可以使每一种置换中的循环节中的元素的颜色都相同,那么这样的话就可以直接DP了,我们可以将m个置 ...

  4. Shell脚本 - nginx启动脚本

    OS:CentOS/Redhat 系列 并在 Centos 6.7 和 Centos 7.2 上测试正常 #!/bin/bash # # auth: daxin # time: 2018/07/10 ...

  5. WiderFace标注格式转PASCAL VOC2007标注格式

    #coding=utf-8 import os import cv2 from xml.dom.minidom import Document def create_xml(boxes_dict,ta ...

  6. 【java报错】Unknown character set index for field '224' received from server.

    在捣腾免费数据库时,使用的一个数据库提供商的服务器使用utf8mb4编码,而我的jar包还是八百年前的.然后...然后就报错了... (1) MYSQL 5.5 之前, UTF8 编码只支持1-3个字 ...

  7. springboot基础知识学习

    一.springboot中常用的注解: 原文链接:http://blog.csdn.net/lafengwnagzi/article/details/53034369 原文链接:http://www. ...

  8. java - 线程1打印1-10,当线程打印到5后,线程2打印“hello”,然后线程1继续打印

    public class T { private static int a =1;//1代表线程1 2线程2 public static void main(String[] args) { fina ...

  9. Spring + MyBatis 多数据源实现

    近期,在项目中需要做分库,但是因为某些原因,没有采用开源的分库插件,而是采用了同事之前弄得多数据源形式实现的分库.对于多数据源,本人在实际项目也中遇到的不多,之前的项目大多是服务化,以RPC的形式获得 ...

  10. Search for a Range——稍微升级版的二分查找

    Given a sorted array of integers, find the starting and ending position of a given target value. You ...