「刷题笔记」DP优化-状压-EX】的更多相关文章

棋盘 需要注意的几点: 题面编号都是从0开始的,所以第1行实际指的是中间那行 对\(2^{32}\)取模,其实就是\(unsigned\ int\),直接自然溢出啥事没有 棋子攻击范围不会旋转 首先,我们得找出所有满足条件的同一行的状态,在此之前,我们要先处理出状态\(S\)下,第\(k\)行能被棋子攻击到的格子\(at[k][S]\) 先钦定自己不能攻击自己 再枚举每一个状态中每一个1,然后对攻击范围模板进行左移/右移操作,把这一行这种状态能攻击到的格子或上他 接下来,枚举每一个状态,如果\(…
因为篇幅太长翻着麻烦,计划把DP拆成几个小专题,这里原文只留下状压,其他请至后续博文. 状态压缩优化 所谓状态压缩,就是将原本需要很多很多维来描述,甚至暴力根本描述不清的状态压缩成一维来描述. 时间复杂度一般为\(O(2^n\cdot n^2)\)的形式 (ZZ并不太会算复杂度,如果博客中复杂度有错误,请指出并尽情嘲讽我,谢谢!) 眼界极窄的ZZ之前只是听说过这个名字--先感谢Lrefrain学长把这个东西介绍给我orz 使用状态压缩优化的常见情景: 这个数据范围怎么有一维出奇的小啊? 互不侵犯…
自动AC机 Keywords Research 板子题,同luoguP3808,不过是多测. 然后多测不清空,\(MLE\)两行泪. 板子放一下 #include<bits/stdc++.h> using namespace std; #define ll int #define ull unsigned long long #define ZZ_zuozhe int main() #define S 1000010 ll n; char tmp[S]; ll vcn=0; struct ve…
Bovine Genomics 暴力 str hash+dp 设\(dp[i][j]\)为前\(i\)组匹配到第\(j\)位的方案数,则转移方程 \[dp[i][j+l]+=dp[i-1][j] \] (\(j,l\)为满足题意的情况 通配符匹配 读题杀.dp 注意星号是可以匹配0个的. 按通配符分段,01表示是否能取到. 蚯蚓排队 留坑. Seek the Name,Seek the Fame kmp(利用next数组) 动物园 现场教学可还行 直接求就好 Censoring 模拟一个栈,ne…
斜率优化,是一种利用斜率的优化(废话) 关于数论:咕咕咕 部分内容参考自学长 如果有这样的一个状态转移方程: \[f[i]=\min\limits_{j=L_j}^{R_j}\{f[j]+val(j,i)\} \] 如果\(val(j,i)=A(i)+B(j)\)可以用单调队列解决 当\(val(j,i)=(A(i)+B(j))^2\)时,就可以考虑斜率优化. 关键词:斜率,凸包,单调队列 特别行动队 看到这题,暴力\(DP\)应该比较好想: \[f[i]=\max\limits^{i-1}_{…
单调队列优化 眼界极窄的ZZ之前甚至不会单调队列--(好丢人啊) 单调队列优化的常见情景: 转移可以转化成只需要确定一个维度,而且这个维度的取值范围在某个区间里 修剪草坪 这个题学长讲的好像是另外一个思路,但是码的时候不知不觉就偏到另一个思路里去了--改天也打打试试 需要注意的: 这题中如果有多个满足最大值,我们应该取最靠前的,所以在弹队的时候用的是> 这个题中单调队列维护的是\(dp_{j,0}-pre_j(i-k-1\leq j \leq i)\),这里的\(j\)是入队时的下标 精华: f…
板子 ll lg[40]; ll dep[N],fa[N][40]; ll dis[N]; void dfs(ll u,ll f) { dep[u]=dep[f]+1; fa[u][0]=f; for(int i=1;i<=lg[dep[u]];i++) { fa[u][i]=fa[fa[u][i-1]][i-1]; } for(int i=head[u];i;i=next[i]) { ll v=e[i].v; if(v==f)continue; dis[v]=dis[u]+e[i].w; df…
贴一个讲得非常详细的\(tarjan\)入门教程 信息传递 讲个笑话:我之前用并查集求最小环过的这题,然后看见题目上有个\(tarjan\)标签 留下了深刻的印象:\(tarjan\)就是并查集求最小环 丢死人了 那么这题题意也很明确了,就是求一个最小环,并查集啥的就不想他了,考虑一下\(tarjan\)的做法 这道题里,就是我们求出每个强连通分量,然后看每个强连通分量最小大小是多少就好 贴一下板子qwq #include<bits/stdc++.h> using namespace std;…
<Data Structures and Algorithm Analysis in C>学习与刷题笔记 为什么要学习DSAAC? 某个月黑风高的夜晚,下班的我走在黯淡无光.冷清无人的冲之大道上,同时心里冒出一个强烈的想法:我不要再过这种无休止地加班.整天干着繁重琐碎的事情的生活了!我要回去读书!我要考研!在接下来的一个多月中,我不断在考研和换工作之间徘徊,最后我得出一个结论:我不知道读研好还是换工作好,但我知道把自己感兴趣的知识学好总不会错.数据结构是我们专业大二下学期的一门选修课,但当时正…
PTA刷题记录 仓库地址: https://github.com/Haorical/Code/tree/master/PTA/GPLT 两周之内刷完GPLT L2和L3的题,持续更新,包括AK代码,坑点,和少量评论 用一周刷完了l2的40道题 刷题笔记 dj vis数组置为真 链表判空不用数量,判断结尾 注意数据类型比较,段错误可能int double比较/无限循环/数组给小了 指针定义时赋空 镜像树left right互换就行 union()时间过长 建议不用 bfs入队判空 并查集有时不用路…