摘要: 状压DP 先预处理出来pre[i][S]表示对于第i个位置,往后5个的状态是S时,开心的小朋友的数量。 然后dp的时先枚举前5个的状态,再dp。 因为围栏是环状的,之后统计答案时统计的是那个f[n][S]=startS的。 #include <iostream> #include <cstdio> 阅读全文
posted @ 2018-10-11 16:18 SWHsz 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 二分答案的大水题。二分一下W,然后记录一下前缀满足wi≤W的个数,前缀满足这个条件的vi的和,check的时候直接O(n+m)的check就行了。 记得开long long #include <iostream> #include <cmath> #include <cstdio> #include 阅读全文
posted @ 2018-10-11 09:12 SWHsz 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 树形DP. 用倍增处理出来每个点往上能延伸出去的最远路径,nlogn 对于每个节点,如果它能被后代使用过的点覆盖,就直接覆盖,这个点就不使用,否则就ans++,让传的Max改成dp[x] #include <iostream> #include <cstdio> #include <cstring> 阅读全文
posted @ 2018-10-11 08:32 SWHsz 阅读(321) 评论(0) 推荐(0) 编辑