随笔分类 - 乱搞
摘要:好题!话说省选的都开始构造了吗 由于有K的倍数的限制所以不妨取模,先建K个点表示0~K-1这些数,第i个点向[i*m,i*m+m]建边。不难发现这是合法的但不一定是最优的 考虑合并等价的点,首先从直观上考虑,当两个点能够转移到的点相同时,它们一定可以合并,但是能够合并的点远远不止这些 考虑一般化,对
阅读全文
摘要:暴毙选手又被zo老师D费了 暴力是n^2的都会 有另一个点分的做法,就是看成两条链,然后在后缀树上跑,找到对应原串位置拼起来,是n*(logn+m) 然后就根号分治,树的大小超过阈值就点分,小于就暴力 大家说推出来的阈值是sqrt(m),然而我强行设成3000跑得最快啊QWQ
阅读全文
摘要:我TM真是读题之神zzzzzzz 只能在头尾取啊233333 R-L+1这么小肯定是用来枚举的 然后那个约数个数是强行拼起来搞我的,弄那么多花里胡哨的东西很容易忽略什么,预处理一下就变成点权了 主要问题在符合规范,两两每个位置都不一样 容易发现每个位置放过一个字母以后就不能再放了,所以最多放52次
阅读全文
摘要:挖掘性质题,还是脑洞不够大只会40pt 首先可以发现,每个位置的字母都会放在给出的子串结尾有且仅有一次(废话) 然后据此就可以找出这个串是由哪些字母组成的了,排一波序就知道对于给出的子串的第一位置是啥了 既知道最后一个位置,又知道第一个位置,这两个位置是相邻的,确认两个字母的关系,假如互不相同就做完
阅读全文
摘要:我真是SB之神呢这么SB的题都不会 肯定是先无脑正向思考,罗列下关系式: b[1]=∑a[i]*dep[i]=∑tot[i] (i!=1) b[i]=b[fa]-tot[i]+(tot[1]-tot[i]) a[i]=tot[i]-∑tot[son] 画一下第二个,就变成2*tot[i]-tot[1
阅读全文
摘要:被踩爆*2 这个题看起来就很乱搞,因为这个精度要求。。。(开始还猜了个一直转圈圈就可以等比数列了,然而好像很假) 反正还是无从下手 结果居然是倍增floyd,滚一维表示走了2^t步时的最大幸福度 注意初始时自己到自己幸福度为0
阅读全文
摘要:越来越菜的yzh天天模拟赛被机房的大佬踩爆 然后晚上做题继续被bzoj踩爆 这个真神! 考虑取出系数中最小值,假设放在a1 那么对于任意一个数,都可以表示成 q*a1+p对吧 而我们又有这样一个显然的东西:假如x可以被表示,那么x+a1也一定可以表示 那么只需要对于每一个p维护最小的q就可以了,p的
阅读全文
摘要:直接求不好求引入未知数,考虑采用补集转化 对于一次非剪刀石头布的情况,定是一个人赢了另两个人 若知道一个人共赢了多少人,那么就贡献了n*(n-1)/2种不同的情况 更一般的,一个人如果多赢了一个人,他的新增的贡献就是他当前没有加上这个人时已经赢了的人 费用流。 st->比赛->人->ed,费用是递增
阅读全文
摘要:这道题有三种做法,感受一下: 感觉到了歪果仁费尽脑汁想出来的神仙贪心脑洞题被中国人套路算法踩爆的凄凉。。。(我的名字是不是暴露了我的真实实力) 首先先要明白:有A个A球,B个B球,用了一个A球贡献为ai,B球贡献为bi,两个都用贡献为1-(1-ai)(1-bi)=ai+bi-ai*bi 先讲讲最无脑
阅读全文
摘要:本校唯一国家队爷出的题。。。真流弊 强行卡掉优化构图 大家一起去%吧 我觉得离散化以后就是一个类似匈牙利的贪心了。。。
阅读全文
摘要:这个限制条件搞着就很难受,应该是要离线做的,也就是要找到不同询问的共同点才行 很容易想到,对于时间而言是g+r一个循环的,那我们就可以在模g+r意义下做然后我还以为gr很小呢 开始我想的是对一个询问扫一次,假如见到了红灯,一定要等,等完红灯后的时间节点是固定的,这样可不可以通过维护一些东西搞搞 然而
阅读全文
摘要:这是一篇口胡的题解,因为我分类讨论到自闭了 我们其实可以只关心左右端点的位置 设区间分割后代表它的点集最左端的点为x,最右端的点为y,它们的lca为z,端点可以上一个链表在均摊O(logn)找到 可以发现在z以上都没有点集里的点 对于x~z的树上路径上的点(先不管x和z),假如它是父亲的左孩子,那么
阅读全文
摘要:首先先减下标转换成求最长不下降子序列(是个套路?见了几次还是不是很懂) 然后对于递增的直接取值就可以了,递减就来个中位数 可以构造出一个这样的算法: 每次插入一个新的区间[i,i],使用a[i],表示当前点最好用自己的值就可以了 和前一个区间比较,如果这个点选用的值较小,进行区间合并,这个区间用它的
阅读全文
摘要:这是一个结论题。。 要求的序=反图的最大字典序 也就是尽量把大的放在后面。。
阅读全文
摘要:咸鱼做题天天%题解 那么我们可以把这道题转化成线段覆盖问题 读进来的a,b说明在最后的小到大顺序中,n-a+1~n比我大,1~b比我小 换言之就是b+1~n-a是和我相等的。 那么相同区间的我们可以合并,这个区间的权就是min(相同的个数,区间大小) 我们可以利用DP计算选择一些不相交的区间的最大值
阅读全文
摘要:很有趣的一道题233 一维送分的,排序后弄个指针扫描维护当前最远能够听见的位置即可 二维我会肝两次分治,后来看claris博客发现可以把曼哈顿距离换成切比雪夫距离,要满足|xi-xj|<=D&&|yi-yj|<=D 这样就好做了,转化成区间问题扫描线+线段树水 三维不管高,然后同样的转换,因为m很小
阅读全文
摘要:做法就是任选一个人新建一个楼子扔它进去,然后把它没有号码的所有人和它放在一个办公楼,其他人也这样操作(就是宽搜),扔无可扔为止 但是这样每次枚举复杂度很高,考虑开一个全局的链表,已经有楼子住的人就删掉。 那么如何快速判断是否有号码呢?我们可以开一个bool数组,每次宽搜到当前点就先把这些有号码的点打
阅读全文
摘要:之前GDOI的时候了解过,随机数据的用途就是在其中找一段单调上升/下降的子序列期望长度为logn 然而这道题还是不懂怎么用的说。。 首先考虑对于i<j<k,若ci>cj>ck则对于k来说i是无用的。 也就是说对于当前点k,我们需要找到一个后往前单调下降的子序列并且这些数都比c[k]大 对于比c[k]
阅读全文
摘要:这道题很有意思啊。 字符串循环节用KMP(手推一下) 假如是26^12肯定很不滋磁 但是可以发现ABA和BCB和BAB这些都是等价的 那就把最小的拿出来搞再乘个排列数就好了
阅读全文
摘要:被神仙题cao爆 可以发现(并没有)nand可以把这些基本运算表示出来 !a=a nand a a&b=!(a nand b) a|b=(!a)nand(!b) 用类似线性基的做法,由高位到低位枚举,对于每一个位,因为有取反操作,在保证当前位为1的情况下,把全部的数字都and一次,那么就可以得到一个
阅读全文