摘要:
状态压缩 $\operatorname{DP}$ 是将比较复杂的状态映射成数字后进行 $\operatorname{DP}$ 。 难点:设计状态 基本位运算 枚举子集 for(int i=s;i;i=(i-1)&s) O(1) 计算 int 以内每一个数含有多少个 1 预处理出 $2^{16}$ 次 阅读全文
摘要:
感觉数位 DP 一般都能一眼看出来,而且代码长得也差不多诶! dfs 式数位 DP 模板 ll dfs(ll len,bool Limit,bool zero,ll …… ) // 其他各种条件 { if(len>w) return zero^1; // 注意!!!特判 0 if(!Limit && 阅读全文
摘要:
dp 的转移一般有两种:填表、刷表。 填表是用用过去的状态推出现在的状态,而刷表是用现在的状态推出以后的状态。 有时候如果只定义一个状态发现难以转移,可以考虑定义多个状态,存储不同信息来方便转移。 P2577 [ZJOI2004]午餐 $\texttt{solution}$ 想到贪心: 吃饭慢的先打 阅读全文
摘要:
P5482 [JLOI2011]不等式组 超烦人的细节题!(本人调了两天 QAQ ) 这里介绍一种只用到一只树状数组的写法(离线)。 树状数组的下标是:所有可能出现的数据进行离散化之后的值。 其含义为:当 \(x\) 离散化后值为 \(i\) 时能满足的不等式个数为 \(query(i)\) 个。 阅读全文
摘要:
P4099 [HEOI2013]SAO 类型:树形 \(\text{DP}\) 这里主要补充一下 \(O(n^3)\) 的 \(\text{DP}\) 优化的过程,基础转移方程推导可以参考其他巨佬的博客(题解)。 令 \(f[x][p]\) 表示在以 \(x\) 为根的子树中,\(x\) 在拓扑序排 阅读全文
摘要:
模板 P3834 【模板】可持久化线段树 2(主席树) 区间求第 \(k\) 大 模板代码 #include<bits/stdc++.h> using namespace std; #define Maxn 200005 typedef long long ll; inline int rd() { 阅读全文
摘要:
重链剖分 P3384 【模板】轻重链剖分/树链剖分 \(/\) 模板代码: 注意: 如果有 \(0\) 号节点,并默认重儿子是零号节点,复杂度会退化为 \(O(n^2)\) 。原因: 代码第一次遍历默认重儿子是0,所以无法保证每次找到重儿子。如果重儿子的节点数小于根节点,那么重儿子不会被记录。 而在 阅读全文
摘要:
我是 EricQian,ZJ OIer 有些博客上了密码,是我所在的班号,一个两位数。 开机选项 下载地址(百度网盘) 提取码:jqyb Div-c++ 编译选项: -Wl,--stack=1024000000 -Wall -Wextra -Wshadow -lm -O2 -std=c++14 // 阅读全文