随笔分类 - 动态规划
摘要:#写在前面 大概是高中退役之后第一次写写题解,当然要从基础写起,因为变得更菜了,所以只能写写更水的题目了 #题目链接 ICPC南京M #题解 f(i,j,k)节点i 当前节点是否存活 i及子树内的节点存活数 该状态的所以需要的最小能量值 #代码 #include<bits/stdc++.h> #de
阅读全文
摘要:题目链接 "ARC101E Ribbons on Tree" 题解 令边集$S \subseteq E$ 设$f(S)$为边集S中没有边被染色的方案数 容斥一下,那么$ans = \sum_{S \subseteq E} ( 1)^{ \| S\| f(S) }$ 那么如何求对于原边集的$f(S)$
阅读全文
摘要:[TOC] 题目链接 "bzoj1563: [NOI2009]诗人小G" 题解 $n^2$ 的dp长这样 $f_i = min(f_j + (sum_i sum_j 1 L)^P)$ 设$w_{ij} = (sum_i sum_j 1 L)^P$ 那么化成1D1D的标准形式 $ f_i = min(
阅读全文
摘要:[TOC] 题目链接 "CF868F. Yet Another Minimization Problem" 题解 $f_{i,j}=\min\limits_{k=1}^{i}\{f_{k,j 1}+w_{k,i}\}$ $w_{l,r}$为区间$[l,r]$的花费,1D1D的经典形式 发现这个这是个
阅读全文
摘要:题目链接 "bzoj1722: [Usaco2006 Mar] Milk Team Select 产奶比赛" 题解 dp[i][j][0 / 1] 以i为根的子数中 相邻点对选了j个的最大价值 代码
阅读全文
摘要:题目链接 "CF 633 F. The Chocolate Spree" 题解 维护子数答案 子数直径 子数最远点 单子数最长直径 (最长的 最远点+一条链) 讨论转移 代码 c++ include include include define gc getchar() define pc putc
阅读全文
摘要:题目链接 "bzoj4709: [Jsoi2011]柠檬" 题解 斜率优化 设 $f[i]$ 表示前 $i$个数分成若干段的最大总价值。 对于分成的每一段,左端点的数、右端点的数、选择的数一定是相同的。如果不相同则可以从这个段里删去这个数,答案会更优。 于是就有转移:$f_i=f_{j 1}+a·(
阅读全文
摘要:题目链接 "loj 2071. 「JSOI2016」最佳团体" 题解 树形dp强行01分规 代码 c++ include include include define gc getchar() define pc putchar inline int read() { int x = 0,f = 1
阅读全文
摘要:[TOC] 题目链接 "HDU 4352 XHXJ's LIS" 题解 对于lis求的过程 对一个数列,都可以用nlogn的方法来的到它的一个可行lis 对这个logn的方法求解lis时用的数组进行装压 预处理的到这个的转移 数位dp转移的时候直接得到下一位的lis状态 代码 c++ include
阅读全文
摘要:[TOC] 题目链接 "AGC027 E ABBreviate" 题解 神仙啊 建议查看https://img.atcoder.jp/agc027/editorial.pdf 定义a = 1,b = 1发现在%3的情况下所有变换的相等的 性质:一个字符串,能变成字符c的条件是val[a] == va
阅读全文
摘要:题目链接 "CF643E. Bear and Destroying Subtrees" 题解 dp[i][j]表示以i为根的子树中,树高小于等于j的概率 转移就是dp[i][j] = 0.5 + 0.5 (dp[i][j 1]) 首先是边不连的概率,其次是 include include // de
阅读全文
摘要:T1 化一下试子就ok code c++ include include include define pc putchar define gc getchar inline int read() { int x = 0,f = 1; char c = gc(); while(c '9') c =
阅读全文
摘要:题目链接 "bzoj3257: 树的难题" 题解 dp一下 代码 c++ include include include inline int read() { int x = 0,f = 1; char c = getchar(); while(c '9'){if(c == ' ')f = 1;
阅读全文
摘要:题目链接 "bzoj2111: [ZJOI2010]Perm 排列计数" 题解 序列大小关系构成树形小根堆关系 设f[i]表示大小为i的堆由多少种形态 那么f[n] = f[l] f[r] C(n 1,l),l,r为左右子数大小 对于每个n左子树的大小是一定的,可以处理出 组合数取膜要lucas 如
阅读全文
摘要:题目链接 "hdu4035 Maze" 题解 f[u]表示在节点u通关的所需的边数期望 转移方程分叶子节点和非叶子点讨论 发现都可以化成f[x]=af[1]+bf[dad]+c的形式 然后推一下系数 还是看这个吧https://www.cnblogs.com/Paul Guderian/p/7624
阅读全文
摘要:题目链接 "luogu P2657 [SCOI2009]windy数" 题解 我有了一种所有数位dp都能用记忆话搜索水的错觉 代码
阅读全文
摘要:题目链接 "loj 2009. 「SCOI2015」小凸玩密室" 题解 树高不会很高 include using namespace std; inline int read() { int x = 0,f = 1; char c = getchar(); while(c '9')c = getch
阅读全文
摘要:题目链接 "loj 2552. 「CTSC2018」假面" 题解 本题严谨的证明了我菜的本质 对于砍人的操作好做~~找龙哥就好了~~,blood很少,每次暴力维护一下 对于操作1 设$a_i$为第i个人存活的概率,$d_i$为死掉的概率,$g_{i,j}$是除i以外活了j个人的概率 那个选中i人的答
阅读全文
摘要:题目链接 "bzoj2830: [Shoi2012]随机树" 题解 q1好做 设f[n]为扩展n次后的平均深度 那么$f[n] = \frac{f[n 1] (n 1) + f[n 1] + 2}{n}$ 化简之后也就是$f[n] = f[n 1] + \frac{2}{n}$ q2也好做 设f[i
阅读全文
摘要:题目链接 "bzoj3111: [Zjoi2013]蚂蚁寻路" 题解 发现走出来的图是一向上的凸起锯齿状 对于每个突出的矩形dp一下就好了 代码 c++ / / include include const int maxn = 127; inline int read() { int x = 0,f
阅读全文

浙公网安备 33010602011771号