摘要: "题目链接" 很显然可以发现一个结论,每一行或每一列都最多只有两个棋子。 设$f[i][j][k]$为算到第$i$行,有$j$列有一个棋子,有$k$列有两个棋子。 然后转移就很显然了: 设当前枚举到第$i$行,有$j$列有一个棋子,有$k$列有两个棋子, 若当前行不放棋子, $$ f[i+1][j] 阅读全文
posted @ 2018-10-25 21:44 Hyscere 阅读(99) 评论(0) 推荐(0) 编辑
摘要: "题面描述" 状压dp。 设$f[i][sta]$为第$i$层状态为$sta$的方案数。 然后每次可以枚举上一层的状态以及本层的状态,然后如果不冲突且满足地图的要求,则转移。 时间复杂度$O(2^{2m} n m)$. 然而过不了...大了一点点。考虑对于每一层预处理出哪些状态可行,可以省掉$O(m 阅读全文
posted @ 2018-10-23 21:55 Hyscere 阅读(147) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 状压$dp$. 对于$30\%$的数据,$n\leq 30$,质因数的种类最多只有10个,所以可以压缩状态,设状态$sta$为第$i$位为集合中是否有第$i$个质因数。 设$f[i][s1][s2]$表示当前考虑到第$i$个数,第一个集合状态为$s1$,第二个集合状态为$s2$的方案数 阅读全文
posted @ 2018-10-23 21:45 Hyscere 阅读(151) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 状压$dp$ 根据套路,先设$f[sta]$为状态为$sta$时所用的最小分组数。 可以发现,这个状态不好转移,无法判断是否可以装下新的一个物品。于是再设一个状态$g[sta]$表示状态为$sta$时 每组剩下的体积的最大值 的最大值,当枚举状态为$sta$,枚举到第$i$个时,可以得 阅读全文
posted @ 2018-10-22 20:44 Hyscere 阅读(128) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 状压$dp$。 注意到$n\leq 20$且每个只能用一次,所以很显然可以压缩每部电影看过没,记$f[sta]$为状态为$sta$时最多可以看多久。 转移时先枚举状态,然后枚举没看过的电影,二分出一个小于$f[sta]$的时间点进行转移。 答案就是所有大于$L$的状态的$1$的个数的最 阅读全文
posted @ 2018-10-22 19:49 Hyscere 阅读(99) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 线段树$+dp$. 先用线段树预处理出每个线段从左边和右边掉落到哪里,记为$f[i][0/1]$. 然后记$g[i][0/1]$为到达第$i$个线段的左边或右边所要的最小时间,注意这里并没有算纵坐标的掉落时间,因为这个可以在最后统计答案时加上一个初始的纵坐标。 然后转移时从上到下把线段 阅读全文
posted @ 2018-10-22 19:39 Hyscere 阅读(196) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 树上背包。 设$f[i][j][k]$表示$i$节点有$j$个来合成高一级的装备,买$i$节点及其子树的装备共花了不大于$k$元可以得到的最大力量值。 对于每一颗树做$tree~dp$转移,如果是叶子节点就直接算, 否则先根据儿子的限制以及钱的限制处理出最多可以买几个,然后枚举当前这件 阅读全文
posted @ 2018-10-22 19:29 Hyscere 阅读(176) 评论(0) 推荐(0) 编辑
摘要: T1 : 题意简述 : 三维偏序问题,每一维都是一个排列,求满足$(a_i pragma GCC optimize(3) define ll long long using namespace std; void read(int &x){ x=0;int f=1;char ch=getchar() 阅读全文
posted @ 2018-10-19 11:02 Hyscere 阅读(214) 评论(0) 推荐(0) 编辑
摘要: T1 : 题意简化 : 给出$n$个区间和$m$个点,问一个区间和一个点匹配,最多可以匹配多少个点。 其中,$n\leq 2e5,m\leq2e5,a[i]\leq1e9$. 贪心,给点排序,然后把区间以右端点为关键字用一个set维护,每次对于一个点取右端点大于且最靠近这个点的区间。 ~~~c++ 阅读全文
posted @ 2018-10-17 20:34 Hyscere 阅读(173) 评论(0) 推荐(0) 编辑
摘要: T1 : 求给定集合有多少个非空子集可以分割成两个集合,使得它们的和相等。 其中:$n\leq20~,~a[i]\leq1e8$ 题目可以转化成:给每个数前添加一个系数$p\in[ 1,1]$,使得和为0的方案数。 由于$n$比较小,所以可以考虑爆搜。朴素的爆搜可以枚举每个数不选,第一个集合,第二个 阅读全文
posted @ 2018-10-16 18:08 Hyscere 阅读(153) 评论(0) 推荐(0) 编辑