CF1929
最大值 - 最小值
题意:在 \(n\times n\) 的方阵中选择若干个方块,使得至少有 \(k\) 条对角线上有选择的方块。
观察:如果选择第一行的 \(n\) 个,和最后一行的中间 \(n-2\) 个,可以覆盖 \(4n-4\) 条对角线,这其中每一个格子都恰好覆盖两条对角线。
所以如果 \(k\le 4n-4\),输出 \(\lceil \dfrac{k}{2}\rceil\)。否则输出 \(2n-2+(k-(4n-4))\)。
题意:一个赌场。若赢了,则下注的钱变成 \(k\) 倍;否则输光下注的钱。同时赌场不会让你连输 \(x+1\) 局。本金 \(a\) 元,是否有方法获得无限的钱?
题解:必须保证每次下注后若赢了,能把之前下注的钱赚回来。也就是 \(a-s_{i-1}-p_i+kp_i>a\),\(p_i\) 是第 \(i\) 次下注的钱,\(s\) 是 \(p\) 的前缀和。
用这个式子推出 \(p_1\sim p_{x+1}\) 后,看 \(\sum p_i\) 是否超过 \(a\)。若超过,则无解。
这对了吗?
发现 \(p_i\) 增长的非常快,必须在递推 \(p,s\) 的中间及时判断并跳出,不然会爆 long long
。
题意:给定树。选若干个标记点,使得不存在一条简单路径包含三个标记点。求方案数。
\(dp[i][0]\) 表示 \(i\) 的子树内不存在一条简单路径包含 \(3\) 个标记点,也不存在一条包含两个标记点的 向上的链(端点有祖先关系的路径) 的方案数。
\(dp[i][1]\) 表示 \(i\) 的子树内不存在一条简单路径包含 \(3\) 个标记,但是存在一条 …… 的方案数。
转移方程:
\(x\) 不选:\(dp[x][0]\leftarrow \displaystyle\prod_{v\in son[x]}dp[v][0],dp[x][1]\leftarrow \sum_{v\in son[x]}dp[v][1]\)
\(x\) 选:\(dp[x][0]\leftarrow 1,dp[x][1]\leftarrow\displaystyle\sum_{v\in son[u]}dp[v][0]-1\)。
题意:给定 \(k\) 条简单路径,要求每条简单路径上至少一条边被标记,问标记边的方案数。\(k\le 20\)。
状压 DP,\(dp[S]\):要求 \(S\) 中标记的简单路径上至少一条边被标记,标记的方案数。
设每一条边 \(e\)覆盖的简单路径的集合为 \(S_e\)。则状压的转移方程是 \(dp[S|S_e]=\min(dp[S|S_e], dp[S] + 1)\)。
但复杂度不会炸吗?不会,因为不同的 \(S_e\) 个数是 \(O(k)\) 的。证明可以考虑对路径的端点建虚树。
题意:给定 BST,有一些点权值已知,且所有结点值域 \([1,C]\),求方案数。
其实很简单,BST 的中序遍历一定是单调上升的。