状态压缩dp
算球?
在校学生
展开
-
poj 3254 Corn Fields(状态压缩dp)
状态压缩dp入门。 参考:http://www.cnblogs.com/BlackStorm/p/4706243.html 我的理解都在注释里。#include <stdio.h>const int mod = 1e8;int row[13],rec[377],dp[13][377];int main(){ int x=1<<12, k=0; //先不考虑哪些土地能种植,哪原创 2017-09-03 20:11:20 · 269 阅读 · 0 评论 -
poj 3311 Hie with the Pie(状态压缩dp)
旅行商问题。在《挑战程序设计竞赛》上有讲解。抄书:所有可能的路线共(n−1)!(n-1)!种,这是一个非常大的值,即使在本题中n已经很小了,仍然无法试遍每一种情况。对于这个问题,我们可以使用dp来解决假设现在已经访问过的顶点的集合(起点0当作还未访问过的顶点)为S,当前所在的顶点为v,用 dp[S][v] 表示从v出发访问剩余的所有顶点,最终回到顶点0的路径的权值总和的最小值。由v出发可以移动到任意原创 2017-09-04 00:09:43 · 239 阅读 · 0 评论 -
poj 2686 Traveling by Stagecoach(状态压缩dp)
挑战程序设计竞赛里面的例题#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int INF = 0x3f3f3f3f;const int MAXN = 10;const int MAXM = 31;int n,m,p,a,b;int t[MAXN];//dp[S][v]原创 2017-09-04 12:55:16 · 256 阅读 · 0 评论 -
hdu 4539 郑厂长系列故事——排兵布阵(状态压缩dp)
参考:http://blog.csdn.net/u013480600/article/details/19758029 参考了下思路,还是经验不足,找不对状态。做的时候传错了个参数,调了半个多小时 注意边界情况。 虽然思路看的别人的,但是自己写出来代码还是很爽的 做的时候0表示能够放士兵的位置,方便后边处理。 理解都在注释里。#include <bits/stdc++.h>using n原创 2017-09-06 21:12:13 · 319 阅读 · 0 评论 -
poj 1185 炮兵阵地(状态压缩dp)
和 hdu 4539 郑厂长系列故事——排兵布阵 差不多 先筛出来合法条件,攻击范围为上下左右两个格子,所以如果((i&(i<<1)) || (i&(i<<2)))为1,则为非法状态。一共就60个左右。 然后先处理出来前两行,再处理后边的。 因为每一行的状态只和前两行有关,所以dp数组为dp[r][i][j],表示在第r行,当前状态为i,前一行状态为j的情况下最多能放多少兵#include <原创 2017-09-07 13:03:39 · 306 阅读 · 0 评论 -
hdu 3001 Travelling(状态压缩dp)
一个点可以走两次,看起来还是有点懵逼的,看题解才知道压缩到三进制,涨知识。 参考题解:http://www.cnblogs.com/martinue/p/5490432.html dp[S][j]中S表示当前已经访问过的节点集合是S,当前所在顶点为j,dp[S][j]就表示从j出发访问剩余的所有节点的最小花费。#include <bits/stdc++.h>using namespace st原创 2017-09-07 15:58:51 · 256 阅读 · 0 评论 -
SGU 131 Hardwood floor(状态压缩dp)
可以先参考资料:https://wenku.baidu.com/view/16d299d63186bceb19e8bb12.html 看看例5和例6 参考题解:http://www.cnblogs.com/keam37/p/3835098.html 感觉自己智商没救了 在做之前参考下:POJ 2411 Mondriaan’s Dream 我是代码的搬运工,还加了点注释#include <原创 2017-09-11 23:30:45 · 296 阅读 · 0 评论 -
poj 2411 Mondriaan's Dream(状态压缩dp)
想不清楚,看题解:http://blog.csdn.net/u014634338/article/details/50015825 题解很详细,就不扯淡了。#include <stdio.h>#include <string.h>typedef long long LL;LL dp[11][1<<11];int n,m;template <typename T>void swap(T &a原创 2017-09-08 19:56:21 · 260 阅读 · 0 评论 -
Codeforces Round #363 (Div. 1) C. LRU(状态压缩dp)
这题在博客左上角放了好久了,一直不会做,看了半天题解,勉强看懂。。 参考:http://blog.csdn.net/squee_spoon/article/details/52040852 看看各个博客的讲解,看看代码,强行理解。。。我的理解写在注释里了。#include <bits/stdc++.h>using namespace std;double dp[1<<20];double p原创 2017-11-05 18:45:26 · 329 阅读 · 0 评论