hdu-1565(方格取数(1))---状态压缩
题目链接: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))---状态压缩相关推荐
- 网络流(最大流) HDU 1565 方格取数(1) HDU 1569 方格取数(2)
HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数. 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和 ...
- hdu 1565 方格取数(1)(状态压缩dp)
方格取数(1) Time Limit: 10000/5000 MS (J ...
- hdu 1565 方格取数(1)
我用状态压缩做的. 一个有少于18000的合格状态,再DP 就好. #include<cstdio> #include<iostream> #include<cstrin ...
- HDU 1565 方格取数(简单状态压缩DP)
http://acm.hdu.edu.cn/showproblem.php?pid=1565 对于每一个数,取或者不取,用0表示不取,1表示取,那么对于每一行的状态,就可以用一个二进制的数来表示.比如 ...
- HDU 1565 方格取数(1) ——插头DP
[题目分析] 其实直接状压就可以了. 但是有点闲,又写了一个可读性极差,智商低下,很(gou)好(pi)的代码 [代码] #include <cstdio> #include <cs ...
- hdu 1569 方格取数(2) 最大点权独立集
二分图. 最大点权独立集=总权-最小点权覆盖集. 哪位大神能给一些二分图 最大点权独立集等等 的相关资料!!!!!跪谢 用网络流求解最小点权覆盖集即可,建图不讲了. #include<cstdi ...
- hdu2167 方格取数 状态压缩dp
题意: 方格取数,八个方向的限制. 思路: 八个方向的不能用最大流了,四个的可以,八个的不能抽象成二分图,所以目测只能用dp来跑,dp[i][j]表示的是第i行j状态的最优,具体看 ...
- hdu 3657 最大点权独立集变形(方格取数的变形最小割,对于最小割建图很好的题)...
转载:http://blog.csdn.net/cold__v__moon/article/details/7924269 /* 这道题和方格取数2相似,是在方格取数2的基础上的变形.方格取数2解法: ...
- HDU-1569 方格取数(2) 最小割最大流
题义很简单,还记得方格取数(1)的时候,使用状态压缩写的,这里由于行列数太大,因此无法进行压缩.所以要运用的最小割最大流的思想来解这道题. 大概是这样分析的,题义是要我们求在一个方格内取出N个点,使得 ...
- XTU 二分图和网络流 练习题 C. 方格取数(1)
C. 方格取数(1) Time Limit: 5000ms Memory Limit: 32768KB 64-bit integer IO format: %I64d Java class ...
最新文章
- 这位挺身而出的研究生,被直接录用!
- 初识Kubernetes
- CV之IR:计算机视觉之图像检索(Image Retrieval)方向的简介、使用方法、案例应用之详细攻略
- 性能优化(6):为什么一定要将css置顶?
- C++工作笔记-对纯虚函数的进一步理解(作用)
- POJ1088(dp)
- 阅读笔记——凤凰架构(第1章)
- L1-7 机工士姆斯塔迪奥【C语言】
- tx:advice标签
- 修改Android模拟器中System目录的内容(framework.jar)
- 玩转华为数据中心交换机系列 | 配置动态LACP模式的链路聚合示例
- 计算思维实践之路(一)
- autojs pro采用递归的方式,遍历所有子控件的源码分享
- java和vue募捐网水滴筹项目捐款爱心系统筹款系统
- TensorFlow c++ SessionFactory注册与No session factory registered错误
- 散列学习笔记(二)——排解冲突
- 联发科和麒麟哪个比较好
- go test进行单元测试时,出现undefined方法或者command-line-arguments [build failed]解决方案
- 算法导论第21章思考题
- DM7数据守护搭建过程中及错误处理
热门文章
- 6 步搭建数据平台—从指标体系到相关技术 | 周四话数据
- NLB网路负载均衡管理器详解
- 修改Windows7登录界面背景图片的方法
- 简述基于EDA技术的FPGA设计
- ftp+nginx+lua_Nginx+GraphicsMagick来实现目录浏览、实时缩略图
- [数据结构]快速排序
- iOS 分类思想(2)
- Add-in Express for Office and .NET v7.3支持VS 2013预览
- BlazeDS 整合 Flex HelloWorld 示例
- 《智慧书》格言211-220