简单的区间(interval)

题目描述:

样例输入:

样例1:
4 3
1 2 3 4 样例2:
4 2
4 4 7 4

样例输出:

样例1:
3 样例2:
6

提示:

时间限制:1000ms
空间限制:512MByte

之前写了一个的代码

#include<bits/stdc++.h>
#define maxn 1001000
#define ll long long
using namespace std; ll n,k,a[maxn],s[maxn],cun[maxn],ans;
vector <ll> up[maxn],down[maxn]; void update(ll l,ll r,ll val)
{
if(!r) return;
up[max((ll) , l)].push_back(val);
down[max((ll) , r)].push_back(val);
} void find(ll l,ll r)
{
if(l >= r) return;
ll ma = ,pos;
for(ll i=l;i<=r;i++)
{
if(a[i] > ma)
{
ma = a[i];
pos = i;
}
} find(l,pos - );
find(pos + ,r);
if(pos - l <= r - pos)//求右边
{
update(pos + ,r,(s[pos - ] + ma) % k);
for(ll i=l;i<pos;i++)
{
ll val = (s[i - ] + ma) % k;
update(pos,r,val);
}
}
else//求左边
{
update(l-,pos - ,(s[pos] - ma % k + k) % k);
for(ll i=pos + ;i<=r;i++)
{
ll val = (s[i] - ma % k + k) % k;
update(l-,pos-,val);
}
}
} void query()
{
for(ll i=;i<=n;i++)
{
for(ll j=;j<up[i].size();j++)
cun[up[i][j]]++;
ans += cun[s[i]];
for(ll j=;j<down[i].size();j++)
cun[down[i][j]]--;
}
} int main(){
scanf("%lld%lld",&n,&k);
for(ll i=;i<=n;i++)
{
scanf("%lld",&a[i]);
s[i] = (s[i - ] + a[i]) % k;
}
find(,n);
query();
printf("%lld",ans);
}

结果惨遭卡常!!!

TAT____

然后卡卡常数就过了。。。

//#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define maxn 1001000
#define ll long long
#define R register
using namespace std; ll n,k,a[maxn],s[maxn],cun[maxn],ans;
vector <ll> up[maxn],down[maxn]; inline void update(ll l,ll r,ll val)
{
if(!r) return;
up[max((ll) , l)].push_back(val);
down[r].push_back(val);
} inline void find(ll l,ll r)
{
if(l >= r) return;
ll ma = ,pos;
for(R ll i=l;i<=r;++i)
{
if(a[i] > ma)
{
ma = a[i];
pos = i;
}
}
find(l,pos - );
find(pos + ,r);
if(pos - l <= r - pos)//求右边
{
update(pos + ,r,(s[pos - ] + ma) % k);
for(R ll i=l;i<pos;++i)
{
ll val = (s[i - ] + ma) % k;
update(pos,r,val);
}
}
else//求左边
{
update(l-,pos - ,(s[pos] - ma % k + k) % k);//就是这里,TM%没有打!!! TM-1没有打!!!
for(R ll i=pos + ;i<=r;++i)
{
ll val = (s[i] - ma % k + k) % k;//同上
update(l-,pos-,val);//同上
}
}
} inline void query()
{
for(R ll i=;i<=n;++i)
{
for(R ll j=;j<up[i].size();++j)
++cun[up[i][j]];
ans += cun[s[i]];
for(R ll j=;j<down[i].size();++j)
--cun[down[i][j]];
}
} int main(){
scanf("%lld%lld",&n,&k);
for(R ll i=;i<=n;++i)
{
scanf("%lld",&a[i]);
s[i] = (s[i - ] + a[i]) % k;
}
find(,n);
query();
printf("%lld",ans);
}

还是跑过了。。。但是难受啊,一个早上啊!!!QAQ!!!

又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!的更多相关文章

  1. 又联考了一场,感觉自己好菜啊,T2推出了公式但是不会逆元QAQ,难受啊!!!不过都确实是一道逆元的好题撒!

    简单的玄学(random) 题目描述: 样例输入: 样例1: 3 2 样例2: 1 3 样例3: 4 3 样例输出: 样例1: 1 8 样例2: 1 1 样例3: 23 128 提示: 时间限制:10 ...

  2. [jzoj]3875.【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)

    Link https://jzoj.net/senior/#main/show/3875 Problem 在遥远的S星系中一共有N个星球,编号为1…N.其中的一些星球决定组成联盟,以方便相互间的交流. ...

  3. 【JZOJ3875】【NOIP2014八校联考第4场第2试10.20】星球联盟(alliance)

    fg 在遥远的S星系中一共有N个星球,编号为1-N.其中的一些星球决定组成联盟,以方便相互间的交流. 但是,组成联盟的首要条件就是交通条件.初始时,在这N个星球间有M条太空隧道.每条太空隧道连接两个星 ...

  4. 【JZOJ3873】【NOIP2014八校联考第4场第2试10.20】乐曲创作(music)

    ujfuiaty 小可可是音乐学院的一名学生,他需要经常创作乐曲完成老师布置的作业. 可是,小可可是一个懒惰的学生.所以,每次完成作业时,他不会重新创作一首新的乐曲,而是去修改上一次创作过的乐曲作为作 ...

  5. 【JZOJ3852】【NOIP2014八校联考第2场第2试9.28】单词接龙(words)

    DDD Bsny从字典挑出N个单词,并设计了接龙游戏,只要一个单词的最后两个字母和另一个单词的前两个字母相同,那么这两个单词就可以有序的连接起来. Bsny想要知道在所给的所有单词中能否按照上述方式接 ...

  6. 【JZOJ3853】【NOIP2014八校联考第2场第2试9.28】帮助Bsny(help)

    EVRT Bsny的书架乱成一团了,帮他一下吧! 他的书架上一共有n本书,我们定义混乱值是连续相同高度书本的段数.例如,如果书的高度是30,30,31,31,32,那么混乱值为3:30,32,32,3 ...

  7. 【JZOJ3854】【NOIP2014八校联考第2场第2试9.28】分组(group)

    MEi Bsny所在的精灵社区有n个居民,每个居民有一定的地位和年龄,ri表示第i个人的地位,ai表示第i个人的年龄. 最近社区里要举行活动,要求几个人分成一个小组,小组中必须要有一个队长,要成为队长 ...

  8. @游记@ CQOI2019(十二省联考)

    目录 @day - 0@ @day - 1@ @day - 2@ @后记@ 我只是来打酱油哒-- 顶多能进个 E 类继续打酱油. 原本还在互奶 A 队,结果现在--铁定进不了队啦. 对初中生的歧视啊 ...

  9. 2019十二省联考 Round 1 && 济南市市中心游记

    在这样一场毒瘤的省选中 这道题目无疑是命题人无私的馈赠 大量精心构造的部分分,涵盖了题目中所有涉及的算法 你可以利用这道题目,对你是否能够进入省队进行初步检查 经典的模型.较低的难度和不大的代码量,能 ...

随机推荐

  1. 【HANA系列】SAP HANA 2.0简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA 2.0简介   ...

  2. AutoML文献阅读

    逐步会更新阅读过的AutoML文献(其实是NAS),以及自己的一些思考 Progressive Neural Architecture Search,2018ECCV的文章: 目的是:Speed up ...

  3. ubuntu/如何启动、关闭和设置ubuntu防火墙

    由于LInux原始的防火墙工具iptables过于繁琐,所以ubuntu默认提供了一个基于iptable之上的防火墙工具ufw. ubuntu 9.10默认的便是UFW防火墙,它已经支持界面操作了.在 ...

  4. 红帽学习笔记[RHCSA] 第一课[Shell、基础知识]

    关于Shell Shell是什么 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核中执行. bash shell是大多数Linux的缺省shell ...

  5. 第八周课程总结&实验报告六

    实验六 Java异常 实验目的 理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法. 实验要求 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异常类 ...

  6. CentOS7 硬盘检测

    一.测试硬盘健康状态 安装相关工具:yum -y install smartmontools SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及每一块硬盘(包括IDE.SCSI),在 ...

  7. 秒懂Vuejs、Angular、React原理和前端发展历史

    「前端程序发展的历史」 「 不学自知,不问自晓,古今行事,未之有也 」 我们都知道现在流行的框架:Vue.Js.AngularJs.ReactJs,已经逐渐应用到各个项目和实际应用中,它们都是MVVM ...

  8. Python和Js打印心形

    看到一行Python写的代码,会用LovePython输出心形: print('\n'.join([''.join([('LovePython'[(x-y)%10]if((x*0.05)**2+(y* ...

  9. 2019牛客暑期多校训练营(第八场) - B - Beauty Values - 水题

    https://ac.nowcoder.com/acm/contest/888/B 实际上的确是个水题,写个小数据找个规律看看,所谓不同度,其实就是依次插入每个元素后,各种元素出现的最后位置的坐标求和 ...

  10. Lock和synchronized的区别和使用(转发)

    今天看了并发实践这本书的ReentantLock这章,感觉对ReentantLock还是不够熟悉,有许多疑问,所有在网上找了很多文章看了一下,总体说的不够详细,重点和焦点问题没有谈到,但这篇文章相当不 ...