hdu 4739 Zhuge Liang's Mines 状态压缩
2015-04-07 22:31
447 查看
题目大意:给出n个点的坐标,每次只能选择其中的四个点,而且这四个点还要能构成正方形,求最多能选出多少个点
解题思路:纪录每个正方形是由哪几个点组成,然后将其压缩,这题有个坑点,就是会重点
解题思路:纪录每个正方形是由哪几个点组成,然后将其压缩,这题有个坑点,就是会重点
[code]#include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define maxn 55 #define maxm 1200000 int cnt, dp[maxm]; struct point{ int x, y; }p[maxn]; struct square{ int a, b, c, d; void Set(int a1, int b1, int c1, int d1) { a = a1, b = b1, c = c1, d = d1; } }S[maxn]; int cmp(point a, point b) { if(a.x == b.x) return a.y < b.y; else return a.x < b.x; } int dfs(int s) { if(dp[s] != -1) return dp[s]; int Max = 0; for(int i = 0; i < cnt; i++) { if( (s & (1 << S[i].a)) + ( s & (1 << S[i].b)) + (s & (1 << S[i].c)) + (s & (1 << S[i].d)) == 0) { int st = s + (1 << S[i].a) +(1 << S[i].b) + (1 << S[i].c) + (1 << S[i].d) ; Max = max(Max,dfs(st) + 4); } } return dp[s] = Max; } int main() { int n; while(scanf("%d", &n) == 1 ) { if(n == -1) break; for(int i = 0; i < n; i++) scanf("%d%d", &p[i].x, &p[i].y); sort(p,p+n,cmp); cnt = 0; for(int i = 0; i < n; i++) for(int j = i + 1; j < n; j++) { if(p[i].x != p[j].x) break; for(int k = j + 1; k < n; k++) for(int l = k + 1; l < n; l++) { if(p[k].x != p[l].x) continue; if( p[i].y == p[k].y && p[j].y == p[l].y && p[j].y - p[i].y == p[k].x - p[i].x) { S[cnt++].Set(i,j,k,l); } } } memset(dp,-1,sizeof(dp)); printf("%d\n",dfs(0)); } return 0; }
相关文章推荐
- hdu4739 Zhuge Liang's Mines 状态压缩dp,0-1背包
- hdu 4739 Zhuge Liang's Mines (水题:坑题!!!)
- hdu 4739 Zhuge Liang's Mines 搜索
- HDU 4739 Zhuge Liang's Mines
- HDOJ 4739 Zhuge Liang&#39;s Mines
- HDU 4739 Zhuge Liang's Mines (状态压缩+背包DP)
- HDOJ 4739 - Zhuge Liang's Mines 暴力DFS
- HDU 4739 Zhuge Liang's Mines (状态压缩+背包DP)
- hdu 4739——Zhuge Liang's Mines
- HDU 4281 Judges' response 状态压缩 01背包 MTSP
- HDU 4182 Judges' response(01背包+TSP状态压缩DP)
- HDU 5135 Little Zu Chongzhi's Triangles(状态压缩dp+Vector)
- hdu 1400 Mondriaan's Dream(DP+状态压缩)
- [ACM] HDU 1400 Mondriaan's Dream (状态压缩,长2宽1长方形铺满)
- POJ 2411 && HDU 1400 Mondriaan's Dream(状态压缩DP)
- hdu 4352 XHXJ's LIS(数位dp进阶,LIS, 状态压缩)
- HDU 4352 XHXJ's LIS (数位DP+状态压缩)
- hdu 4352 XHXJ's LIS --- 数位dp 状态压缩
- hdu 1400 Mondriaan's Dream 状态压缩
- [数位dp+状态压缩] hdu 4352 XHXJ's LIS