[CSP-S模拟测试]:慢无止境的八月(乱搞)
题目传送门(内部题102)
输入格式
第一行三个正整数$n,k,q$,分别表示数列长度,操作长度和修改个数。
第二行$n$个数,表示给出的终止数列。
接下来$q$行,每行两个数$pos,dx$,表示将$a[pos]$加上$dx$,注意$dx$可能是负数。
输出格式
输出共有$q+1$行,分别是初始时和每次修改后的答案。如果凉宫可以取胜,输出$Yes$,否则输出$No$。
样例
样例输入:
5 2 5
1 1 1 2 1
3 −1
1 −1
3 1
3 1
1 −1
样例输出:
Yes
No
No
No
Yes
No
数据范围与提示
样例解释:
初始时,可以通过对$[1,2],[3,4],[4,5]$依次做$+1$操作得到;四次操作后,数列变为$[0,1,2,2,1]$,可以通过对$[2,3],[3,4],[4,5]$做$+1$操作得到。
数据范围:
对于$10\%$的数据,满足$n=1,q=0$。
对于$20\%$的数据,满足$n\leqslant 5,q=10$。
对于$30\%$的数据,满足$n\leqslant 18,q=10$。
对于$50\%$的数据,满足$n\leqslant 2,000,q\leqslant 2,000$。
对于$70\%$的数据,满足$n\leqslant 100,000,q\leqslant 100,000$。
对于$100\%$的数据,满足$k\leqslant n\leqslant 2\times 10^6,q\leqslant 2\times 10^6$,保证任何时候,$|a[i]|,|dx|\leqslant 10^9$。
题解
今晚是乱(mei)搞(lian)专题!
题目中的−是什么鬼?还好我眼尖一眼就看了出来。
首先,如果整个区间和不是$k$的倍数的话一定是$No$,然后我就发现大样例中$2000$组询问只有$4$个是$k$的倍数。
于是$n^2$暴力$+$剪枝直接$AC$。
时间复杂度:$\Theta(\omega n)$(其中$\omega$为询问中区间和是$k$的倍数的个数)。
期望得分:$50$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,k,q;
long long sum;
int a[2000010],b[2000010],s[2000010],sss;
int main()
{
scanf("%d%d%d",&n,&k,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
if(!k)
{
q++;
while(q--)puts("No");
return 0;
}
if(sum%k){puts("No");goto nxt3;}
sss=0;
for(int i=1;i<=n-k+1;i++)
{
sss+=s[i];
b[i]+=a[i]-sss;
sss+=b[i];
s[i+k]-=b[i];
b[i]=0;
}
for(int i=n-k+2;i<=n;i++)
{
sss+=s[i];
b[i]+=a[i]-sss;
if(b[i]!=0){puts("No");goto nxt1;}
}
puts("Yes");
nxt1:for(int i=1;i<=n;i++)b[i]=s[i]=0;
nxt3:;
while(q--)
{
int pos,dx;
scanf("%d%d",&pos,&dx);
sum+=dx;a[pos]+=dx;
if(sum%k){puts("No");goto nxt4;}
sss=0;
for(int i=1;i<=n-k+1;i++)
{
sss+=s[i];
b[i]+=a[i]-sss;
sss+=b[i];
s[i+k]-=b[i];
b[i]=0;
}
for(int i=n-k+2;i<=n;i++)
{
sss+=s[i];
b[i]+=a[i]-sss;
if(b[i]!=0){puts("No");goto nxt2;}
}
puts("Yes");
nxt2:for(int i=1;i<=n;i++)b[i]=s[i]=0;
nxt4:;
}
return 0;
}
rp++
[CSP-S模拟测试]:慢无止境的八月(乱搞)的更多相关文章
- [CSP-S模拟测试]:统计(树状数组+乱搞)
题目传送门(内部题120) 输入格式 第一行,两个正整数$n,m$. 第二行,$n$个正整数$a_1,a_2,...,a_n$,保证$1\leqslant a_i\leqslant n$,可能存在相同 ...
- [CSP-S模拟测试]:Cicada拿衣服(暴力+乱搞)
题目传送门(内部题94) 输入格式 第一行两个整数$n,k$,代表衣服的数量和阈值. 接下来一行$n$个数,第$i$个数$a_i$表示每件衣服的愉悦值. 输出格式 输出一行$n$个数,第$i$个数为$ ...
- jzoj6003. 【THUWC2019模拟2019.1.16】Square (乱搞)
题面 题解 不难发现,如果一行最后被染色,那么这行的颜色肯定一样,如果倒数第二个被染色,那么除了被最后一个染色的覆盖的那一部分剩下的颜色肯定一样 于是题目可以转化为每一次删去一行或一列颜色相同的,问最 ...
- csp-s模拟测试99
csp-s模拟测试99 九九归一直接爆炸. $T1$一眼板子. $T2$一眼语文题(语文的唯一一次$120+$是给模拟出来的可知我的语文能力). $T3$一眼普及题. ?? Hours Later 板 ...
- csp-s模拟测试94
csp-s模拟测试94 一场简单题,打爆了.$T1$脑抽分解质因数准备分子分母消,想了半天发现$jb$互质直接上天,果断码了高精滚蛋.$T2$无脑手玩大样例,突然灵光一闪想到映射到前$K$大小的区间, ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- NOIP模拟测试17&18
NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...
- Android单元测试与模拟测试详解
测试与基本规范 为什么需要测试? 为了稳定性,能够明确的了解是否正确的完成开发. 更加易于维护,能够在修改代码后保证功能不被破坏. 集成一些工具,规范开发规范,使得代码更加稳定( 如通过 phabri ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
随机推荐
- C#开发微信公众平台-就这么简单(转载)(附原文链接)
一直使用的是一百八的诺鸡鸭,没有想去接触看起来风风火火的移动互联网:但因工作需要维护一个微信公众订阅号,考虑以前有做网站的基础,就想着做个简单的微信后台管理:看了官方的开发文档,比狗哥地图的短许多,又 ...
- 最全MySQL面试题和答案
Mysql 的存储引擎,myisam和innodb的区别. 答: 1.MyISAM 是非事务的存储引擎,适合用于频繁查询的应用.表锁,不会出现死锁,适合小数据,小并发. 2.innodb是支持事务的存 ...
- Hadoop 3相对于hadoop 2的新特性
相对于之前主要生产发布版本Hadoop 2,Apache Hadoop 3整合许多重要的增强功能. Hadoop 3是一个可用版本,提供了稳定性和高质量的API,可以用于实际的产品开发.下面简要介绍一 ...
- chrome input 输入框去掉黄色
-webkit-box-shadow: 0 0 0px 1000px white inset input设置内置阴影,要比你的input本身大
- 7.Hibernate查询
一:Hibernate可以使用的查询语言 1.NativeSQL:本地语言(数据库自己的SQL语句) 2.HQL:hibernate自带的查询语句,可以使用HQL语言,转换成具体的方言 3.EJBQL ...
- 第十五章·Kibana深入-Dev Tools及Lucene语法
Dev Tools介绍 Dev Tools 页面包含开发工具,您可以使用这些Dev Tools与Kibana中的数据进行交互. 原先的交互式控制台Sense,使用户方便的通过浏览器直接与Elastic ...
- [ZOJ 3076] Break Standard Weight
题目连接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5009 题意:给你两个数字,可以把其中一个拆成两个数字,计算这三个数字 ...
- Delphi用QJSON解析JSON格式的数据 【转】
本来用superobject来解析JSON已经够用了,可惜这个东东不能在移动端使用,于是找到QJSON来处理. 这是一个国内高手写开源免费的东西,赞一个. 假入数据如下: {"message ...
- Successor HDU - 4366 (预处理,线段树,dfs序)
Successor HDU - 4366 Sean owns a company and he is the BOSS.The other Staff has one Superior.every s ...
- JavaScript入门学习之二——函数
在前一章中讲了JavaScript的入门语法,在这一章要看看函数的使用. 函数的定义 JavaScript中的函数和Python中的非常类似,只不过定义的方式有些不同,下面看看是怎么定义的 //定义普 ...