随笔分类 - -----动态规划 6.状态压缩
摘要:题目链接:hdu 5117 Fluorescent 题意: 有n个灯,m个开关,每个开关能控制一些灯的状态,即关闭的打开,打开的关闭。一开始灯全部是关闭的。 现在有个人去操作这些开关,显然会有2^m次组合。 现在问这个人操作完这些开关后,亮着的灯的期望E(x) 但是题目要求输出的是E(x^3)*2^
阅读全文
摘要:题目链接:hdu 6149 Valley Numer II 题意: 给你N个点,有k个为高点,其他为低点,现在这N个点有m条边,问你最多能组成多少个两个高点一个低点,低点和两个高点都有边相连这样的状态。 每个点只能出现在一个状态里面。 题解: 考虑将高点进行状态压缩一下。那么枚举每一个低点,看看能对
阅读全文
摘要:题目链接:hdu 6125 Free from square 题意: 从不大于n的所有正整数中选出至少1个且至多k个使得乘积不包含平方因子。 题解: 很容易想到,选出来的数所包含的每个质因子只能有一个。 那么我们对所有的质因子进行状压dp,500以内大概有100个质因子。 那么就成了2100,显然不
阅读全文
摘要:题目链接:hdu 6086 Rikka with String 题意: 给你n个只含01的串,和一个长度L,现在让你构造出满足s[i]≠s[|s|−i+1] for all i∈[1,|s|] ,长度为2L,并且包含给出的n个串,问能有多少种这样的串。 题解: 建立两个AC自动机,一个用来放正串,一
阅读全文
摘要:题目链接:hdu 4758 Walk Through Squares 题意: 给你一个n*m的网格,现在你要从(1,1)走到(n,m),每次只能向右走或者向下走,走完后会形成一个包含R,D的序列,这个序列必须要包含题目给出的两个字符串,问有多少种方案。 题解: 由于要从(1,1)走到(n,m),所以
阅读全文
摘要:题目链接:hdu 4057 Rescue the Rabbit 题意: 给出一些模式串,每个串有一定的价值,现在构造一个长度为M的串,问最大的价值为多少,每个模式串最多统计一次。 题解: 由于每个模式串最多统计一次,所以我们要考虑记录是否已经存在该串。 考虑dp[i][j][k]表示当前考虑到i的长
阅读全文
摘要:题目链接:hdu 5816 Hearthstone 题意: 牌堆里有 N张 A类卡,M张 B类卡 A类卡能让你从牌堆里抽两张卡 第 i张 B类卡能让你对对手造成 x_i点伤害 刚开始从牌堆抽 1张牌,并且对手有 P点生命值 问一回合内打倒对手的概率是多少 题解: 利用枚举子集的状态转移,求出手上能拿
阅读全文
摘要:题目链接:2017盛大游戏杯 零件组装 题意: 有n个零件,给你相邻关系和排斥关系,每两块零件组装起来有一个代价,问最少的代价总和是多少。 题解: 考虑状态压缩,dp[i]表示i这个集合为一个零件块。 那么要枚举一下i的子集。O(3^n). 先要预处理一下每个集合的排斥个数和相邻个数,然后容斥一下就
阅读全文
摘要:题目链接:hdu_3247_Resource Archiver 题意: 有n个资源串,m个病毒串,现在要将所有的资源串整合到一个串内,并且这个串不能包括病毒串,问最短的串长为多少 题解: 将资源串和病毒串都插入到AC自动机中,分别做好标记,然后用bfs求出0节点和所有资源串互相的最短距离,最后就是一
阅读全文
摘要:题目链接:hdu_3341_Lost's revenge 题意: 有n个模式串,一个标准串,现在让标准串重组,使得包含最多的模式串,可重叠,问重组后最多包含多少模式串 题解: 显然是AC自动机上的状态压缩DP,不过如果直接开404*500的数组显示开不下,所以这样要将状态hash一下,然后再DP,因
阅读全文
摘要:题目链接:hdu_2825_Wireless Password 题意: 给你m个串,问长度为n至少含k个串的字符串有多少个 题解: 设dp[i][j][k]表示考虑到长度为i,第j个自动机的节点,含有k这个压缩状态的方案数,然后DP下去就行了 1 #include<bits/stdc++.h> 2
阅读全文
摘要:题目连接:hdu_5555_Immortality of Frog 题意: 给你一个NxN的网格,第N行的每一列都有个青蛙,这些青蛙只会往上走,上帝会在每个膜中放一个长生不老的药,一共有N个膜,每个膜覆盖一些区间,如果这个区间恰好为N那么就是好膜,否则是坏膜,每个青蛙最多只能穿过10个坏膜,问全部青
阅读全文
摘要:题目连接:hdu_4352_XHXJ's LIS 题意:这题花大篇篇幅来介绍电子科大的一个传奇学姐,最后几句话才是题意,这题意思就是给你一个LL范围内的区间,问你在这个区间内最长递增子序列长度恰为K的数有多少个 题解:数位DP+状态压缩,这题首先考虑如何来求数位的LIS,很明显不可能用n*n的方法,
阅读全文
摘要:题目连接:hdu5711 这题是 HDU 女生赛最后一题,TSP+贪心,确实不好想,看了wkc巨巨的题解,然后再做的 题解传送门:Ingress 1 #include<cstdio> 2 #include<queue> 3 #include<algorithm> 4 #define F(i,a,b)
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5418 题意:给你n个点,和一些边,找一条路径经过全部的点,并回到起点,问最小的花费是多少, 题解:m<=1e5,n<16,说明有多边,需要处理一下,处理完用floyd跑一下,然后进行状态压缩dp。 1
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5691 题意:中文,不解释 题解:设dp[i][j]表示当前状态为i,以第j个数为末尾的最忧解,然后dp下去就行了 1 #include<cstdio> 2 #define F(i,a,b) for(in
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题意:给你N个点,M条边,每个点最多走两次,问走完N个点最短的路程为多少。 题解:注意这题有重边,因为最多走两次,所以要用3进制来压缩状态,处理一下就行 1 #include<cstdio> 2
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4529 题意:中文,不解释 题解:状压DP,dp[i][j][k][s]表示第i行当前用了j个骑士,i-1行的压缩状态为k,i行的压缩状态为j,然后用滚动数组优化了一下,注意如果不预处理不可存放位置会超时
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 题意:中文,不解释 题解:将每一行的状态压缩,然后进行DP,也可以用最大团做。这里我用的DP 1 #include<cstdio> 2 #include<cstring> 3 #define ma
阅读全文
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3182 题意:有n个汉堡,做每个汉堡需要消耗一定的能量,每个汉堡对应一定的价值,且只能做一次,并且做当前汉堡需要先做出列出的汉堡,求最大的价值 题解:状压DP 1 #include<cstdio> 2 #
阅读全文

浙公网安备 33010602011771号