简单的区间(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. 【Linux开发】Linux V4L2驱动架构解析与开发导引

    Linux V4L2驱动架构解析与开发导引 Andrew按:众所周知,linux中可以采用灵活的多层次的驱动架构来对接口进行统一与抽象,最低层次的驱动总是直接面向硬件的,而最高层次的驱动在linux中 ...

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

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

  3. JS图片宽度自适应移动端

    $(function(){ $("#d-intro").find("img").each(function () {                $(this ...

  4. 使用bat脚本进行开机启动批处理

    @echo off//关闭提示信息 start /b "F:\newProject\project\Kinect\Kinect\bin\Debug\" /min Kinect.ex ...

  5. express中app.use()使用方法

    app.use([path,] function [, function…]) 在path上安装中间件,如果path没有被设定,那么默认为”/”. 当为路由设置一个匹配路径后,路由会匹配该路径及该路径 ...

  6. Mysql-问题解决记录

    1.查看当前默认的配置文件位置 # mysqld --verbose --help | 'Default options' Default options are read from the foll ...

  7. 【监控笔记】【1.5】事件通知(event Notification)

    关键词:DDL监控 [监控笔记][1.5]事件通知(event Notification) 注意,只能通过删除新建来修改事件. [1]概念 事件通知是特殊类型的数据库对象,用于将有关服务器和数据库实践 ...

  8. MySQL-快速入门(13)MySQL日志

    1.MySQL的日志.主要分为4类. 1>二进制日志:记录所有更改数据的语句,可以用于数据复制. 2>错误日志:记录MySQL服务的启动.运行.停止MySQL服务时出现的问题. 3> ...

  9. 通过编写串口助手工具学习MFC过程——(五)添加CheckBox复选框

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  10. docker elk

    1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片, ...