---------状压dp
文章平均质量分 71
Stayaccept
这个作者很懒,什么都没留下…
展开
-
poj2686(状态压缩dp)
链接:点击打开链接题意:n张车票,m座城市,k条路,问从城市a到城市b的最短时间,从一个城市移动到另一个城市所需时间等于城市之间的长度除以每张票上数字,一张票只能使用一次代码:#include #include #include #include #include #define INF 0x3f3f3f3fusing namespace std;int t[50],d[30原创 2015-10-17 13:45:33 · 530 阅读 · 0 评论 -
hdu4739(状态压缩dp+正方形判断)
链接:点击打开链接题意:给出n个点,判断可以组成多少个正方形,每个点只能用一次代码:#include #include #include #include #include #include using namespace std;struct node{ int x,y; friend bool operator<(node a,node b){原创 2016-09-15 20:20:54 · 403 阅读 · 0 评论 -
hdu4628(状态压缩dp)
链接:点击打开链接题意:给出一个字符串,每次删除一个回文子序列,问最少删除多少次才能给这个字符串全部删完代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;char s[20];int dp[(1<<16)+5],sign[(1<<16)+5原创 2016-06-12 15:57:11 · 598 阅读 · 0 评论 -
poj3311(floyd+旅行商)
链接:点击打开链接题意:求最短旅行商问题代码:#include #include #include #include #include using namespace std;const long long INF=0x3f3f3f3f;long long d[105][105],dp[(1<<15)][15];int main(){ long long n,i,j原创 2016-07-02 20:28:24 · 532 阅读 · 0 评论 -
hdu3538(最短哈密顿路径)
链接:点击打开链接题意:求从0点开始的最短哈密顿路径,要求某些点必须在某些点之前经过代码:#include #include #include #include #include using namespace std;const int INF=3000000;int d[25][25],dp[2500000][25],f[2500000];int main(){原创 2016-07-03 16:41:37 · 3418 阅读 · 0 评论 -
poj2288(状态压缩dp)
链接:点击打开链接题意:给出n个点,m条边的无向图,给出每个点的点权,求点权和最小的哈密顿路径,相邻两个点要加上点权的乘积,形成环要加上环上的点权代码:#include #include #include #include #include using namespace std;long long v[15],G[15][15];long long dp[原创 2016-07-06 15:02:35 · 1251 阅读 · 0 评论 -
hdu3681(二分+状态压缩dp+bfs)
链接:点击打开链接题意:在一个n*m的矩阵中,‘F’为起点,‘G’是加油站,遇到加油站油箱直接加满,'Y'是开关,‘F’是空地,‘D’是障碍,每走一步消耗一单位油,问油箱最小是多少可以将所有开关都走到代码:#include #include #include #include #include using namespace std;int n,m,num,new_S,star原创 2016-07-09 13:47:44 · 696 阅读 · 0 评论 -
hdu4385(状态压缩dp)
链接:点击打开链接题意:有n个点,每次可以从起点出经过一个点或者两个点回到起点,问所有点都经过后所需最小的路径和代码:#include #include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;struct node{ int x,y;}s[5原创 2016-07-23 15:16:45 · 437 阅读 · 4 评论 -
hdu5135(状态压缩dp)
链接:点击打开链接题意:n根木棍组成任意多的三角形,使得面积和最大代码:#include #include #include #include #include #include #include using namespace std;struct node{ int s; double area;};vector sta;int a[15];do原创 2016-10-10 19:22:55 · 510 阅读 · 0 评论 -
hdu5691(状态压缩dp)
链接:点击打开链接题意:度度熊是他同时代中最伟大的数学家,一切数字都要听命于他。现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了。游戏的规则十分简单,参与游戏的N个整数将会做成一排,他们将通过不断交换自己的位置,最终达到所有相邻两数乘积的和最大的目的,参与游戏的数字有整数也有负数。度度熊为了在他的数字仆人面前展现他的权威,他规定某些数字只能在坐固定的位置上,没有被度度熊限制的数字则可以自原创 2016-05-23 10:06:42 · 968 阅读 · 0 评论 -
hdu5045(状态压缩dp)
链接:点击打开链接题意:有n个人做m道题目,给出每个人对每道题答对的概率,求最后答出所有题目概率的最大值。要求每两个人之间答题的数目不能超过1代码:#include #include #include #include #include #include #include using namespace std;double s[20][2005],dp原创 2016-04-24 12:15:32 · 530 阅读 · 0 评论 -
poj1170(状态压缩dp)
链接:点击打开链接题意:给定一个含有n种商品的订单,给出订单内每个物品的初始价格和需要购买的数量,再给出m种套餐,这些组合会得到便宜的价格,最后怎样搭配使得总价格最少。代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int原创 2016-04-15 20:42:48 · 1119 阅读 · 0 评论 -
poj2441(状态压缩dp)
链接:点击打开链接题意:有n头牛,每头牛有自己喜欢住的屋子,问使所有牛都住上自己喜欢的屋子有几种可能代码:#include #include #include #include #include using namespace std;int d[25][25],dp[(1<<20)+5]; //因为开成二维会MLE,因此变原创 2016-01-28 00:03:14 · 1089 阅读 · 0 评论 -
poj3254(状态压缩dp)
链接:点击打开链接题意:有一块N*M的空地,1表示可以播种,0表示不可以,现在要求播种并且播种区域不能相邻,输出所有可以播种情况的种数并对100,000,000区域代码:#include #include #include #include #include using namespace std;const long long mod=100000000;原创 2016-01-28 00:11:33 · 463 阅读 · 0 评论 -
poj2836(状态压缩dp)
链接:点击打开链接题意:有n个点,用非零的矩形全覆盖住这些点,求所有矩形的面积和(重复部分重复算)代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;struct node{ int x,y;}a[20];i原创 2016-01-29 21:35:00 · 732 阅读 · 0 评论 -
poj2923(状态压缩dp)
链接:点击打开链接题意:有n个货物,给出每个货物的重量,每次用容量为c1,c2的火车运输,问最少需要运送多少次可以将货物运完代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int n,c1,c2;int w[15],v原创 2016-03-15 21:09:40 · 865 阅读 · 0 评论 -
hdu4568(旅行商变形)
链接:点击打开链接题意:有一个n*m的棋盘,每一个格子有一个值,代表经过这个格子的花费,给出k个宝藏点的坐标,求从棋盘的任意一个边进入棋盘,经过所有的宝藏点后在走出棋盘所需要的最小花费代码:#include #include #include #include #include #include using namespace std;const int I原创 2016-03-18 08:34:57 · 794 阅读 · 0 评论 -
poj2411(轮廓线动态规划)
链接:点击打开链接题意:用1*2的地砖铺满一个n*m的地面有多少种方法代码:#include #include #include #include #include using namespace std;long long n,m,cur;long long dp[2][1<<15];int main(){原创 2016-03-24 20:50:12 · 1309 阅读 · 1 评论 -
hdu3001(三进制状态压缩dp)
链接:点击打开链接题意:n个城市,m条路,每个城市最多经过两次,遍历所有城市最小的费用是多少代码:#include #include #include #include #include using namespace std;const int INF=0x3f3f3f3f;int three[15]={1,3,9,27,81,243,729,2187,6原创 2016-03-27 15:22:35 · 1002 阅读 · 0 评论 -
poj1185(状态压缩dp)
链接:点击打开链接题意:司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中原创 2016-03-27 15:30:17 · 362 阅读 · 0 评论 -
hdu4804(轮廓线dp变形)
链接:点击打开链接题意:问n*m的矩阵,有些点可以放有些点不可以放,问用1*1和1*2的地砖铺满,1*1的地砖最少用C个最多用D个,有多少种方法代码:#include #include #include #include #include using namespace std;char s[105][15];int dp[2][1<<11][25];const int M原创 2016-09-21 19:23:17 · 600 阅读 · 0 评论