
状压DP
文章平均质量分 87
九野的博客
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU 5045 Contest 期望+状压dp 2014 ACM/ICPC Asia Regional Shanghai Online
题意:给定n个人 m个题目下面n*m的矩阵表示每个人解出每道题的概率我们可以得到一个模长为m的集合{1,2,3,1,2}代表每道题是谁解出的。有众多集合,且获得这个集合有一个期望,求期望最大的那个集合 ( 的期望值是多少)一个限制: 对于集合 {1,1,2,3,1} 这样是不合法的(即从[1,n]题必须是1-n的排列,然后[n+1, 2n]题也是一个排列)然后状原创 2014-09-27 18:01:40 · 1623 阅读 · 0 评论 -
UVA 1377 Ruler bfs+状压搜索
题目链接:点击打开链接题意:给定n个刻度。下面是n个刻度。要构造一个尺子使得上面的n个刻度能直接量出来。且要满足尺子上的刻度线个数最少,最少的情况下尺子最短。第一个刻度总为0题目保证总是存在思路:bfs,每次枚举新加一个刻度后,哪些可以直接量出来,用二进制表示,然后暴力搜import java.io.PrintWriter;import java.util.Arr原创 2015-01-22 10:07:02 · 1398 阅读 · 0 评论 -
POJ 3123 Ticket to Ride 状压dp+树形dp 斯坦纳树
题目链接:点击打开链接题意:给定n个城市和m条可选择修建的道路下面n行给出每个城市的名字下面m行给出每条道路及修建该道路的花费。下面4行,每行给出一对城市。目标:使得最后4行的每对城市连通(不同对之间可以不连通)所需要修建的最小花费。数据保证存在可行解思路:首先如果这个问题问的是所有城市都连通,就是一个最小生成树的问题。这里就相当于多个最小生成树的 问题。原创 2015-02-12 15:45:12 · 2326 阅读 · 0 评论 -
UVA 1326 Jurassic Remains 中途相遇法
题目链接:点击打开链接题意:给定n个字符串,选尽可能多的字符串使得每种字母出现的次数为偶数次思路:中途相遇法import java.io.PrintWriter;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator原创 2015-01-25 14:23:00 · 1258 阅读 · 0 评论 -
HDU 4336 Card Collector 状压+概率dp
题目链接:点击打开链接dp[i] 表示已经拥有卡片的状态为i, 还需要吃多少包才能拥有所有卡片,显然 dp[(1而答案就是dp[0];用样例二举例,下面dp方程内直接用二进制表示,为了方便观察,我们用最高位表示第一张卡片(P1=0.1),最低位表示第n张卡片(P2=0.4) dp[01] = (dp[01]+ 1)* P + (dp[11]+1) *P2 //其中P表示吃不原创 2015-03-20 21:03:15 · 1166 阅读 · 0 评论 -
Codeforces 327E Axis Walking 状压dp(水
题目链接:点击打开链接题意:给定n个数,随意排列。给定k个违禁数b[]。问:有多少个排列使得这个排列的 n项前缀和中不出现违禁数。(formally,if it's a legal permutation, sum[i] != b[j] (1sum[0] = 0; sum[i] = sum[i-1]+a[permutaion[i]];==java党表示被tle,心疼自己原创 2015-03-20 22:06:36 · 1172 阅读 · 0 评论 -
Codeforces 31E TV Game 中途相遇法 状压dp
题目链接:点击打开链接题意:给定2*n长的数字。把这个数字拆成2个长度为n的数字,且相对位置不变。使得拆后得到的2个数字的和最大。输出一个方案。显然是中途相遇法,先计算左半段,再计算右半段分别状压左半段和右半段,注意左半段状压后要在末尾补上0。代码估计哪里有小越界==,数组开大了一点才过。。具体就不查了。#include#include#incl原创 2015-03-21 17:03:07 · 1275 阅读 · 0 评论 -
Codeforces 544E Remembering Strings 状压dp
题目链接题意:给定n个长度均为m的字符串下面n行给出字符串下面n*m的矩阵表示把对应的字母修改成其他字母的花费。问:对于一个字符串,若它是easy to remembering 当 它存在一个字母,使得这个字母在这一列是独一无二的。要使得n个字符串都是easy to remembering 的最小花费。第一个样例是把第一列的4个a中3个a修改成别的字母,所以花费为3原创 2015-07-15 21:35:34 · 1421 阅读 · 0 评论 -
POJ 2411 Mondriaan's Dream
题意:在n ,m 大的格子上铺满1*2的方格,问最多有多少种铺法这滚动数组的利用率是非常高的,所以理解也不太快,但代码简短易写 #include#define N 12#define ll long longll dp[2][1<<N],n,m,cur;void updata(ll a,ll b){ if(b & 1<<m )dp[cur][b^(1<<m)] +=原创 2013-08-21 10:16:44 · 2274 阅读 · 1 评论 -
CodeForces 417D Cunning Gena 状压dp
题目链接:点击打开链接题意:主角请他的n个朋友帮他做m道题,常数b下面每两行代表一个朋友:请这个朋友的花费 请这个朋友的前提是要拥有k台电脑 这个朋友能解的题目数量下面是这个朋友能解的具体题目号。买一台电脑花费是b,开始主角手里没有电脑。思路:先按k值小到大排序问题数import java.io.PrintWriter;import java.text原创 2015-02-07 20:45:58 · 1157 阅读 · 0 评论 -
UVA 11600 Masud Rana 并查集+状压概率dp
题目链接:点击打开链接题意:给定一个无向图,给定的边是已经存在的边,每天会任选两个点新建一条边(建过的边还会重建)问:使得图连通的天数的期望。思路:状压喽,看别人都是这么写的,n=30,m=0 我也不知道怎么办了。。当前连通块点数为X 加入一个Y个点的连通块需要的天数为 Y/(n-X);Masud Rana, A Daring Spy Of Bangladesh Cou原创 2015-01-30 10:27:54 · 1701 阅读 · 0 评论 -
HDU 3681 Prison Break floyd+状压+二分
题目链接:点击打开链接题意:给定n*m的矩阵:F:起点(有且仅有一个)D:坏点(不能走到这个点)G:能量池(走到这个点可以选择使用这个点的能量池,把电池充满,也可以暂时不用,只能使用一次)Y:目标点问:遍历所有Y点需要最小的电池容量是多少。开始电池满电,每走一步消耗一格电。Y+G的个数思路:状压YG,前面几位表示Y,后面几位表示G。先跑个floyd,原创 2014-11-14 17:48:48 · 1233 阅读 · 0 评论 -
HDU 4284 状压dp+spfa
题意:给定n个点 m条无向边 d元。下面m行表示每条边 uv 以及花费 w下面top下面top行num c d 表示点标为num的城市 工资为c 健康证价格为d起点在第一城市。目标是经过给定的top个城市,当到达该城市时,必须马上购买该城市的健康证并打工赚钱(每个城市只打工1次)问能否收集到所有的健康证思路:由于top很小,所以状压dpdp[i][tmp原创 2014-05-09 22:53:25 · 1336 阅读 · 0 评论 -
Spoj 9894 Tichu 状压dp
题目链接:点击打开链接题意:给定13张各不相同的扑克牌,问最少需要几手打出每手打出的牌必须符合以下任意标准之一:1、任意单张2、相同数字2张3、相同数字3张4、相同数字4张5、相同数字3张+相同数字2张6、连续5个及5个以上的数字思路:状压dp,dp[i]表示选了i的状态的最小牌数然后要预处理出能一次打出的状态,这样不会t。。#inclu原创 2014-07-15 00:02:13 · 1698 阅读 · 0 评论 -
Codeforces 453B Little Pony and Harmony Chest 状压dp
题目链接:点击打开链接b的数字最多只能达到59,因为选>=60 不如选1所以状压一下前面出现过的素数即可,在59内的素数很少然后暴力转移。。#include #include #include #include #include const int Inf = (int)(1e9);const int S = 1 << 17;const int N = 100 + 2原创 2014-08-02 18:14:21 · 1292 阅读 · 0 评论 -
ZOJ 3777 Problem Arrangement 状压dp
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5264题意:给定一个n*n的矩阵,在矩阵中选n个数字(每行每列只能选一个数字),问选出的数字和>=m的方法数思路:1、矩阵较小可以状压2、每次转移以 数字和为记录,因为mm,可以视为m相当于一个全排列中找方法数即把n个数填入n个空格内原创 2014-04-15 10:13:38 · 2839 阅读 · 3 评论 -
CodeForces 21D Traveling Graph 状压dp+欧拉回路
题目链接:点击打开链接题意:给定n个点m条边的无向图求从1点开始经过每条边至少一次最后回到1点的最小路程显然就是找一条路径可重复的欧拉回路思路:首先对于欧拉回路的结论是:所有点的度数都为偶数因为所有边至少经过一次,那么可以把题意转换成加最少多少条边使得图满足以上结论而加的边目的是为了把奇度数转成偶度数,先floyd一下得到任意点间加边的最小花费dp[i]表示状态原创 2014-07-01 11:41:11 · 1793 阅读 · 0 评论 -
FOJ月赛 2014年11月 Problem D 礼物分配 中途相遇法
题目链接:点击打开链接思路:我们先把礼物平均分成2堆。然后枚举1-(n/2)的所有二进制状态。0就给a,1就给b。我们设此时a获得的价值和为A,b获得的价值和为B那么对于一个状态我们就能得到 B-A。给所有B-A排个序,得到数组K对于另一半(n/2+1) - n也这样枚举得到A-B.然后去K数组中二分查找距离-(A-B)最近的数即可。原创 2014-11-16 17:51:03 · 1554 阅读 · 0 评论 -
HDU 4309 Seikimatsu Occult Tonneru 网络流+状压
题目链接:点击打开链接题意:题意:给出一张N(N0时,表示这条边是古老的桥,u连向v,如果不修这座桥,则只能通过1人,但是如果花费w的费用修桥的话,则通过这座桥的流量便没有限制。桥的总数思路:可以建立最大流模型来求解, 增加一个源点S,和一个汇点T。 S向每个有人的点,连一条容量为人数的边, 图中普通的u->v的有向边,连一条u->v的流量为无穷的边, 桥的流量则为原创 2014-11-15 23:24:27 · 1390 阅读 · 0 评论 -
Codeforces round #321 (DIV. 2)
题解链接:http://www.cygmasot.com/index.php/2015/09/23/codeforces_580/链接A:Kefa and First Steps题意:the length of the maximum non-decreasing subsegment直接搞,水题#include #include #i原创 2015-09-23 21:51:35 · 1883 阅读 · 0 评论