看到学长txc爷的blog里写了个“最近写的题目”
然后心血来潮准备自己也弄个这个东西
发现 BIT 可以实现平行四边形修改(把坐标系扭转一下,也就是把 映射到 ),考虑在超过边界的时候平行四边形可以被认为是一个直角梯形。直角梯形加,矩形减,用二维 BIT 维护,就能达到三角形加的效果。
考虑题目中要求的子串满足 ,把询问离线下来,枚举右端点,维护 的个数,本质就是维护最小值出现次数,注意打标记实现前缀和统计。
枚举前一半数的 ,那么先算前一半数必须要在 的倍数中取,后面的数不在 的倍数中取的方案数,然后容斥,发现容斥系数正好是 ,证明可以感性理解(捂脸)。
前来膜拜一波神仙学长 txc 的集训队作业。
对于每个点,如果连着他的一条边被割了,那么与之相连的其他边都不能被割。
对于每个点连着的边的每种颜色,如果其中一条边没有被割,其他边都必须被割。
二分 + 前后缀和优化建图 + 2-SAT 即可。
对于每个存在某个航班从不可用到可用的分界点专门拿出来考虑。
中间可以用 floyd + 矩阵乘法 维护每个点可不可以在这个时刻到达,可以用bitset优化。
对于每个分界点跑一遍多源最短路即可。
使用一个堆维护下一个发生的事件即可。
的枚举两个字符,然后发现如果在这个子串中存在 则表示有必要把 和 两种字符合并,存不存在可以写成卷积性质然后 FFT / NTT 解决,后半部分可以并查集。
发现肯定存在一个分界点,左边不取,右边去,然后就可以平衡树维护了。严格证明在这篇题解里有。
跟我讨论怎么出题。
结果 一句「你做过Portals没」就把话题变成了Portals做法讨论了……
在 和 放一对传送门,满足 ,这样子 和 一行一列就解决了,然后递归即可。
倒过来做,每次选择一段连续的区间即可。
由于是严格的LIS,所以每个数只能填一遍跟没有一样,然后用正常的 LIS,做到gap的时候就枚举取哪个数,复杂度,还是比较松的。
为什么POI全是权限题
发现最优解的每个元素,然后瞎dp就可以了。
将原图中所有边双都拎出来,这些是可以做到强连通的。
拎出来之后就是树了,一条路径上一半设为向上另一半向下,判断有无矛盾即可。
枚举矩形右端点,将左端点的每一个可能取值用线段树维护一下即可。
重构树…
跑出到每个点的最段路之后就可以搞了。
还是重构树…
把询问最小值改成第大即可。
重构树。
询问的是整一棵重构树上的子树的积。
但是因为的存在,不能树状数组,必须线段树。
比赛的时候写了个的莫队结果过不去。
最后半个小时的时候改写正解喜提失败,心情极差。
每次二分当前这玩意儿可以掼到哪里,注意加一个如果两次掼回去的话可以直接取模,这样每次至少减少一半就是的了。
不美好的回忆…
虽然我打的很臭但是这场的题还是蛮有意思的…
先拆点,然后建出最短路之后分层贪心取,细节很多…
不美好的回忆…
E1的基础之上(表示枚举到第列,状态为的行的最大值已经被确定)状压之后记录一下对于当前列,每个状态可以达到的最大和优化DP,并且注意只取值最大的列。
前一天CF的F题。
建出个点,代表是否成立,建图十分神仙,最后即可。
二分答案,得出对于每个点,最少有多少个被选中的点和他相邻,然后每次把已经不可能选进的点给删掉即可。
对于每条横着 / 竖着的线,两两配对连边之后跑黑白染色即可。
树剖裸题。
直接把每个点转换为坐标为的点,然后就可以DP了。
把串反过来,是否满足条件的柿子转成卷积形式后NTT即可。
先把赋值操作转换成加操作,再把加改成乘,因为对于一个数上加的顺序是固定的,贪心即可。
打了场CometOJ。
这C题难度实在超标。
虽然做完之后发现不难但是我就是愣是没想到然后就可以暴力枚举了艹。
似乎是打CometOJ以来rk最高的一次(雾)毕竟我之前打的两场都是打到一半回家了(大雾)
顺便把标题改了下
令为离最远的点离的距离。
两边之后以最小的点为根,可以证明,倍增即可。
想办法把两个状态变成一个的三角剖分,一个正着做一个倒着做即可。
打了场CF。
和讨论了半个小时,得出了一个优秀的假做法。
我和讨论了半个小时,得出了一个优秀的假做法,赛后问爷发现距离正解仅仅差一个无解判断。
先用unordered_map维护个并查集,把每个联通块拎出来做根号分治即可。
删掉环,他就是一个树形DP,连着环的可以直接做,没连环的枚举最后一个取了哪个点。
高精线性基。
懒得写了(大雾)
倍增 + 哈希维护一条链上的哈希值。
由于是倍增所以不用二分,是的。
口胡完事(大雾)
都怪Sooke疯狂怂恿我口胡(大雾)
对于一个联通块,如果有环,贡献为否则贡献为。
我以为这是1D,做到一半:这真的是1D吗,然后去看了一下发现是2D
一不小心就咕咕咕了3个月了…
都是高中生!怎么能这么咕咕咕!(这就是你晚自修跑出来玩电脑的理由?)
我要重新开始!
从现在的开始要反一下…越往上越新
之前的就懒得改了…反正也没什么人看这只菜鸡的blog
现在开始准备模仿zxyhh神仙每次随机找的Div1 D E做了。
直接在意义在进行,线段树维护。
状压维护竖着的杆子存在与否。
同一种颜色中间用矩乘加速。
今天的考试题
一道神奇的斜率优化
考场上随便打的暴力艹过去了,CF上特判了一组数据就过了
傻逼背包题,昨天Div3的时候特别智障的看错题意导致没切、
我果然太菜了
细节题。
用两个珂朵莉树状物维护一下连续的空段就行了。
昨天23:35到今天1:35打了一场CF,还行,小号上紫成功w
(这出题人B题放码农题然后CDE三道傻逼题算什么意思啊)
用线段树简单维护一下每个点的期望值
有点奇奇怪怪 容易写挂(又是细节题)
每次暴力向根更新+DP+剪枝是正确的。
因为答案最大是的(树剖),所以封顶
淦 前天Div 3怎么全都是水题
直接用桶存一下数字然后再调和级数枚举即可。
奇奇怪怪的找规律 + 线段树
发现所有数都在的时候形成循环,然后再用线段树打标记维护一下。
又双叒叕是细节题
用两个维护一下整首播放的和半首播放的即可。
其实这sb题我22号才调出来的
但是我看21号没做其他题就放过来的
结论:把需要求的点个按照序排个序,设得到的序列为那么这个时候的答案就是,然后再用维护,和然后把单独拎出来,询问的时候加上就行了。
怎么又双叒叕是set
整天就知道set, set 我看CF你这个OJ就像个set
用两个set维护青蛙能影响的区间和未被吃掉的问题
完整题解:>Here<
ZJOI期间,只打了一场CF,其他啥都没写
帮可爱的xay5421写了1个小时的假算法
ZJOI2019爆完0回来了。
不用离散化,算出之间每个点的贡献。
直接用 维护一个区间的答案,滋瓷插入和删除即可。
首先枚举电视台。
钦点当前这个区间跟左边/右边其中一边不接触,用ST表维护一下区间内最右边/左边的点,然后特判一下广告区间包含电视台的区间的情况即可。
线段树 + 计算几何。
线段树区间维护一个向量,表示的起点和的重点之间的位置关系,注意开和使用防止过大精度误差。
线段树大水题。
棵线段树随便艹。
orz ODT神仙。
使用 逆着题意模拟即可。
一开始所有点都不确定,每次取出第一个,判无解, + 二连,最终把不确定的瞎填一通输出即可。
我们考虑线段树,一个段里维护和,然后可以矩阵乘法预处理出和,的关系的时候从预处理好的里面取系数就行了。
orz 红名巨爷。
首先两点之间一段可以转换为一个类dfs序状物,然后把距离可以做一个转换,变为序列上首尾相接的两端,前面那半段取反。接下来用线段树维护就行了。
如果我们钦点左括号为,右括号为,为,一个序列是括号匹配的当且仅当且那么用二分 + 后缀数组可以得出对于一个左端点,它右端点的范围。最后主席树维护一波即可。
先建出字典树(只针对需要被屏蔽的,白名单直接在他和根的路径中打个标记就好了)。
再判个无解。
然后遍历一遍字典树,尽量取浅的未被标记的节点即可。
首先把所有的关卡按照通过第二关的难度排个升序,然后再对于枚举一个点,使得在前面的关卡拿了一颗星,后面的关卡没拿第二颗星(可以证明肯定存在一个最优解使得满足性质的存在)。我们令为使第关拿到下一颗星的代价,然后用动态维护前个最大的即可。
打了场CF还unr了。。。今天一大半时间都在做前一天CF的题目w
显然脱口秀放在一个事件后面一个单位时间最优。
然后枚举放在哪个后面 + 模拟即可。
分治。
每次从一个线段中的最大值割开,维护一个,然后合并的时候启发式合并一波即可。
感谢教我的orz
简单DP,表示以点为开始的只有边的路径的数量表示…只有边的…数量。
两遍DFS解决,最后显然答案就是。
期望DP。表示取到第个,目前包里还有还有个球。
注意要开个辅助的转移,否则要枚举下一个在什么地方取,就是的。
把每个矩形的代价丢进里面,每次取出代价最小的。
再把因为这个矩形取了导致不能够取的矩形删掉,就可以了。
luogu比赛正好和课外班撞了一大半。。。半个小时的时间只够打个了(艹要是我T2的倍增优化建边打出来了我就rk前10了w)
T2边过个几天再补(咕咕咕)
简单矩阵乘法。
很像CF1117D Magic Gems,我的题解:>Here<
把柿子改改就可以了。
昨天回初中学校考试去了。。。
用一个线段树维护一下每个点上最下面的节点,每次一直往下面加入线段。
每次分治一下+DP转移即可。
简单构造。
直接按照先序遍历为这个性质乱搞,每次取尽量少的点构造一棵树,如何还有不够的就在最后直接加
因为如果在最右边的一个节点的右子树上加,不管是先序还是后序,表现出来都是在序列最后加。
先离散化一波
然后直接大力二分 + 权值树状数组维护一波就行了。
裸倍增优化建边
注意要用一个类似ST表的东西来让它的点数小一个
答案可以转换成很多个斜线和一个奇奇怪怪的矩形组成的图形的交
接下来用堆 + 单调栈维护一下即可。
一个火区在一段时间后影响的时间是一个正方形,然后非常显然地想到二分答案
然后里面把所有火区影响范围的边界弄出来,离散化一下,可以得到最上、最下、最左、最右的未着火区,然后就可以确定最后一个的位置了。
我们令为右边的最近的比大的数字的位置,就是在左边的…
考虑一个数字会使和区间内的元素的贡献+1(前提是在范围询问内)
两端分开来算,分别从左到右和从右到左加贡献 + 询问,线段树维护即可。
首先,暴力枚举第一个和第二个,显然前二个里面最优的解的数量封顶是的
接下来在前两个最优的情况下我们显然可以得到第三个的取值范围,就可以用表维护差分最大值了。
按照题意模拟。
用一个维护等电梯的和坐电梯的人即可。
我们可以在线段树上的Lazy标记改成一个斐波那契数列的第一和第二项(斐波那契数列是可以直接相加的)
里面套一个矩阵乘法,就可以解决了。
分块。
每个块里开一个和一个桶,每次修改的时候瞎jb乱搞一下就行了。
套路性拆环,直接把序列倍长一遍就变成区间最大字段和问题了。
直接用线段树解决即可。
这是验题的CF里的题
可以建图DFS过序过去,也可以树状数组乱搞。
实名diss洛谷上的第二篇题解。。。代码是抄的,注释跟简单介绍分块基本没有区别被硬生生说成了不知道作者是怎么想的
就是分块 块内有序 查询的时候从左和右分别开始每个块内二分看是否存在要找的数。
似乎每块开个unordered_map就能去log了
我们用主席树上二分可以得到每个地点可以最多往左走到哪里
每次询问从右往左暴力跳就行了,因为最多跳次,加起来就是加上主席树上二分就是两只的
把集合分成大小和大小的两种,加的时候大集合打标记 小集合暴力加,并且给所有大集合加上所对应的贡献。
查询的时候对于大集合,我们把它的标记和加小集合对它的贡献加起来就行了。
小集合照样暴力即可,注意要加上修改大集合对它的贡献。
结束了?结束了。
orz
发现答案只有可能原LIS + 1, LIS, LIS - 1中的一个
我们对于它是不是在原LIS节点作分类讨论,接下来用主席树维护即可。
线段树,表示在这个区间内,全都变成了,可以将认为是一种特殊的懒标。
每次下传的时候即可,右儿子也是这样。
每次往后跳,直接跳到的最小的
可以用线段树上二分实现。
其实最终的决策就是一个带权带修中位数
然后用一个线段树维护即可。
求出LCP之后就可以比较两个的大小 然后就可以DP了
考虑带修莫队, 每次更新的时候分块修改。
每个询问的时候查询即可。
对于每一个选择的区间,序列分成前面的,中间的,后面的三部分。
然后中间的每对数,贡献,其他的每个逆序对贡献,使用树状数组维护即可。