随笔分类 - 动态规划——树形DP
摘要:https://acm.hdu.edu.cn/showproblem.php?pid=7115 题意: 一棵树,删点。要求不能删出孤立的点。问有多少种删除的方案。 一道挺简单的树形dp,可惜比赛的时候没看这个题 f[i][0]表示i的子树中,点i删除的方案数。要求i的剩余子树是合法的删点。 f[i]
阅读全文
摘要:https://ac.nowcoder.com/acm/contest/11168/C 类似于dp求树的直径 在以x为根的子树内,求x的子树里的最大和次大的x的子树的子树和,要求最大和次大不能在x的同一个子节点里。 每次以子节点的最大子树和更新x的最大子树和 最后再用x的子树和更新x的最大子树和 #
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5909 题意: 给出一颗带点权的树,输出有多少联通块的点权异或和=[1,m) dp[x][i] 以x为根的子树中,联通块内一定有x,目前异或和为i 的联通块 个数 dp[x][i] = dp[x][i] + Σ Σ
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=5290 题意: 一棵树,每个点有一个权值wi,选择点i即可破坏所有距离点i<=wi的点,问破坏所有点 最少需要选择多少个点 题解:同JLOI2016 侦察守卫 http://www.cnblogs.com/TheR
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=4557 假设当前到了x的子树,现在是合并 x的第k个子树 f[x][j] 表示x的前k-1个子树该覆盖的完全覆盖,而且还能向上覆盖j层的最小代价 这个向上是针对x来说的,即可以向x的祖先方向再覆盖j层
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3572 明显需要构造虚树 点属于谁管理分三种情况: 1、属于虚树的点 2、在虚树上的边上的点 3、既不属于虚树的点,又不属于虚树上的边的点 第一种情况: 先做一遍树形dp,得到子树中距离它最近的点 再d
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=2286 虚树上树形DP 2286: [Sdoi2011]消耗战 Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1304 结论1:根节点一定染色 如果根节点没有染色,选择其子节点的一个颜色,那么所有这个颜色的子节点都不用染色。答案不会更差。 结论2:相邻节点不会染同一种颜色 将深度更大的那个有色节点变成无色仍然满足
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1864 1864: [Zjoi2006]三色二叉树 Description Input 仅有一行,不超过500000个字符,表示一个二叉树序列。 仅有一行,不超过500000个字符,表示一个二叉树序列。
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/upload/201712/prob12.pdf dp[len][0/1] 表示节点表示区间长度为len,节点选/不选的 最大匹配 sum[len][0/1] 表示对应dp[len][0/1]的方案数 这里选节点即选节点与其父节点的边
阅读全文
摘要:期望得分:100+100+30=230 实际得分:0+0+0=30 T1 直接模拟 #include<cstdio> #include<iostream> using namespace std; void read(int &x) { x=0; char c=getchar(); while(!i
阅读全文
摘要:期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a。。。。。。。。a 如果 第1个a 后面出现的第1个b~z 是右端点,且在第2个a之前,那么有贡献 如果 第2个a 前面出现的第1个b~z 是左端点,且在第1个a
阅读全文
摘要:期望得分:76+80+30=186 实际得分:72+10+0=82 先看第一问: 本题不是求方案数,所以我们不关心 选的数是什么以及的选的顺序 只关心选了某个数后,对当前gcd的影响 预处理 cnt[i] 表示 i的倍数有多少个 g[i][j] 表示gcd(i,第j张卡片上的数) dp[i][j]
阅读全文
摘要:期望得分:0+60+60=120 实际得分:0+30+60=90 令g=gcd(X11,X12,X13……) 则行列式可能为D的充要条件为g|D 1、g|D为必要条件: 由定义来算行列式的时候,每一项都要从第一行里取一个数,所以g|D 2、g|D为充分条件: 首先可以通过矩阵的初等变换,将矩阵X消成
阅读全文
摘要:期望得分:100+100+0=200 实际得分:5+0+0=5 每加入一个数,x的因数位置++ 注意:根号x枚举时,如果x是完全平方数,根号x会重复累计2次,要减去 考场上没减,5分 /(ㄒoㄒ)/~~ #include<cmath> #include<cstdio> #include<iostre
阅读全文
摘要:5分。。。。 T1 LOJ 计算几何瞎暴力 维护以下操作: 1、序列末尾加一个数 2、序列全体从小到大排序 3、查询区间和 4、序列全体异或一个数k 序列全体异或一个数,很明显是trie树 那么序列全体从大到小排序就是把一个个数插入trie树的过程 那么就需要一个数组,存储还没有插入trie树的数
阅读全文
摘要:T1 [HAOI2016]放棋子 https://daniu.luogu.org/problem/show?pid=3182 障碍交换行不影响 所以第i列有障碍的行换到第i行 然后错排公式 本校自测要写压位高精,不写了。。。 #include<cstdio> #include<cstring> #i
阅读全文
摘要:T1 [HAOI2010]软件安装 https://daniu.luogu.org/problem/show?pid=2515 树上背包,如果有i必须有j,j作为i的父节点 O(nm²) #include<cstdio> #include<cstring> #include<iostream> #i
阅读全文
摘要:今天又爆零啦。。。 T1 题目描述 #define goodcatdog gcd #define important i #define judge j 神说 每个梦想就是一轮月亮,高高地孤寂地挂在清冷的夜空。为了让月亮不再孤独,灯神给她找了好多好多伴儿。现在天空上就有n轮月亮啦! 月亮在天上跟相邻
阅读全文
摘要:循环移动 (cyclic.cpp/c/pas) (1s/256M) 问题描述 给出一个字符串S与N个操作。每个操作用三元组(L, R, K)进行描述:操作将字符串第L个到第R个位置构成的子串循环移动K次。一次循环移动就是将字符串最后的这个字符移动到第一位,其余的字符顺次后移。 例如,对于字符串aba
阅读全文