摘要:
"传送门" 虽然是D,但是还是Sb题,把模式串跑一遍KMP,然后把按顺序放,每次放完之后跳到对应的前缀,继续放。 如果最后1的数量还有剩,再将最后的位数全部放1 代码: c++ include include include include using namespace std; void rea 阅读全文
摘要:
"传送门" 我一开始想的是考虑每个点的颜色 设的状态就是$f[i][j]$表示$i$子树里有$j$个黑点的$i$子树的收益最大值,后来发现无法转移 那么考虑答案的统计,可以对于边统计答案 那么我们就可以考虑$f[i][j]$为$i$子树里有$j$个黑点对于全局答案的贡献最大值 也就是对于边考虑统计答 阅读全文
摘要:
"传送门" 树形dp 对于每个点维护其子节点的走法是否唯一,每次取最大的并且不为负的(停留次数 1)个子儿子权值,然后判断走法是否唯一 假如有子节点的权值为0,走法也不唯一 代码: c++ include include include include include using namespace 阅读全文
摘要:
背包: 1、 "bzoj2287:【POJ Challenge】消失之物" 2、 "bzoj2748:[HAOI2012]音量调节" 3、 "bzoj2794:[Poi2012]Cloakroom" 4、 "bzoj1190:[HNOI2007]梦幻岛宝珠" 树形dp: 1、 "bzoj1864:[ 阅读全文
摘要:
"传送门" 简单树形dp 设$f[i][j]$为当前为$i$号节点,当前颜色是$j$ 转移枚举一下子节点颜色,判断一下就好了 代码: 阅读全文
摘要:
"传送门" 二进制分组优化背包 理解的差不多了,但是无法具体阐述,留坑 代码: 阅读全文
摘要:
"传送门" 背包,想到一个思路这个题就没了,还是很简单的 将物品按$a_i$从小到大排序,询问按$m$从小到大排序,限制一下$a_i$,最大化$b_i$的最小值就没了 代码: c++ include include include using namespace std; void read(int 阅读全文
摘要:
"传送门" 简单背包,本来sb了,写的一维数组,后来发现会影响后面的,改成二维就好了 wa的代码给出来: c++ include include include include using namespace std; void read(int &x) { char ch; bool ok; fo 阅读全文
摘要:
"传送门" sb背包,先做一遍背包,然后考虑每个物品不用造成的影响 代码: c++ include int n,m,f[2001],a[2001],g[2001]; int main() { scanf("%d%d",&n,&m); for(int i=1;i=a[i];j )(f[j]+=f[j 阅读全文
摘要:
"传送门" 首先知道每段$[i,i+1]$都能提供p1的贡献,预先加上就行了 然后的区间都是3个以上的了 对于p1的贡献,可以考虑中间的数$i$,设$l[i]$为左边第一个大于它的数的位置,$r[i]$为右边第一个大于它的数的位置,对于每一个$l[i]$和$r[i]$可以发现贡献是p1 对于p2的贡 阅读全文