题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565

第一次写状态压缩,感觉好强大,巧妙的运用二进制,不过不太熟练,参考了大牛的博客,想了想,恨牛叉的样子

题解:http://blog.csdn.net/jzmzy/article/details/20367939

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int s[20000];
int dp[30][20000];
int map[30][30];
int num;
int n;
bool ok(int x)//判断不相邻的情况
{if(x&(x>>1)) return false;//同一行存在相邻的情况return true;
}
void init(int m)
{num = 0;for(int i = 0;i < m;i++)if(ok(i)) s[num++] = i;
}
int cal(int x,int t)//计算该状态下的和
{int sum = 0, j = n - 1;while(t){if(t&1) sum += map[x][j];j--;t >>= 1;}return sum;
}
int main()
{while(~scanf("%d",&n)){if(n == 0) {puts("0");continue;}init(1<<n);for(int i = 0;i < n;i++)for(int j = 0;j < n;j++)scanf("%d",&map[i][j]);memset(dp,0,sizeof(dp));for(int i = 0;i < num;i++)dp[0][i] = cal(0,s[i]);for(int i = 1;i < n;i++){for(int j = 0;j < num;j++){int tmp = cal(i,s[j]);for(int k = 0;k < num;k++){if(s[j]&s[k]) continue;dp[i][j] = max(dp[i-1][k] + tmp,dp[i][j]);}}}int ans = 0;for(int i = 0;i < num;i++)ans = max(dp[n-1][i],ans);printf("%d\n",ans);}
}

hdu-1565(方格取数(1))---状态压缩相关推荐

  1. 网络流(最大流) HDU 1565 方格取数(1) HDU 1569 方格取数(2)

    HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和 ...

  2. hdu 1565 方格取数(1)(状态压缩dp)

    方格取数(1)                                                                 Time Limit: 10000/5000 MS (J ...

  3. hdu 1565 方格取数(1)

    我用状态压缩做的. 一个有少于18000的合格状态,再DP 就好. #include<cstdio> #include<iostream> #include<cstrin ...

  4. HDU 1565 方格取数(简单状态压缩DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=1565 对于每一个数,取或者不取,用0表示不取,1表示取,那么对于每一行的状态,就可以用一个二进制的数来表示.比如 ...

  5. HDU 1565 方格取数(1) ——插头DP

    [题目分析] 其实直接状压就可以了. 但是有点闲,又写了一个可读性极差,智商低下,很(gou)好(pi)的代码 [代码] #include <cstdio> #include <cs ...

  6. hdu 1569 方格取数(2) 最大点权独立集

    二分图. 最大点权独立集=总权-最小点权覆盖集. 哪位大神能给一些二分图 最大点权独立集等等 的相关资料!!!!!跪谢 用网络流求解最小点权覆盖集即可,建图不讲了. #include<cstdi ...

  7. hdu2167 方格取数 状态压缩dp

    题意:      方格取数,八个方向的限制. 思路:      八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看 ...

  8. hdu 3657 最大点权独立集变形(方格取数的变形最小割,对于最小割建图很好的题)...

    转载:http://blog.csdn.net/cold__v__moon/article/details/7924269 /* 这道题和方格取数2相似,是在方格取数2的基础上的变形.方格取数2解法: ...

  9. HDU-1569 方格取数(2) 最小割最大流

    题义很简单,还记得方格取数(1)的时候,使用状态压缩写的,这里由于行列数太大,因此无法进行压缩.所以要运用的最小割最大流的思想来解这道题. 大概是这样分析的,题义是要我们求在一个方格内取出N个点,使得 ...

  10. XTU 二分图和网络流 练习题 C. 方格取数(1)

    C. 方格取数(1) Time Limit: 5000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d      Java class ...

最新文章

  1. 这位挺身而出的研究生,被直接录用!
  2. 初识Kubernetes
  3. CV之IR:计算机视觉之图像检索(Image Retrieval)方向的简介、使用方法、案例应用之详细攻略
  4. 性能优化(6):为什么一定要将css置顶?
  5. C++工作笔记-对纯虚函数的进一步理解(作用)
  6. POJ1088(dp)
  7. 阅读笔记——凤凰架构(第1章)
  8. L1-7 机工士姆斯塔迪奥【C语言】
  9. tx:advice标签
  10. 修改Android模拟器中System目录的内容(framework.jar)
  11. 玩转华为数据中心交换机系列 | 配置动态LACP模式的链路聚合示例
  12. 计算思维实践之路(一)
  13. autojs pro采用递归的方式,遍历所有子控件的源码分享
  14. java和vue募捐网水滴筹项目捐款爱心系统筹款系统
  15. TensorFlow c++ SessionFactory注册与No session factory registered错误
  16. 散列学习笔记(二)——排解冲突
  17. 联发科和麒麟哪个比较好
  18. go test进行单元测试时,出现undefined方法或者command-line-arguments [build failed]解决方案
  19. 算法导论第21章思考题
  20. DM7数据守护搭建过程中及错误处理

热门文章

  1. 6 步搭建数据平台—从指标体系到相关技术 | 周四话数据
  2. NLB网路负载均衡管理器详解
  3. 修改Windows7登录界面背景图片的方法
  4. 简述基于EDA技术的FPGA设计
  5. ftp+nginx+lua_Nginx+GraphicsMagick来实现目录浏览、实时缩略图
  6. [数据结构]快速排序
  7. iOS 分类思想(2)
  8. Add-in Express for Office and .NET v7.3支持VS 2013预览
  9. BlazeDS 整合 Flex HelloWorld 示例
  10. 《智慧书》格言211-220