摘要:
题解 之前尝试HNOI2016的时候弃坑的一道,然后给补回来 (为啥我一些计算几何就写得好长,不过我写啥都长orz) 我们尝试给这个平面图分域,好把这个平面图转成对偶图 怎么分呢,我今天也是第一次会 首先我们把一条边拆成两条有向边,每个点的出边按照弧度排序 显然,相邻的两条边一定夹着一个域 我们从一 阅读全文
摘要:
题解 可持久化可并堆 用$f[i,j]$表示最大的质数标号为i,然后有j个质数乘起来 用$g[i,j]$表示$\sum_{k = 1}^{i}f[k,j]$ 转移是 $f[i,j] = \sum_{k= 1}^{j} g[i 1,j k] p_{i}^{k}$ $g[i,j] += f[i,j]$ 阅读全文
摘要:
题解 题面太长无法阅读系列…… 这里说的选择改变指的是在下面区间里碰上了一个更长的可匹配的地址,如果可匹配但是匹配长度没有当前的值大,那么不算改变 我们建一个可持久化的trie,查询的时候先在前$a 1$个里找到最长的可以得到的地址 然后再在区间的trie里找到那条链上,如果碰到一个结束点且比我们初 阅读全文
摘要:
题解 这显然是一道题拆成两道 然后我胡乱分析了一波,决定第一题就用点度贪心(反正散播的能量肯定能被使用),然后过了 第二题开始mengbier 设$f_u$表示第u个点在父亲发动之后才发动的最小价值 $g_u$表示第u个点在父亲发动之前发动最小价值 转移的时候 $son_f$表示在父亲发动之后才发动 阅读全文
摘要:
题解 我写的应该有bug但是我懒得改了 就是最后一次合并的n要么是0点边集的最后一条边,要么是0点边集最后两条边的差,我们分别拎出来判断一下哪个可行(也许两个都可行,但是我不想多做修改了……) 然后递归处理两边…… 代码 阅读全文
摘要:
题解 我永远都写不对计算几何…… 首先找到反射的线段比较好找,扫一遍所有线段然后找交点在镜子上并且交点离起点最近的那条线段 然后旋转的时候,有可能是顺时针,也有可能是逆时针,要找出法线,然后判断法线和光线的角度然后确定顺时针逆时针 代码 cpp include define enter putcha 阅读全文
摘要:
题解 用lucas随便分析一波就出来了 $\binom{n}{k} = \binom{n % p}{k % p}\binom{n / p}{k / p}$ 那么对于一个余数r,如果r k % p那么会比前一个问题少乘一个$\binom{\lfloor \frac{n}{p} \rfloor % p} 阅读全文
摘要:
题解 维护区间内1的个数,左边数0的长度,右边数0的长度,区间内0区间最长个数,覆盖标记 第一种操作区间覆盖0 第二种操作查询$[l_0,r_0]$中1的个数,区间覆盖0,然后覆盖时找到相对应的区间时对于如果1够把这个区间覆盖掉的话就直接cover,否则就递归该区间,如果能覆盖左区间就覆盖去右区间否 阅读全文
摘要:
题解 一道非常神仙的计数题 如果只有一个点,就是非常简单的树型dp $f_{u} = (siz_{u} 1)! \prod_{v \in son_{u}} \frac{f_{v}}{siz_{v}!}$ $\frac{f_{u}}{siz_{u}!} = \frac{1}{siz_{u}} \pro 阅读全文
摘要:
https://loj.ac/problem/2722 题解 考场上想了60分,但是由于自己不知道在怎么zz,我连那个ai出题人大毒瘤啊 从头到尾说一下部分分 前20给枚举链求链交的$n^2$暴力 再15分,似乎可以线段树,但是我归到S1的部分了 再15分c=0,可以枚举一个公共lca,求两个最小的 阅读全文
摘要:
https://www.hackerrank.com/challenges/how many substrings/problem 题解 似乎是被毒瘤澜澜放弃做T3的一道题(因为ASDFZ有很多人做过,当然,他换了一道更毒瘤的……) 仓鼠在最后一天的时候提了一嘴然后我发现依旧菜菜的不会……(因为太菜 阅读全文
摘要:
题解 我原来根本不会KM 更新每个节点增加的最小值的时候,要忽略那个方访问过的右节点!!! 然后就和最小乘积生成树一样了 代码 cpp include include include include include include define enter putchar('\n') define 阅读全文
摘要:
题解 一道神仙的题 include include include include include define enter putchar('\n') define space putchar(' ') define mp make_pair define pb push_back define 阅读全文
摘要:
题解 感觉极其神奇的状压dp $dp[i][S]$表示答案为i,然后不可选的点集为S 我们每次往答案里加一个点,然后方案数是,设原来可以选的点数是y,新加入一个点后导致了除了新加的点之外x个点不能选,那么方案就是把x个数在y 1(由于空余位置的第一个要放我们选的那个点)个位置里任意排列,方案数是$A 阅读全文
摘要:
题解 由于强化卡都是大于1的,我们分析一下就会发现,尽可能多的用强化卡,至少用一张攻击卡,一定是每组卡牌的最优选择 所以我们把攻击卡和强化卡从大到小排序 我们设$g[i][j]$表示前i张卡牌里选择j张强化卡,能强化的倍数之和 如果$j include include include include 阅读全文
摘要:
题解 加法没写取模然后gg了QwQ,de了半天 思想还是比较自然的,线段树合并的维护方法我是真的很少写,然后没想到 很显然,我们有个很愉快的想法是,对于每个节点枚举它所有的叶子节点,对于一个叶子节点的值为v,然后查询另一棵树小于v的概率和×该节点的p + 大于v的概率和 × 该节点的(1 p),作为 阅读全文
摘要:
题解 考虑kruskal 我们都是从边权最小的边开始取,然后连在一起 那我们选出边权最小的一堆边,然后这个图就分成了很多联通块,把每个联通块内部用矩阵树定理算一下生成树个数,再把联通块缩成一个大点,重复取下一个边权的边进行操作 好想然而不是很好写= =写起来感觉有点麻烦 模数非质数,用long do 阅读全文
摘要:
题解 一道比较神奇的二分图匹配 既然有n个元素,那么能匹配n个位置,我们把这n个位置找出来,是每个区间从左端点开始找到一个没有被匹配到的位置作为该点(我们忽略右端点) 然后我们从价值大到小,然后从左端点的位置开始匹配,如果这个点没有被匹配,就匹配这个点 否则如果这个点已经匹配的区间右端点大于该点的右 阅读全文
摘要:
题解 建出一个主席树,因为出现大于区间一半的数只能有一个,就看看左右区间的增加有没有大于一半,如果有就走向那个子树,如果没有那么返回0 代码 cpp include include include include include include include include include def 阅读全文
摘要:
题解 离线读入,我们发现一个矩形能被保护,矩形内部所有列上必定有一辆车,或者所有行上必定有一辆车 分两次进行处理 第一次按照横坐标把车加进去,然后查询最大横坐标在这个位置的矩形,纵坐标区间里的车出现位置的最小值有没有超过最小横坐标 第二次按照纵坐标把车加进去,然后查询最大纵坐标所在位置的矩形,横坐标 阅读全文