02 2019 档案

摘要:B:考虑2*m怎么构造。因为要求相邻的数不能再相邻,容易想到黑白染色之类的东西,考虑染个色然后大概把黑点扔一边白点扔一边。显然m<=3时无解。对m>4,m为偶数时,如1 2 3 4 5 6 7 8 9 10 11 12,就变换成1 3 5 2 4 6 8 10 12 7 9 11;m为奇数时,如1 阅读全文
posted @ 2019-02-28 22:02 Gloid 阅读(150) 评论(0) 推荐(0)
摘要:C:显然可以设f[i][S]为当前考虑到第i位,[i,i+k)的状态为S的最小能量消耗,这样直接dp是O(nC(k,x))的。考虑矩阵快速幂,构造min+转移矩阵即可,每次转移到下一个特殊点然后暴力处理掉该点的贡献。可以预处理2p次转移矩阵进一步加速。 D:首先考虑如果我们钦定了其中k条边一定在树中 阅读全文
posted @ 2019-02-27 19:57 Gloid 阅读(165) 评论(0) 推荐(0)
摘要:D:类似于noip2018d1t3,子树内的链应该贪心的尽量合并而不是拆开。则设f[i]为i子树内满足选的链尽量多的情况下根所在的链的最长长度即可。于是可以线性对某个k求得答案。 注意到长度为k的链不多于n/k个。类似于整除分块可以得到答案不同的k只有O(√n)种。于是我们每做一次dp,可以二分一下 阅读全文
posted @ 2019-02-26 22:49 Gloid 阅读(189) 评论(0) 推荐(0)
摘要:D:首先考虑如果给定白棋位置,如何判断胜负。黑棋获胜需要四个方向都有能贴上白棋的棋子。由于每一轮都必须移动,显然先对平面黑白染色一下,只有与白棋所在格异色的黑棋才需要考虑。考虑让一个黑棋去贴上白棋某个方向,那么能贴上的条件是该方向坐标之差>另一方向坐标之差。因为如果其往这边逃的话,这样才有足够的时间 阅读全文
posted @ 2019-02-26 21:49 Gloid 阅读(135) 评论(0) 推荐(0)
摘要:B:显然即相当于能否找一条有长度为奇数的路径使得终点出度为0。如果没有环直接dp即可。有环的话可以考虑死了的spfa,由于每个点我们至多只需要让其入队两次,复杂度变成了优秀的O(kE)。事实上就是拆点。方案的输出在spfa过程中记录即可。然后判一下由起点是否能走进一个环,若可以至少是平局。 C:显然 阅读全文
posted @ 2019-02-26 21:03 Gloid 阅读(178) 评论(0) 推荐(0)
摘要:A:显然对于起点相同的糖果,应该按终点距离从大到小运。排个序对每个起点取max即可。读题花了一年还wa一发,自闭了。 B:考虑构造一个长度为n=2000的序列,前1998项都是0,第1999项是负数,第2000项是正数。设1999项绝对值为y,2000项绝对值为x,则要求n*(x-y)-k=x,也即 阅读全文
posted @ 2019-02-25 02:49 Gloid 阅读(258) 评论(0) 推荐(0)
摘要:A:暴力枚举x2的因子,由此暴力枚举x1,显然此时减去其最大质因子并+1即为最小x0。 B:小根堆维护每堆雪的体积,记录总偏移量,堆顶融化完就将其弹出。 C:建棵trie,维护子树内数的个数,暴力按位贪心即可。 D:降智好题。首先发现BC可以相互转化,变换3次再删掉AAA即可。同时发现每次可以增加A 阅读全文
posted @ 2019-02-24 22:08 Gloid 阅读(126) 评论(0) 推荐(0)
摘要:A:枚举每个点判断是否同时在两个正方形中即可。 B:莫名其妙的题。首先要知道这俩人只想知道他们的共同数字是什么,而不是对方的数字对是什么。先判断啥都不知道能否确定该数字,只要考虑每一对仅有一个数字相同的数对,如果其共同数字都相同,即可确定该数为答案。否则仍考虑每一对可能的数对,如果某一种情况下有一方 阅读全文
posted @ 2019-02-24 19:03 Gloid 阅读(181) 评论(0) 推荐(0)
摘要:A:某个格子被染黑说明该行和该列同时被选中,使用并查集合并,最后看每个集合中是否有未被染黑的格子即可。 B:显然Ei和Ej相邻时最优,在固定Ei后Ek越靠后越优,双指针即可。然而我这个弱智硬是写了个分数规划+单调队列。 C:严格小于=all-严格大于-1,所以即要最小化每天的标记数之和。显然其要大于 阅读全文
posted @ 2019-02-24 13:30 Gloid 阅读(131) 评论(0) 推荐(0)
摘要:B:当n是偶数时无解,因为此时树中有奇数条边,而我们每次都只能删除偶数条。当n是奇数时一定有解,因为此时不可能所有点度数都为奇数,只要找到一个度数为偶数的点,满足将它删掉后,各连通块大小都为奇数就可以了。考虑如何证明这样的点一定存在。钦定一个根后,考虑找到一个度数为偶数的点,满足子树内点度数均为奇数 阅读全文
posted @ 2019-02-23 16:29 Gloid 阅读(156) 评论(0) 推荐(0)
摘要:A:首先将p和q约分。容易发现相当于要求存在k满足bk mod q=0,也即b包含q的所有质因子。当然不能直接分解质因数,考虑每次给q除掉gcd(b,q),若能将q除至1则说明合法。但这个辣鸡题卡常,每求一次gcd都除干净就可以了。 B:先考虑求出每个区间的f值。可以发现若区间长度为x,对于区间内第 阅读全文
posted @ 2019-02-22 00:47 Gloid 阅读(140) 评论(0) 推荐(0)
摘要:A:用一列放竖着的方块,两列放横着的方块。 B:先询问2k 2k+1,假设已经知道了a>2k,则当a>2k+1时,后者大,否则前者大。这样可以倍增出一个a的取值区间。注意到在区间内x mod a值开始单增,中间突变为0(即x=a),然后又单增,并且最开始的值要比最终的值大。于是拿2k+1和一个二分值 阅读全文
posted @ 2019-02-21 02:27 Gloid 阅读(232) 评论(0) 推荐(0)
摘要:考虑将每种颜色构成的极小连通块缩点,然后直接跑树形dp即可,即f[i][0/1]表示子树内是否有颜色向上延伸时删边的方案数。dp时需要去除某点的贡献,最好用前后缀积的做法而不是求逆。 至于如何缩点,假装要给每种颜色建虚树,按dfs序排一下序找到所有虚树上的边,标记所有虚树上的点(包括不在虚树中但在虚 阅读全文
posted @ 2019-02-20 21:56 Gloid 阅读(156) 评论(0) 推荐(0)
摘要:F:考虑对于每个字母对求出删掉哪些字符集会造成字符串不合法,只要考虑相邻出现的该字母对即可,显然这可以在O(np2)(或小常数O(np3))内求出。然后再对每个字符集判断是否能通过一步删除转移而来即可。 G:考虑一个数被删掉对一个区间产生的贡献,只考虑某一侧,显然如果该区间内该数为最大值,贡献即为该 阅读全文
posted @ 2019-02-19 18:19 Gloid 阅读(202) 评论(0) 推荐(0)
摘要:显然构造出生成函数,对体积v的物品,生成函数为1+xv+x2v+……=1/(1-xv)。将所有生成函数乘起来得到的多项式即为答案,设为F(x),即F(x)=1/∏(1-xvi)。但这个多项式的项数是Σvi级别的,无法直接分治FFT卷起来。 我们要降低多项式的次数,于是考虑取对数,化乘为加,得到lnF 阅读全文
posted @ 2019-02-18 01:43 Gloid 阅读(156) 评论(0) 推荐(0)
摘要:每个点的度数=prufer序列中的出现次数+1,所以即每次选一些位置放上某个点,答案即一堆组合数相乘。记一下每个因子的贡献分解一下质因数高精度乘起来即可。 阅读全文
posted @ 2019-02-17 20:59 Gloid 阅读(139) 评论(0) 推荐(0)
摘要:A:即求长度为偶数的异或和为0的区间个数,对前缀异或和用桶记录即可。 B:显然如果有解,答案一定不大于2,因为原串是回文串,找到第一个不是回文串的前缀和对其对应后缀切掉并交换即可。无解直接判断是否字母都相同或只有最中间字母不同。然后只需要check是否为1,暴力枚举切割点暴力判断即可。 D:显然枚举 阅读全文
posted @ 2019-02-17 19:31 Gloid 阅读(195) 评论(0) 推荐(0)
摘要:A:签到 B:考虑模意义下每个数的贡献即可。 C:如果上一轮对方选择了某一组英雄中的一个,而另一个还没被选,显然只能选择他。否则显然应该先把每一组英雄中价值较大的选中,这样对方必须选择另一个,最后再将剩余英雄从大到小选取即可。 D:大胆猜想答案等于子树内叶子数量。 E:暴力枚举0串的长度,显然1串的 阅读全文
posted @ 2019-02-16 18:34 Gloid 阅读(333) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 阅读全文
posted @ 2019-02-16 00:51 Gloid 阅读(196) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 阅读全文
posted @ 2019-02-16 00:16 Gloid 阅读(156) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 写NTT把i<<=1写成了i<<=2,又调了一年。发现我的日常就是数组开小调调调,变量名写错调调调,反向判if调调调,退役吧。 阅读全文
posted @ 2019-02-15 23:32 Gloid 阅读(151) 评论(0) 推荐(0)
摘要:考虑第一问的部分分。显然设f[i]为i子树从根开始扩展的所需步数,考虑根节点的扩展顺序,显然应该按儿子子树所需步数从大到小进行扩展,将其排序即可。 要做到n=3e5,考虑换根dp。计算某点答案时先将其在父亲中的贡献去掉,然后用和之前同样的方法做即可。冷静一下也没什么复杂的。 第二问注意到两个点扩展出 阅读全文
posted @ 2019-02-14 22:59 Gloid 阅读(227) 评论(0) 推荐(0)
摘要:考虑按顺序暴搜子序列。如果序列中的数两两不同,显然每次给上一个找到的子序列添上后缀最小值,即为下一个要找的子序列。如果不能再加了就回溯继续考虑后缀次小、第三小……值,直到找到k个子序列。 有重复的数后,考虑后缀k小值只取第一次出现的位置,并在每找到一个子序列后就统计其出现次数。显然这样就能找到所有要 阅读全文
posted @ 2019-02-14 19:09 Gloid 阅读(289) 评论(1) 推荐(0)
摘要:假设已经求出了i个点j个桥的连通图数量f[i][j],容易由此推出最终答案,套路地枚举1号点所在连通块大小即可。 假设已经求出了i个点的边双连通图数量h[i],考虑由此推出f[i][j]。可以枚举其中一座桥将图划分成两个部分,固定1号点在其中一端,将桥两端的部分方案数相乘即可。这样每种方案被考虑的次 阅读全文
posted @ 2019-02-13 21:13 Gloid 阅读(183) 评论(0) 推荐(0)
摘要:容易想到固定第一个排列为1~n,算出答案后乘上n!即可,但这样就离正解走远了。 考虑排列dp的一般套路,将数从大到小加入排列,这样每个位置第一次填数时(不管是第一个还是第二个排列)其贡献就确定了。 显然当前两个排列有用的信息仅仅是两个排列都填了、仅第一个排列填了、仅第二个排列填了、两个排列都没填的位 阅读全文
posted @ 2019-02-12 18:17 Gloid 阅读(131) 评论(0) 推荐(0)
摘要:首先只有一份图时显然可以状压dp,即f[S][i]表示S子集的哈密顿路以i为终点的方案数,枚举下个点转移。 考虑容斥,我们枚举至少有多少条原图中存在的边(即不合法边)被选进了哈密顿路,统计出这个情况下的哈密顿路数量就可以容斥了。 考虑暴力,显然是枚举在每张图中选择了哪些不合法边。注意到当固定了某些边 阅读全文
posted @ 2019-02-11 22:23 Gloid 阅读(251) 评论(0) 推荐(0)
摘要:A:阅读理解。 B:即维护一个01序列有多少段1,瞎算算即可。 C:任取两人各一段连续+区间,容易发现起始位置之差在模gcd(ta,tb)意义下总是相同的。 D:一个比较坑的题。容易想到随便找一个需要改的字符串,对其最短修改串(即去掉前后缀极长不需修改的部分)进行修改,判一下是否对其它串也合法就做完 阅读全文
posted @ 2019-02-10 17:51 Gloid 阅读(381) 评论(0) 推荐(0)
摘要:A:签到。 B:直接按欧拉路判,才不管只有四个点。 C:相当于可以用1代价获得1收益,用2代价获得b-a收益。瞎讨论即可。注意2代价获得b-a收益的前提是当前有至少a块饼干。 D:相当于找一个形如0 非零偶数 奇数 非零偶数 0 的序列(每一段长度任意且可以为空),使该序列与原序列差的绝对值之和最小 阅读全文
posted @ 2019-02-09 23:59 Gloid 阅读(430) 评论(0) 推荐(2)
摘要:A:签到。 B:显然先连接距离较小的点。 C:当a!=2k-1时,令k为满足2k-1>a的最小正整数,显然可以令b=2k-1^a使答案成为2k-1,并且显然不可能更优。a=2k-1时直接暴力打表。 E:https://www.cnblogs.com/Gloid/p/10060025.html 作为一 阅读全文
posted @ 2019-02-08 12:43 Gloid 阅读(213) 评论(0) 推荐(0)
摘要:D:即有不超过52种物品,求容量为n/2的有序01背包方案数。容易想到设f[i][j]为前i种物品已用容量为j的方案数,有f[i][j]=f[i-1][j-a[i]]*C(n/2-j+a[i],a[i])+f[i-1][j]*C(n/2-s[i-1]+j,a[i])。显然本质不同询问只有O(k2)种 阅读全文
posted @ 2019-02-06 23:18 Gloid 阅读(216) 评论(0) 推荐(0)
摘要:容易想到把边当成点重建图跑最短路。将每条边拆成入边和出边,作为新图中的两个点,由出边向入边连边权为原费用的边。对于原图中的每个点,考虑由其入边向出边连边。直接暴力两两连边当然会被卡掉,注意到其边权是trie上lca的深度,由lca转rmq的做法可知,两点lca即为欧拉序区间中它们之间深度最小的点,于 阅读全文
posted @ 2019-02-02 16:27 Gloid 阅读(232) 评论(0) 推荐(0)
摘要:显然一个序列的gcd=gcd(其差分序列的gcd,序列中第一个数)。于是一维情况直接线段树维护差分序列即可。 容易想到将该做法拓展到二维。于是考虑维护二维差分,查询时对差分矩阵求矩形的gcd,再对矩形的两个边界求一下原本的gcd即可。 但这样大概需要三个二维线段树,空间可能不太够。由于查询区域是由一 阅读全文
posted @ 2019-02-01 17:51 Gloid 阅读(228) 评论(0) 推荐(0)