poj2836 状态压缩~矩形覆盖
来源:互联网 发布:原味内衣淘宝 编辑:程序博客网 时间:2024/06/02 12:25
首先预处理每两个点为顶点包含的点集合,然后往后直接DP。
ACcode:
#include<cstdio>#include<cstring>const int NS=15;const int INF=1<<30;int n,lx,rx,uy,dy,lim;int g[NS][NS],ar[NS][NS];int x[NS],y[NS],dp[1<<NS];int Max(int xa,int xb){ return xa>xb?xa:xb;}int Min(int xa,int xb){ return xa<xb?xa:xb;}int main(){ while (~scanf("%d",&n)&&n) { for (int i=0;i<n;i++) scanf("%d%d",&x[i],&y[i]); for (int i=0;i<n;i++) for (int j=0;j<i;j++) { g[i][j]=0; lx=Min(x[i],x[j]),rx=Max(x[i],x[j]); dy=Min(y[i],y[j]),uy=Max(y[i],y[j]); for (int k=0;k<n;k++) if (lx<=x[k]&&x[k]<=rx&&dy<=y[k]&&y[k]<=uy) g[i][j]|=1<<k; rx=rx-lx?rx-lx:1; uy=uy-dy?uy-dy:1; ar[i][j]=ar[j][i]=rx*uy; } lim=1<<n,dp[0]=0; for (int i=1;i<lim;i++) dp[i]=INF; for (int i=0;i<lim;i++) for (int j=0;j<n;j++) for (int k=0;k<j;k++) { lx=i|g[j][k]; dp[lx]=Min(dp[lx],dp[i]+ar[j][k]); } printf("%d\n",dp[lim-1]); } return 0;}
- poj2836 状态压缩~矩形覆盖
- poj2836(状态压缩dp)
- poj2836 状态压缩dp
- poj2836状态压缩DP+批量加入状态
- POJ2836 状态压缩dp不能逆向推倒的
- POJ2836-Rectangular Covering-状态dp
- POJ2836
- poj2836
- SGU131 状态压缩~覆盖方案数
- poj 1038 状态压缩~棋盘覆盖
- 状态压缩-覆盖问题-poj 2411 2663
- 完全覆盖 II 之状态压缩
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 矩形覆盖
- 新博客开通了
- 鸟哥的Linux私房菜(基础篇) 读书笔记
- Linux进程状态(ps stat)之R、S、D、T、Z、X
- reqire 与require_once
- Advanced Bash-Scripting Guide 读书笔记
- poj2836 状态压缩~矩形覆盖
- OpenCV Direcrshow CameraDS 余老师代码
- VMware vSphere 服务器虚拟化之三十二 VMware vCenter Converter
- 7.4.5:让Bean获取Spring容器
- ubuntu下安装jre 7
- leetcode pow
- SWIG 学习笔记(一)
- 7.5.1: Bean的基本定义
- 八、mac 无法连接android手机进行调试 解决方案