摘要: link 其实可以用$sum(i,j)$表示从$i$到$1$的$k$次方的值,然后就是$lca$的基本操作 注意,能一起干的事情就一起搞,要不会超时 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> # 阅读全文
posted @ 2018-12-08 16:24 siruiyang_sry 阅读(141) 评论(0) 推荐(0) 编辑
摘要: link 其实就是一个比较简单的$IOI$题。简单$dp$就行,设$5$维$dp$即可 最后在滚动一下,判一下可行性即可。 #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespac 阅读全文
posted @ 2018-12-08 13:57 siruiyang_sry 阅读(145) 评论(0) 推荐(0) 编辑
摘要: link 其实就是再问你在任意行或列棋子数量不超过$2$,所以考虑$dp$维护这个结论 我们可以直接限制行,开维限制列,所以设$dp(i,j,k)$为前$i$行有$j$列有$1$个棋子,有$k$列有$2$个棋子 然后分类讨论一下这行取一个,两个,或者不取的个数。最后累加即可 详情见代码 #inclu 阅读全文
posted @ 2018-12-08 10:08 siruiyang_sry 阅读(150) 评论(0) 推荐(0) 编辑
摘要: link 如果没有环的话其实就是一个比较水的树形背包。但是现在有环,并且当我们选择环中任何一点时其他环上的点也都要被选择,然后就可以缩点解决环的问题。 然后缩点后会形成一个森林,我们建虚点$0$连向各自联通块的根,然后做一个树上背包即可 #include<iostream> #include<cst 阅读全文
posted @ 2018-12-08 09:01 siruiyang_sry 阅读(134) 评论(0) 推荐(0) 编辑