上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 29 下一页
摘要: 题解 把所有=的点连起来,一个图合法肯定它是一个有向树森林 我们新建一个点,把这个点和其他所有树的树根连起来 定义$dp[u][j]$表示第u个点长度为j的序列的方案数 转移方法是 $dp[u][j] += g[k] \cdot dp[v][h] \cdot \binom{j}{k} \cdot \ 阅读全文
posted @ 2018-09-13 18:49 sigongzi 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题解 怎么觉得都像树dp,不像贪心 但是树dp确实做不了 把每个节点的值设置为樱花+儿子数 把儿子合并到父亲上就是父亲的剩余容量加上儿子的值 1 每次在父亲的时候将儿子的值排序然后能加就加上 因为儿子如果不加进去那么之后的操作与儿子再也没有关系了,儿子影响的只有父亲,那么只是能让父亲一个节点被加入, 阅读全文
posted @ 2018-09-13 16:38 sigongzi 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 题解 把所有边反向 从小到大枚举每个点,把每个点能到达的点挑出来,判完无解后显然是一个DAG,然后在上面求一个编号最大的拓扑序,把这些点全部标记为已选,把每次求得的拓扑序倒序输出 代码 阅读全文
posted @ 2018-09-13 16:34 sigongzi 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题解 如果不加这条边,那么答案是所有点入度的乘积 加上了这条边之后,我们转而统计不合法的方案数 就是相当于统计一条路径从y到x,新图所有点度的乘积除上这条路径所有点的点度乘积 初始化为$f[y] = \frac{\prod_{i = 2}^{n} ind[i]}{ind[y]}$ 转移按照拓扑序转移 阅读全文
posted @ 2018-09-10 20:11 sigongzi 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 题解 记录一个数组dp[i][S][k]表示第i个点,它上面所有的点的状态(参军或者后勤)可以用状态S来表示,一共有k个平民参军的最大收益,当然数组开不下,可以用vector动态开 我们对于每个平民枚举它上面所有贵族的状态来计算如果对于这个平民,上面所有贵族状态为S的时候,收益是多少 然后对于每个贵 阅读全文
posted @ 2018-09-10 19:07 sigongzi 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题解 我们先跑一个斯坦纳树出来 斯坦纳树是什么,是一个包含点集里的点联通所需要的最小的价值,显然他们联通的方式必然是一棵树 我们可以设一个状态为$dis[i][S]$表示以第i个点为根,点集为$S$的点联通所需要的最小价值 我们可以从小到大枚举$S$ 有两种更新方法 $dis[i][S] = min 阅读全文
posted @ 2018-09-10 15:24 sigongzi 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题解 我深思熟虑许久才算是明白个大概的计数问题吧 先是转化成一个矩形,列一条直线y = x,y = x (m + 1)我们从(0,0)走到(n + m + 1,m + 1)就是答案 因为我们起始相当于第一行缺一个0,然后有m+1种转移的方案,每次在距左边界j的地方某个点向上走表示转移到缺j 1,向右 阅读全文
posted @ 2018-09-09 22:39 sigongzi 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题解 换成long double才过……出题人丧心病狂卡精度 只要按照费用排序从小到大排序,一个个插入线性基,插入的时候加上费用即可 代码 cpp include define fi first define se second define pii pair define mp make_pair 阅读全文
posted @ 2018-09-06 19:51 sigongzi 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题解 用一个平衡树维护能攻占到u点的骑士,合并到父亲的时候去掉攻击力小于父亲生命值的那部分,只要把那棵树拆掉并且将树中的所有骑士更新一下答案,用无旋式treap很好写 合并的时候只要启发式合并就可以了 复杂度$O(n \log^2 n)$ 代码 cpp include define fi first 阅读全文
posted @ 2018-09-06 19:04 sigongzi 阅读(212) 评论(0) 推荐(1) 编辑
摘要: 题解 我们把圆拆成两个圆弧,按照圆弧的左右端点排序来增加和删除 那么我们把圆弧按照纵坐标排序,一定是两两不相交的 我们新加入一个圆的时候,找上圆弧的前驱,如果前驱是一个上圆弧,那么这个上圆弧所在的圆就是半径最小且包含它的圆,如果前驱是一个下圆弧,那么包含这个下圆弧的圆就是包含当前圆的圆 然后构建出一 阅读全文
posted @ 2018-09-06 17:19 sigongzi 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 题解 先用kmp求出来一个ed[i][j]表示在母串的第i位是第j个子串的结尾 考虑状压一个二进制位表示这个子串覆盖过没有 对于最大值,记一个dp[S][i]表示子串的使用状况为S,当前为母串的第i位,最大覆盖的个数 每次枚举S一个没有的子串j,把目标状态记成S^(1 include include 阅读全文
posted @ 2018-09-04 15:46 sigongzi 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 题解 点一个技能点叫特征方程 就是 $a_{n + 2} = c_1 a_{n + 1} + c_2 a_{n}$ $x^2 = c_1 x + c_2$ 解出两根来是$x_1,x_2$ 通项就是 $Ax_1^{n} + Bx_2^{n}$把第一项和第二项带入可以解出来A和B 然后为了得到通项是 $ 阅读全文
posted @ 2018-09-02 17:04 sigongzi 阅读(365) 评论(1) 推荐(0) 编辑
摘要: 题解 令x = x t代换一下会发现 $\sum_{i = 0}^{n}a_i (x + t)^i = \sum_{i = 0}^{n} b_{i} x^{i}$ 剩下的就需要写高精度爆算了…… 代码 阅读全文
posted @ 2018-09-02 09:45 sigongzi 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 题解 每次按较长边把矩形分成两半,找一个中间轴,轴上的每个点跑一边最短路更新所有的答案 然后把矩形分成两半,递归下去 代码 cpp include define enter putchar('\n') define space putchar(' ') define pii pair define 阅读全文
posted @ 2018-09-01 12:03 sigongzi 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 题解 之前用的mapTLE了,今天用了个hash把题卡了过去,AC数++ 我们只要保留一个点为中心周围5 5个格子就可以 如果一个点周围5 5个格子有两个不连通,那么显然输出0 如果一个出现了一个割点,那么看看这个割点在不在离中心点的第一层,如果在的话就是1,没有合法割点的话就是2 然后就是特判了… 阅读全文
posted @ 2018-08-30 14:41 sigongzi 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题解 想到n3发现思路有点卡住了 对于每个发射塔把激光塔和敌人按照极角排序,对于一个激光塔,和它转角不超过pi的激光塔中间夹的敌人总和就是答案 记录前缀和,用two Points扫一下就行 代码 cpp include define enter putchar('\n') define space 阅读全文
posted @ 2018-08-29 18:44 sigongzi 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 题解 我居然都没反应过来二分图内选集合两两不能有边是最大独立集了 我退役吧 显然连边只能在奇数和偶数之间,然后二分图求最大独立集是节点数 最大匹配数 啊当然还有对于1的话只能留一个1 代码 阅读全文
posted @ 2018-08-29 13:00 sigongzi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题解 那个限制表示一回头要治完前面的所有病人 我们处理一个g[i][j]表示治疗i到j的病人至少会死多少病人 $g[i][j] = g[i + 1][j] + sum[i + 1,j] + min(sum[i + 1,j],(i j) 3 a[i])$ 每次新加一个i,要么治疗i要么转一圈回来再治 阅读全文
posted @ 2018-08-29 12:08 sigongzi 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题解 写数据结构的时候我代码就会变得非常非常长 一看别人1.5K 2.3K 我6.3K…… orzzzzz 我们很容易想到离线倒着插入,然而,有个小锅叫如果size相同保持原来的重儿子不变 我们需要写个线段树,遇到两个size相同的儿子时看两个儿子下一次插入是什么时候,取下一次插入时间较大的儿子,如 阅读全文
posted @ 2018-08-29 10:15 sigongzi 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 题解 用所有的方案减去有界的方案 我们规定两个前缀后缀相同时长度最短的,设长度为l,因为长度最短所以他们也是无界单词,可以递推 $f[i] = \sum_{j = 1}^{\lfloor \frac{i}{2} \rfloor} f[j] 2^{i 2 j}$ 计算第k大的时候同理,只需要先对枚举的 阅读全文
posted @ 2018-08-28 12:21 sigongzi 阅读(315) 评论(0) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 29 下一页