BZOJ3878: [Ahoi2014&Jsoi2014]奇怪的计算器 Description [故事背景] JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写 一个程序来模拟这个计算器的运算. [问题描述] JYY的计算器可以执行N条预设好的指令. 每次JYY向计算器输入一个正整数X,计算器就会以X作为初始值,接着依次执行预设的N条指令,最后把最终得出的结果返回给JYY. 每一条指令可以是以下四种指令之一:(这里a表示一个正整数.) 1.+a:表示将当前的结果加上a: 2.-…
传送门 线段树综合. 让我想起一道叫做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…
题目链接:奇怪的计算器 如果没有溢出的话,所有的标记都可以在线段树上直接维护,所以一棵线段树就解决问题了. 现在有了溢出,怎么办呢? 发现就算溢出了,各个元素的相对大小关系也是不变的.所以,如果一开始就把元素排好序,溢出的数一定是两段区间.在线段树上把这两段区间找出来,区间赋值就好了.当然也需要多记录区间\(\max\)和区间\(\min\). PS:注意各个标记的先后关系 下面贴代码(代码较丑): #include<iostream> #include<cstdio> #incl…
题面:BZOJ传送门 洛谷传送门 线段树好题 题目保证$a$一定是正整数,容易发现计算结果是单调的 我们把询问离线,并按照从小到大排序 某次操作可能导致某些位置达到边界$L/R$ 根据单调性的结论 这些位置一定是从$1$向右扩展或者$Q$向左扩展 可以二分找到这个区间,然后区间覆盖 那么修改操作,归根结底是这$4$种操作: 1.区间加减 2.区间乘法 3.区间覆盖 4.区间每个位置加某个数*对应位置的固定权值 比较复杂,考虑抽象化这个问题,把它写成一个函数 $f(a,b,c)=a*f(a,b,c…
[AHOI2014/JSOI2014] 奇怪的计算器 一个很关键的结论,任何时候每个数的相对大小是不变的. 于是可以把这个相对大小当成线段树的权值,每次只需要维护一下区间极值和tag就好了,关于操作四,因为维护的是区间极值,所以可以直接确定是加谁的初始值. tag并不会爆ll,因为每次要执行区间覆盖搞掉tag 骑士游戏 屑题,SPFA优化一下转移 宅男计划 先仍掉保质期短又贵的,然后可以脑补出送餐次数是凸的(鬼嘞... 三分送餐次数 然后发现一个结论,每次送餐吃的天数差不超过1一定是最优的,可以…
「AHOI2014/JSOI2014」奇怪的计算器 传送门 我拿到这题首先是懵b的,因为感觉没有任何性质... 后来经过同机房dalao的指导发现可以把所有的 \(X\) 放到一起排序,然后我们可以发现每次操作都不会改变这个排完序之后的序列的单调性(始终单调不降),也就是说如果其中有一次操作使得数列中的某些数越界了,那么肯定是一个前缀或一个后缀,分别对应向下和向上越界. 然后我们就可以用线段树来搞,每次操作直接用线段树区间修改实现(具体细节待会讲),判断越界的话,我们就存一下区间的最小值和最大值…
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…
[BZOJ3875][Ahoi2014&Jsoi2014]骑士游戏 Description  [故事背景] 长期的宅男生活中,JYY又挖掘出了一款RPG游戏.在这个游戏中JYY会扮演一个英勇的骑士,用他手中的长剑去杀死入侵村庄的怪兽. [问题描述] 在这个游戏中,JYY一共有两种攻击方式,一种是普通攻击,一种是法术攻击.两种攻击方式都会消耗JYY一些体力.采用普通攻击进攻怪兽并不能把怪兽彻底杀死,怪兽的尸体可以变出其他一些新的怪兽,注意一个怪兽可能经过若干次普通攻击后变回一个或更多同样的怪兽:而…