BZOJ 3878 【AHOI2014】 奇怪的计算器】的更多相关文章

BZOJ 3878: [Ahoi2014]奇怪的计算器 标签(空格分隔): OI-BZOJ OI-线段树 Time Limit: 10 Sec Memory Limit: 256 MB Description [故事背景] JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写 一个程序来模拟这个计算器的运算. [问题描述] JYY的计算器可以执行N条预设好的指令.每次JYY向计算器输入一个正 整数X,计算器就会以X作为初始值,接着依次执行预设的N条指令,最后把 最终得出的结果返回…
线段树秀操作题. 奇怪的计算器 有 N 个数,一共会对这 N 个数执行 M 个指令(对没个数执行的指令都一样),每一条指令可以是以下四种指令之一:(这里 a 表示一个正整数) 加上 a 减去 a 乘以 a 加上 a*X(X 是数最开始的初值) 该计算器有个奇怪的特点.每进行一个指令,若结果大于 R则变成 R,同理若结果小于 L,则变成 L.求这 N 个数最后的结果. N, M ≤ 200000 题解 重要性质:无论题目里面的修改怎么执行,所有数的相对大小(即排名)不变.所以我们每次的chkmin…
题目链接:奇怪的计算器 如果没有溢出的话,所有的标记都可以在线段树上直接维护,所以一棵线段树就解决问题了. 现在有了溢出,怎么办呢? 发现就算溢出了,各个元素的相对大小关系也是不变的.所以,如果一开始就把元素排好序,溢出的数一定是两段区间.在线段树上把这两段区间找出来,区间赋值就好了.当然也需要多记录区间\(\max\)和区间\(\min\). PS:注意各个标记的先后关系 下面贴代码(代码较丑): #include<iostream> #include<cstdio> #incl…
BZOJ3878: [Ahoi2014&Jsoi2014]奇怪的计算器 Description [故事背景] JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写 一个程序来模拟这个计算器的运算. [问题描述] JYY的计算器可以执行N条预设好的指令. 每次JYY向计算器输入一个正整数X,计算器就会以X作为初始值,接着依次执行预设的N条指令,最后把最终得出的结果返回给JYY. 每一条指令可以是以下四种指令之一:(这里a表示一个正整数.) 1.+a:表示将当前的结果加上a: 2.-…
「AHOI2014/JSOI2014」奇怪的计算器 传送门 我拿到这题首先是懵b的,因为感觉没有任何性质... 后来经过同机房dalao的指导发现可以把所有的 \(X\) 放到一起排序,然后我们可以发现每次操作都不会改变这个排完序之后的序列的单调性(始终单调不降),也就是说如果其中有一次操作使得数列中的某些数越界了,那么肯定是一个前缀或一个后缀,分别对应向下和向上越界. 然后我们就可以用线段树来搞,每次操作直接用线段树区间修改实现(具体细节待会讲),判断越界的话,我们就存一下区间的最小值和最大值…
BZOJ 3873: [Ahoi2014]拼图 标签(空格分隔): OI-BZOJ OI-DP Time Limit: 10 Sec Memory Limit: 256 MB Description JYY最近迷上了拼图游戏.作为一个计算机科学家,JYY有一套黑白色的拼图,他希望通过合理的拼接,使得拼出的最终图案中,能包含面积最大的全白色子矩形.JYY一共有S块拼图,并且由1到S编号.编号为i的拼图是一个N行列的方格矩形,每个方格都为黑色或者白色.一开始JYY将他的这S块拼图按照编号顺序左右相连…
题面:BZOJ传送门 洛谷传送门 线段树好题 题目保证$a$一定是正整数,容易发现计算结果是单调的 我们把询问离线,并按照从小到大排序 某次操作可能导致某些位置达到边界$L/R$ 根据单调性的结论 这些位置一定是从$1$向右扩展或者$Q$向左扩展 可以二分找到这个区间,然后区间覆盖 那么修改操作,归根结底是这$4$种操作: 1.区间加减 2.区间乘法 3.区间覆盖 4.区间每个位置加某个数*对应位置的固定权值 比较复杂,考虑抽象化这个问题,把它写成一个函数 $f(a,b,c)=a*f(a,b,c…
传送门 线段树综合. 让我想起一道叫做siano" role="presentation" style="position: relative;">sianosiano的题,这题就是那题的强化版本. 说说做法吧: 跟siano" role="presentation" style="position: relative;">sianosiano一样,当我们把a[i]" role=&qu…
题目描述 题解: 考虑到经过一系列变化后小数不可能比大数大,我们可以用线段树维护区间修改. 重点是,每个节点都可以通过$a[i]=a[i]*t1+a0[i]*t2+t3$这个函数来表示,我们就可以把三个标记一起维护. 代码: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; ; template<typename T&g…
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3352  Solved: 919[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成…