摘要: ${\color{Cyan}{>>Question}}$ 简单的状压$dp$, 和P1171 售货员的难题简直一模一样(但也正因为此把我坑了) 令$f[i][j]$表示状态$i$,最后在$j$的最短路最长路(又坑了我) 有$$f[i][j] = max\left\{f[i-\left \{ j \r 阅读全文
posted @ 2019-08-15 15:29 陈星卿 阅读(190) 评论(0) 推荐(0) 编辑
摘要: ${\color{Cyan}{>>Question}}$ 一道水题 注意题中只要求扩展两层以内的开关 所以预处理出按了开关的影响,利用异或的性质就能很好地解决 然后$dfs$时枚举每个开关按或不按(因为即使再按也是相同的情况) 就没了$?$ 没了 代码如下 阅读全文
posted @ 2019-08-15 10:40 陈星卿 阅读(149) 评论(0) 推荐(0) 编辑
摘要: ${\color{cyan}{>>Question}}$ 题意让我们用最少的代价把叶子节点到根节点的距离调成相同 每次向最长链看齐即可 令$f[u]$表示以$u$为根到叶节点的最长链长度 则$$f[u] = max\left\{f[v]+e(u,v)\right\}$$ 统计答案 $$ans = \ 阅读全文
posted @ 2019-08-15 08:35 陈星卿 阅读(168) 评论(0) 推荐(0) 编辑
摘要: ${\color{Cyan}{>>Question} }$ 一道简单的树形$dp$,但细节上要较为注意 $1.$ 递归读入 $2.$ $cst$数组要$*2$(因为要逃出) $3.$ $m$ 要$-1$(严格小于) 令$f[u][j]$ 表示以$u$为根的子树用$j$秒所能获得的最大画数 如果不是二 阅读全文
posted @ 2019-08-14 19:43 陈星卿 阅读(110) 评论(0) 推荐(0) 编辑
摘要: ${\color{cyan}{>>Question}}$ 题中说的分离出一颗大小为$p$的子树,其实更好的理解是保留下一颗子树(其实是一个意思) 所以又回到了常见的树上背包模型 令$f[u][j]$表示以u为根的树(不与父亲相连),保留j个节点(包括根)的最小切割次数 有$$f[u][j] = mi 阅读全文
posted @ 2019-08-14 17:08 陈星卿 阅读(178) 评论(0) 推荐(0) 编辑
摘要: ${\color{cyan}{>>Question}}$ *不好确定的可以加进状态 方程: 叶节点(边界) $$f[u][i][j] = c[u]*(a[u]+i)*(b[u]+j)$$ 非叶节点: $$f[u][i][j] = min(f[ls][i+1][j]+f[rs][i][j],f[ls] 阅读全文
posted @ 2019-08-14 10:17 陈星卿 阅读(188) 评论(0) 推荐(0) 编辑
摘要: https://www.luogu.org/problemnew/show/P1776 模版的多重背包,但朴素肯定不行,这里采用单调队列优化 朴素方程式 变形 (第一维压掉) 如此,便可以用分mod用单调队列优化啦,代码如下 阅读全文
posted @ 2019-07-12 17:12 陈星卿 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 标准的二分图判定,没什么好说的(很久以前打的,很丑) 阅读全文
posted @ 2019-07-10 20:26 陈星卿 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #define ll long long 3 #define re register 4 using namespace std; 5 6 template void in(T &x) { 7 x = 0; T f = 1; char ch = getchar(); 8 while(!isdigit(ch)) {if(ch == '-... 阅读全文
posted @ 2019-06-10 17:12 陈星卿 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #define up(i,l,r) for(register int i = (l); i = (r); i--) 4 #define ll long long 5 using namespace std; 6 template void in(T &x){ 7 x = 0; T f = 1; char ch = getchar(); 8 ... 阅读全文
posted @ 2019-05-11 11:26 陈星卿 阅读(135) 评论(0) 推荐(0) 编辑