随笔分类 -  网站->51nod

摘要:"【51nod】1602 矩阵方程的解" 这个行向量显然就是莫比乌斯函数啦,好蠢的隐藏方法= = 然后我们尝试二分,二分的话要求一个这个东西 $H(n) = \sum_{i = 1}^{n} \mu(i) == d$ 当然$\mu(x)$由于一些很好的性质,这个东西可以用分类讨论做出来 众所周知,求 阅读全文
posted @ 2019-06-24 10:50 sigongzi 阅读(464) 评论(0) 推荐(0)
摘要:"【51nod】1634 刚体图" 给一个左边n个点右边m个点二分图求合法的连通图个数,每条边选了之后会带来价值乘2的贡献 类似城市规划那道题的计数 设$g[i][j]$为左边$i$个点,右边$j$个点的图有多少个(就是边随便连) $f[i][j]$为左边$i$个点右边$j$个点的连通图有多少个 然 阅读全文
posted @ 2019-06-24 08:49 sigongzi 阅读(475) 评论(0) 推荐(0)
摘要:"【51nod】1407 与与与与" 设$f(x)$ 为$A_{i} \& x == x$的$A_{i}$的个数 设$g(x)$为$x$里1的个数 $\sum_{i = 0}^{2^{20}} ( 1)^{g(x)}2^{f(x)}$ $f(x)$就是按位取反之后的一个FMT卷积,把判断条件改成这一 阅读全文
posted @ 2019-06-23 18:18 sigongzi 阅读(525) 评论(0) 推荐(0)
摘要:"【51nod】1776 路径计数" 我们先把前两种数给排好,排好之后会有$a + b + 1$个空隙可以填数,我们计算有$k$个空隙两端都是相同字母的方案数 可以用枚举把第二种数分成几段插进去来算,设这个方案数为$f[k]$ 然后对于一种有$k$个空隙的方案数,枚举剩下的$a + b + 1 k$ 阅读全文
posted @ 2019-06-23 17:58 sigongzi 阅读(380) 评论(0) 推荐(0)
摘要:"【51nod】 2622 围绕着我们的圆环" kcz出的一道比赛题 第一次写带修改的线性基 ps:我觉得我计数计的好麻烦 首先是这个可以认为第二个矩阵是$q$个$s$位数,如果这$q$个数的线性基可以消掉$C$中每一行,那么答案就应该是,设线性基个数是$x$,则应该是$2^{q x}$随便选,然后 阅读全文
posted @ 2019-06-21 07:43 sigongzi 阅读(454) 评论(0) 推荐(0)
摘要:"【51nod】2564 格子染色" 这道题原来是网络流…… 感觉我网络流水平不行…… 这种只有两种选择的可以源点向该点连一条容量为b的边,该点向汇点连一条容量为w的边,如果割掉了b证明选w,如果割掉了w证明选b 那么$p$的限制怎么加呢,新建一个点$i'$,然后$i$往$i'$流一条容量为$p$的 阅读全文
posted @ 2019-06-21 07:40 sigongzi 阅读(284) 评论(0) 推荐(0)
摘要:"【51nod】2027 期望问题" %%%zsy 看不懂题解的垃圾选手在zsy大佬的讲解下终于知道了这道题咋做…… 先把所有$a$从大到小排序 设$f_{i}$为前$i$个数组成的排列的值,然后显然第$i + 1$个插进来的时候,有$i + 1$个位置,而且它比谁都要大 以下默认$f_{1}$到$ 阅读全文
posted @ 2019-06-19 17:28 sigongzi 阅读(187) 评论(0) 推荐(0)
摘要:"【51nod】2591 最终讨伐" 敲51nod是啥评测机啊,好几次都编译超时然后同一份代码莫名奇妙在众多0ms中忽然超时 这道题很简单就是$M$名既被诅咒也有石头的人,要么就把石头给没有石头被诅咒的人,然后互换身份,要么就找一些人构成一个置换圈,内部消化,$N$名有石头没诅咒的人不能把石头给M, 阅读全文
posted @ 2019-06-19 17:12 sigongzi 阅读(216) 评论(0) 推荐(0)
摘要:"【51nod】2590 持续讨伐" 挣扎着卡了卡常过了 记$dp[i][j]$为到第$i$位,和第$i$位相连的部分长度$x^{j}$乘上之前部分所有方案$x^{K}$总和 转移用二项式定理展开即可,若这位不选,可以有$dp[i + 1][j] = dp[i][K]$ 矩阵乘法优化一下,卡常用预处 阅读全文
posted @ 2019-06-19 14:02 sigongzi 阅读(169) 评论(0) 推荐(0)
摘要:51nod 2589 快速讨伐 又是一道倒着推改变世界的题。。。 从后往前考虑,设$dp[i][j]$表示还有$i$个1和$j$个$2$没有填,那么填一个1的话直接转移过来 $dp[i][j] \rightarrow dp[i 1][j]$ 如果填一个$2$要把$A[j]$的那些敌人都扔在这个2的后 阅读全文
posted @ 2019-06-19 11:09 sigongzi 阅读(349) 评论(0) 推荐(0)
摘要:51nod 2606 Secondary Substring 感觉有趣的一道计数,实际上不难 感觉好久没用这种技巧了,导致我还在错误的道路上想了好久。。。 观察题目性质,可以发现就是左边第一次出现两遍的数字的位置$[i,n]$是一个合法的次级子串 右边第一次出现两遍的数字的位置$[1,j]$是一个合 阅读全文
posted @ 2019-06-13 17:40 sigongzi 阅读(267) 评论(0) 推荐(0)
摘要:题解 一道比较神奇的二分图匹配 既然有n个元素,那么能匹配n个位置,我们把这n个位置找出来,是每个区间从左端点开始找到一个没有被匹配到的位置作为该点(我们忽略右端点) 然后我们从价值大到小,然后从左端点的位置开始匹配,如果这个点没有被匹配,就匹配这个点 否则如果这个点已经匹配的区间右端点大于该点的右 阅读全文
posted @ 2018-06-21 08:33 sigongzi 阅读(244) 评论(0) 推荐(0)
摘要:题解 我们由于莫比乌斯函数如果有平方数因子就是0,那么我们可以列出这样的式子 $\sum_{i = 1}^{n} \sum_{d|i} (1 |\mu(d)|)$ 然后枚举倍数 $\sum_{t = 1}^{n} \sum_{d = 1}^{\lfloor \frac{n}{t} \rfloor} 阅读全文
posted @ 2018-06-20 07:13 sigongzi 阅读(174) 评论(0) 推荐(0)
摘要:题解 我们把这个函数的递归形式画成一张图,会发现答案是到每个出度为0的点的路径的方案数 这个可以用组合数算 记录一下P[i]为i减几次PI减到4以内 如果P[i + 1] P[i],那么转向的路径走P[i]次,否则走P[i] 1次 代码 cpp include include include inc 阅读全文
posted @ 2018-06-19 09:50 sigongzi 阅读(125) 评论(0) 推荐(0)
摘要:题解 我们发现每次决策的时候,我们可以判断某个点的决策,至少小于等于几个点或者至少大于等于几个点 我们求最大值 dp[u][1 / 0] dp[u][1]表示u这个点先手,至少大于等于几个点 dp[u][0]表示u这个点后手走,至少大于等于几个点 转移的时候从dp[u][1]取所有点dp[v][0] 阅读全文
posted @ 2018-06-15 22:06 sigongzi 阅读(203) 评论(0) 推荐(0)
摘要:题解 这个字符集很小,我们可以把每个字符拿出来做一次匹配,把第一个字符串处理每个出现过的该字符处理成一个区间加,即最后变成第一个字符串的该位置能够匹配某字符 例如对于样例 10 4 1 AGCAATTCAT ACAT 我们做A的时候,把第一个串处理成 AAAAAA00AA0 第二个串 A0A0 那么 阅读全文
posted @ 2018-06-15 08:09 sigongzi 阅读(232) 评论(0) 推荐(0)
摘要:题解 很显然我们求出一组线性基来,如果有M个基,那么可以构造N M + 1个最大异或值 而对于线性基中的元素,除了最大的元素,我们用最大异或值异或掉每个元素累加进答案 而不是把线性基中的元素处理成一个下三角矩阵! 代码 阅读全文
posted @ 2018-06-14 16:50 sigongzi 阅读(213) 评论(0) 推荐(0)
摘要:题解 最近一遇到神仙题一卡就好久……做点水题滋养一下自己吧= = 显然我们发现放一个方块的奇偶性不会改变,所以格子如果黑格子是奇数,那么就是No 我们发现每个2 × 3的方格里的2 × 1的黑格子都可创造并且平移,这样我们就可以愉快地造出4的倍数了,所以这种情况只要判黑格子奇偶性就行 那么2×2的特 阅读全文
posted @ 2018-06-14 14:56 sigongzi 阅读(175) 评论(0) 推荐(0)
摘要:题解 FWT板子题 可以发现 $dp[i][u] = \sum_{i = 0}^{N 1} dp[i 1][u xor (2^i)] + dp[i 1][u]$ 然后如果把异或提出来可以变成一个异或卷积 也就是另一个数组里只有$0$,$2^0$,$2^1$...$2^{n 1}$有值 用FWT变换一 阅读全文
posted @ 2018-06-13 16:43 sigongzi 阅读(163) 评论(0) 推荐(0)
摘要:题解 这题还要判无解真是难受…… 我们发现我们肯定能确定1的位置,1左右的两个区间是同理的可以确定出最小值的位置 我们把区间最小值看成给一个区间+1,构建出笛卡尔树,就求出了每一次取最小值和最小值左右的区间大小 然后就相当于左右子树的排列方式,乘上把左右子树那么多个元素选出左子树个数和右子树个数那么 阅读全文
posted @ 2018-06-12 21:31 sigongzi 阅读(408) 评论(0) 推荐(0)