02 2019 档案

摘要:"嘟嘟嘟" 裸的矩阵快速幂,构造一个$(k + 1) (k + 1)$的矩阵,把sum[n]也放到矩阵里面就行了。 c++ include include include include include include include include include include using na 阅读全文
posted @ 2019-02-28 22:13 mrclr 阅读(169) 评论(0) 推荐(0)
摘要:嘟嘟嘟 第一眼肯定是SAM,然后觉得前缀不好做,就翻过来变成后缀好了。 这样就是所有前缀的最长公共后缀之和。 然后还得知道,parent树上两点的最长公共后缀就是lca。 式子不要拆开,定义每一条边的边权就是$len[fa] - len[p]$,那么相当于求两点之间的路径之和。 考虑每一条边的贡献, 阅读全文
posted @ 2019-02-28 17:02 mrclr 阅读(205) 评论(0) 推荐(0)
摘要:嘟嘟嘟 SAM。 把第一个串建成后缀自动机,然后放第二个串上去跑。 匹配到了一个节点,对答案的贡献应该是这个点到根节点的路径上的所有节点代表的字符串个数乘以对应的出现次数之和。 每一个点代表的字符串个数就是$len[p] - len[link[p]]$,出现次数就是$size[p]$,而到根节点的这 阅读全文
posted @ 2019-02-28 16:16 mrclr 阅读(183) 评论(0) 推荐(0)
摘要:学了好几天后缀自动机,总算是真正搞懂了,才敢来发博客。 后缀自动机是啥以及怎么构造就不说了,毕竟有很多博客比我讲的好多了。 还是按照国际惯例,推荐几发: hiho一下 127~132周 后缀自动机入门 史上最通俗的后缀自动机详解 先谈谈我对parent tree的理解: 首先由后缀链接构成的树就叫做 阅读全文
posted @ 2019-02-28 16:08 mrclr 阅读(486) 评论(0) 推荐(0)
摘要:嘟嘟嘟 这题今天我们学校模拟出了,我没做出来,搞了个暴力得了30分…… 正解现在看来挺显然的,考场上之所以没想到可能是因为第二题就卡住了吧,导致想第三题的时候有些焦躁。 首先,一个奇环是必须要选出一条边的,而一个偶环是一定不能选出一条边的。这也就可以拿到$n = m$的部分分:一遍dfs求出环的点数 阅读全文
posted @ 2019-02-27 16:30 mrclr 阅读(407) 评论(1) 推荐(2)
摘要:嘟嘟嘟 今天我们模拟考这题,出的是T3。实在是没想出来,就搞了个20分暴力(还WA了几发)。 这题关键在于逆向思维,就是考虑最后的$n$的个点刚开始在哪儿,这样就减少了很多需要维护的东西。 这就让我想到很久以前的一道NOIP题,铺地毯。那是我第一次接触逆向思维,觉得十分的巧妙,原本要写的很麻烦或者干 阅读全文
posted @ 2019-02-26 17:31 mrclr 阅读(445) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 这题真是一道好题。 看到题中的限制,我就一直想dp,可是设出来的状态都无法转移,最后还是看题解了。 题解真是妙,太妙了。 就是我们构造一个矩阵,满足$a[i][j] = a[i][j 1] 2(j 1), a[i][1] = a[i 1][1] 3$。这个矩阵最大不过$12 18$,于是 阅读全文
posted @ 2019-02-25 11:22 mrclr 阅读(241) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 要是求交错序列的个数和就好了,那我一秒就能切。 换成这个,我就不会了。 我一直想枚举1的个数,然后算出在长度为$n$的序列里,有多少个合法的序列,然后又觉得这好像是什么插板法,但是每一个盒子里必须有球,还不会。查了一下发现这东西$O(1)$还求不了,于是彻底放弃了。 正解是这样的,首先还 阅读全文
posted @ 2019-02-24 08:59 mrclr 阅读(254) 评论(1) 推荐(1)
摘要:嘟嘟嘟 前缀和+莫队。 先用前缀和预处理异或,于是问题变成了在$[L - 1, R]$中求两个数异或等于$k$的数对个数。 然后就离线排序,按套路维护两个指针加加减减,并维护一个桶,每一次加$x$,答案就加上$bac[x ^ k]$,并且++\(bac[x]\),删除就减去贡献。 #include< 阅读全文
posted @ 2019-02-23 15:39 mrclr 阅读(177) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 首先问题可以转化一下,变成在$[ \lceil \frac{L}{k} \rceil, \lfloor \frac{R}{k} \rfloor]$中选取$n$个数,使这些数的gcd等于1. 以下的$L$和$R$都是除完$k$的。 但这样做的复杂度是$O(R)$的,过不了。 这时候考虑到一 阅读全文
posted @ 2019-02-22 09:50 mrclr 阅读(276) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 啊我好菜啊,dp从来都做不出来…… 这题我换了好几种状态但就是和题解不一样…… 首先明确的一点是,每行每列最多有两个棋子,然后放置的方案数和顺序是无关的。所以没必要记录是怎么放的。 令dp[i][j][k]表示共$i$行,有$j$列放了1个棋子,有$k$列放了2个棋子(剩下的列就是没放棋 阅读全文
posted @ 2019-02-21 16:21 mrclr 阅读(187) 评论(0) 推荐(0)
摘要:嘟嘟嘟 偶尔翻到的一道题。 50分暴力很好想,对于每一个点进行一次拓扑排序,然后每一次别memset,只清空走过的点,能拿到70分。 正解好像也挺好想,是一个叫“灭绝树”的东西。 对于一个点$i$,他能否被饿死由他的所有食物决定,而他的所有食物能否被饿死有这些食物的lca决定。所以这时候把lca和$ 阅读全文
posted @ 2019-02-20 21:18 mrclr 阅读(104) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 今天复习一下excrt,还算是没忘。 这道题,首先用set预处理一下,找到斩杀每条龙用哪把刀。 然后能列出方程$ATK_i x p_i y = a_i$。这显然是一个不定方程,用exgcd搞一下就行。然后我就想,怎么把所有解合并。假设一个特解是$x'$,那么通解就是$x = x' + k 阅读全文
posted @ 2019-02-20 15:53 mrclr 阅读(174) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 首先有一个dp很好想:dp[i][j]表示前$i$所学校中,第$i$所学校派出了$j$艘划艇的方案数、 然后$O(n ^ 2)$枚举就行了。 但问题是$j$太大了。一般对于大的数,都可以考虑离散化,dp这里也可行。 离散化后,所有的数就被分成一段段的。令dp[i][j]表示前$i$所学校 阅读全文
posted @ 2019-02-19 15:36 mrclr 阅读(268) 评论(0) 推荐(0)
摘要:嘟嘟嘟 正是因为有这样的数据范围,解法才比较暴力。 我们假设取出的长方体常和宽相等,即$a * a * b$。这样我们每次换两条边相等,搞三次就行。 那么对于第$k$层中的第$(i, j)\(点\)(k, i, j)$,求出以这个点为右下角的最大完好的正方形f[k][i][j]。这个可以用倍增求。所 阅读全文
posted @ 2019-02-19 11:44 mrclr 阅读(143) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 这题真的有点神。 首先50分是送的,对于所有$n = k$的情况,直接从后往前扫一遍,碰到一盏灯亮着,就$O(\sqrt n)$操作一次。复杂度上界$O(n \sqrt n)$,但根本达不到。 接着我就想不出来了,题解看了好多篇才懂。 首先要观察出来的是,第$i$个开关的操作只会影响小于 阅读全文
posted @ 2019-02-18 15:11 mrclr 阅读(154) 评论(0) 推荐(0)
摘要:嘟嘟嘟 哈,二合一题目。 刚开始数据范围没看清,满脑子在想二维主席树。越想越觉得不可做。 后来仔细的读了题,才发现这题前后50%的数据对应不同的做法。 对于$R = 1$的数据,就是主席树板子。用主席树维护权值的后缀和,然后贪心往权值大的二分。 需要注意的是相同权值的可能有多本书,要取大于等于$h$ 阅读全文
posted @ 2019-02-17 18:34 mrclr 阅读(98) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 这题感觉真的很简单…… $O(n ^ 2 logn)$的做法特别好理解,但得开O2。 看数据范围,肯定是状压dp。但刚开始我没想通状压啥,因为点与点之间还有顺序问题。但后来发现这个顺序是子问题,转移的时候只用记录最后一个点。 所以dp[i][j]表示选的点集为$i$,最后一个点为$j$的 阅读全文
posted @ 2019-02-17 11:24 mrclr 阅读(160) 评论(0) 推荐(0)
摘要:嘟嘟嘟 无意间看到了一个计算几何。 $n ⇐ 2000$就很愉快了。枚举求完凸包后$O(n ^ 2)$枚举对角线,然后另两个点用旋转卡壳维护就完事了。 结果数据(或是题意)坑人,有的有重复的点,如果选了两个重复的点的话就算成三角形了(凭什么),所以应该求一个最简凸包(就是点最少)。 哎,本来十几分钟 阅读全文
posted @ 2019-02-16 16:49 mrclr 阅读(185) 评论(0) 推荐(0)
摘要:嘟嘟嘟 这题刚开始以为是一个简单题,后来越想越不对劲,然后就卡住了。 瞅了一眼网上的题解(真的只瞅了一眼),几个大字令人为之一振:正难则反! 没错,把点看成区间,比如2, 5, 6, 9就是[1, 1], [3, 4], [7, 8], [10, INF]。然后只要看给定的哪些线段完全包含在这些区间 阅读全文
posted @ 2019-02-16 15:17 mrclr 阅读(371) 评论(0) 推荐(0)
摘要:嘟嘟嘟 这题一直在我的某谷任务计划里,不知为啥一直没做。 现在看起来很水啊,就是离散化+线段树。可能是当时没想明白怎么离散化吧。 就是先把算有区间端点都离线下来,然后把$l - 1, l, l + 1, r - 1, r, r + 1$离散一下。接着就是普通的线段树了。 同时维护区间最小0和1的出现 阅读全文
posted @ 2019-02-15 15:37 mrclr 阅读(362) 评论(0) 推荐(0)
摘要:嘟嘟嘟 好多人(神仙)都说这是NTT例题,然后我就做了…… 做这题,需要一下前置技能: 1.第二类斯特林数 2.NTT 3.没有公式恐惧症 额……不会斯特林数的话(就像我),知道通项公式也行。 这个博客挺好:第二类斯特林数总结 然后就是一顿暴推了。 首先如果直接往原式里带通项公式的话好像搞不出来,这 阅读全文
posted @ 2019-02-15 14:34 mrclr 阅读(195) 评论(0) 推荐(0)
摘要:嘟嘟嘟 对于这种找规律的题,我向来是不会的。 通过大佬们的各种打表找规律、神奇dp等方法,我们得到了答案就是$\lfloor \frac{2 ^ {n + 1}}{3} \rfloor$。 高精是显然的,但是还得用fft,毕竟这是省选题。 刚开始我一运行就RE,都不让你输入,后来才发现是数组开到1e 阅读全文
posted @ 2019-02-14 20:06 mrclr 阅读(262) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 翻某(些)人的做题记录看到这道题的。 知道是期望dp,但就是没想出来,看题解后才知道是状态设的不好。“良好的状态是AC的一半啊……” 我设的是dp[i][j]表示第$i$个人在$j$轮后出招的概率,而题解是$r$轮后,前$i$个人中有$j$个人出招的概率。 剩下的我感觉题解讲的非常清楚, 阅读全文
posted @ 2019-02-14 14:09 mrclr 阅读(176) 评论(0) 推荐(0)
摘要:嘟嘟嘟 都说这题是送分题,但我怎么就不觉得的呢。 看来我还是太弱了啊…… 大体思路就是对于每一个设计方案,答案就是每一个关键点能更新的点的数量之和。 关键在于怎么求一个关键点能更新那些点。 首先这些点肯定是一个包含关键点$a_i$的连续区间,于是可以二分找区间的左右端点。 具体是这样的: 对于一个点 阅读全文
posted @ 2019-02-14 10:50 mrclr 阅读(165) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 贪心+dp。 首先贪心很容易想到,把吃饭时间长的人排在前面。因为打饭时间的顺序对最终答案没有影响,所以可以以吃饭时间为关键字排序。 然后就是dp了(我当时还自信满满的贪心交了一发……显然WA啊) 设dp[i][j]表示前$i$个人在第一个窗口打饭的时间为$j$时所需要的最少总时间。 为什 阅读全文
posted @ 2019-02-14 10:07 mrclr 阅读(121) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 首先瞎想可以知道,一定选相邻两个数之和最大的。这样后面的将军选和前面的前面的一样的勋章就行了。 不过如果$n$是奇数的话就会gg。然后考虑每一个勋章最多有$\frac{n}{2}$个人用,所以$\lceil \frac{\sum a[i]}{\frac{n}{2}} \rceil$个勋章 阅读全文
posted @ 2019-02-13 16:10 mrclr 阅读(252) 评论(0) 推荐(0)
摘要:最近刷题的同时还得填填坑,说来你们也不信,我还不会数位dp。 照例推几篇博客: "数位DP讲解" "数位dp 的简单入门" 这两篇博客讲的都很好,不过代码推荐记搜的形式,不仅易于理解,还短。 数位dp的式子一般是这样的:dp[i][][]表示到第$i$位,而后面几维就因题而异了。 不过通用的思想就是 阅读全文
posted @ 2019-02-13 08:39 mrclr 阅读(169) 评论(0) 推荐(0)
摘要:省选前准备把多项式搞完。(似乎够折磨人的) 首先FFT和NTT板子请出门右转:还是我的博客 0.加减乘 加减有人用我说吗。 乘就是FFT。 1.多项式求逆 对于一个$n - 1$次多项式$A(x)$,求另一个多项式$B(x)$,满足$A(x) * B(x) \equiv 1 \ \ (mod \ \ 阅读全文
posted @ 2019-02-12 21:46 mrclr 阅读(285) 评论(0) 推荐(0)
摘要:"嘟嘟嘟" 由于一些知道的人所知道的,不知道的人所不知道的原因,我来发NOIP2018day2T3的题解了。 (好像我只是个搬运工……) 这题真可以叫做NOIplus了,跟其他几道~~比较水的~~题果然不一样,无论代码量还是思维难度都有一个更高的层次。 我是看了zhoutb的题解的。~~而且抄了他代 阅读全文
posted @ 2019-02-04 12:28 mrclr 阅读(306) 评论(0) 推荐(0)
摘要:嘟嘟嘟 鉴于一些知道的人所知道的,不知道的人所不知道的原因,我来发NOIPday2T1的题解了。 $O(n ^ 2)$的做法自然很暴力,枚举断边断环为链就行了。 所以我是来讲$O(nlogn)$的做法的。 准确说是排序复杂度,剩下的都是$O(n)$的。 大体思想就是通过一遍dfs$O(n)$找到该断 阅读全文
posted @ 2019-02-04 12:22 mrclr 阅读(511) 评论(0) 推荐(0)