随笔分类 -  dp--状态压缩

摘要:bzoj1087 洛谷P1896 想了很久,太久没做状压都已经不会了。。。 状压每一行就好了 1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #include<vector> 5 using namespace std; 阅读全文
posted @ 2018-11-05 14:22 hehe_54321 阅读(123) 评论(0) 推荐(0)
摘要:Cunning Gena CodeForces - 417D 题意 先将小伙伴按需要的监视器数量排序。然后ans[i][j]表示前i个小伙伴完成j集合内题目所需最少钱。那么按顺序枚举小伙伴,用ans[i-1][j]更新ans[i][j]和ans[i][j | 第i个小伙伴能完成题目的集合](更新后一 阅读全文
posted @ 2017-11-09 19:26 hehe_54321 阅读(225) 评论(0) 推荐(0)
摘要:Hie with the Pie POJ - 3311 这题是类TSP,与TSP区别是可以重复经过节点,只需floyed预处理出指定两点间(走过任意数量点)的最短路即可。 阅读全文
posted @ 2017-11-09 19:14 hehe_54321 阅读(162) 评论(0) 推荐(0)
摘要:A Simple Task CodeForces - 11D 题意:输出一个无向图的简单环数量。简单环指无重复边的环。保证图无重边自环。 ans[i][j]表示"包含i中的点,以i中第一个点为起点,以j为终点"的路径条数。 对于某个i,枚举当前终点j(显然不能是首个点),产生一个状态。再枚举上一次终 阅读全文
posted @ 2017-11-08 22:25 hehe_54321 阅读(268) 评论(0) 推荐(0)
摘要:Mondriaan's Dream POJ - 2411 可以用状压dp,但是要打一下表。暴力枚举行、这一行的状态、上一行的状态,判断如果上一行的状态能转移到这一行的状态就转移。 状态定义:ans[i][S]表示i行前已经全部填满,i行已经填上的列为集合S。如果有竖着的,全部当做用这一行的去补满上一 阅读全文
posted @ 2017-11-08 18:43 hehe_54321 阅读(206) 评论(0) 推荐(0)
摘要:Marriage Ceremonies LightOJ - 1011 常规状压dp。popcount(S)表示S集合中元素数量。ans[S]表示S中的女性与前popcount(S)个男性结婚的最大收益。 那么,$ans[S]=max\{ans[S-p]+a[popcount(S)][p]\}$ 老代 阅读全文
posted @ 2017-10-29 19:18 hehe_54321 阅读(160) 评论(0) 推荐(0)
摘要:题意:平面上有一些点,每刷一次可以把同一条直线上的点都刷光,问最少几次把所有点刷光。 方法: 显然是一个状态压缩dp。ans[S]表示把S集合中点刷掉的最少次数。最开始想到的方法是如果S中只有一个或两个点,那么ans[S]=1。否则枚举S中任意两点i,j作为直线上的点,并算出经过i,j的直线还过S中 阅读全文
posted @ 2017-10-28 12:30 hehe_54321 阅读(268) 评论(0) 推荐(0)
摘要:N Queen Again LightOJ - 1061 首先预处理(或打表)出所有八皇后的解法(只有92种)。然后枚举目标状态,对于每一个目标状态用一个状压dp求出到达那个状态的最小费用。到达任何一个目标状态的最小费用就是答案。 显然,已知原来8个点的位置,要到达目标8个点的位置,就是使得每一个原 阅读全文
posted @ 2017-10-27 17:55 hehe_54321 阅读(256) 评论(0) 推荐(0)
摘要:Travelling HDU - 3001 方法:3进制状态压缩dp(更好的方法是预处理出每个状态数字对应的y数组,然后用刷表,时间复杂度可以少一个n) 曾经错在: 1.65行,两个min打成max 2.每一组数据没有重置ans(浪费2小时) 阅读全文
posted @ 2017-10-08 11:11 hehe_54321 阅读(276) 评论(0) 推荐(0)
摘要:Doing Homework HDU - 1074 题意: 有n个作业,每个作业有一个截止时间和完成所需时间,如果完成某个作业的时间超出了截止时间就扣完成时间-截止时间的分。求按怎样的顺序完成作业扣分最少。 方法:状压dp。ans[S]表示完成集合S的作业最少的扣分(集合S用一个数字表示)。pre[ 阅读全文
posted @ 2017-10-06 17:36 hehe_54321 阅读(402) 评论(0) 推荐(0)
摘要:UVA-10817 ans[i][s1][s2]表示考虑前i个人时,有至少1人教的科目集合为s1,有至少2人教的科目集合为s2时的最少工资集合用一个数字表示,转换成二进制后从后面开始数第i位的状态(1/0)表示第i个科目的状态(满足/不满足某条件)st[i]表示第i个人能教的课程集合,cost[i] 阅读全文
posted @ 2017-08-10 16:59 hehe_54321 阅读(179) 评论(0) 推荐(0)

AmazingCounters.com