hdu4739(状态压缩dp+正方形判断)
来源:互联网 发布:恢复以前手机淘宝 编辑:程序博客网 时间:2024/06/10 23:22
链接:点击打开链接
题意:给出n个点,判断可以组成多少个正方形,每个点只能用一次
代码:
#include <bitset>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;struct node{ int x,y; friend bool operator<(node a,node b){ if(a.x==b.x) return a.y<b.y; return a.x<b.x; }}s[1005];int judge(node a,node b,node c,node d){ node tmp[5]; tmp[0]=a; tmp[1]=b; tmp[2]=c; tmp[3]=d; sort(tmp,tmp+4); if(tmp[1].y-tmp[0].y==tmp[3].y-tmp[2].y) if(tmp[2].x-tmp[0].x==tmp[3].x-tmp[1].x) if(tmp[2].x-tmp[0].x==tmp[1].y-tmp[0].y) if(tmp[0].x==tmp[1].x&&tmp[2].x==tmp[3].x&&tmp[1].x!=tmp[2].x) if((tmp[3].x-tmp[0].x)*(tmp[3].x-tmp[0].x)+(tmp[3].y-tmp[0].y)*(tmp[3].y-tmp[0].y)== (tmp[1].x-tmp[2].x)*(tmp[1].x-tmp[2].x)+(tmp[1].y-tmp[2].y)*(tmp[1].y-tmp[2].y)) return 1; return 0;} //判断是否是正方形一定要注意int sta[2000005],dp[2000005];int main(){ int n,i,j,k,p,ans,num,tmp; while(scanf("%d",&n)!=EOF&&n!=-1){ for(i=1;i<=n;i++) scanf("%d%d",&s[i].x,&s[i].y); num=0; memset(sta,0,sizeof(sta)); for(i=1;i<=n;i++){ for(j=i+1;j<=n;j++){ for(k=j+1;k<=n;k++){ for(p=k+1;p<=n;p++){ if(judge(s[i],s[j],s[k],s[p])){ tmp=(1<<(i-1))|(1<<(j-1))|(1<<(k-1))|(1<<(p-1)); sta[num++]=tmp; } } } } } //处理出所有满足条件的状态 memset(dp,0,sizeof(dp)); for(i=0;i<(1<<n);i++){ //直接用预处理的状态进行转移 for(j=0;j<num;j++){ //枚举子集的话,应该会超时 if((i&sta[j])==0){ dp[i|sta[j]]=max(dp[i|sta[j]],dp[i]+4); } } } ans=0; for(i=0;i<(1<<n);i++) ans=max(ans,dp[i]); printf("%d\n",ans); } return 0;}
0 0
- hdu4739(状态压缩dp+正方形判断)
- hdu4739 状态压缩dp
- hdu4739 Zhuge Liang's Mines 状态压缩dp,0-1背包
- hdu4739(状压DP)
- HDU4739
- hdu4739
- 状态压缩dp
- pku1038状态压缩dp
- 状态压缩DP 入门
- HDU1074 状态压缩DP
- Poj3254 状态压缩DP
- 状态压缩DP入门
- 【状态压缩DP】互不侵犯
- 【状态压缩DP】电子竞技
- HDU1074 状态压缩DP
- 【状态压缩DP】互不侵犯
- 状态压缩 DP AHU420
- HDU2167 状态压缩DP
- 链表面试题逆序打印,删除无头非尾节点,非头位置插入,约瑟夫环,查找中间和倒数第k个节点
- 1047. Student List for Course (25)
- 在drawable下的文件夹命名不能大写
- android列表框配合BaseAdapter实现列表
- iOS App创建桌面快捷方式
- hdu4739(状态压缩dp+正方形判断)
- 威佐夫博弈(模板+减少精度算法)
- Android 沉浸式状态栏以及 透明状态栏 和修改状态栏颜色
- 拍照/选择相册,图片压缩旋转处理
- 2个鸡蛋100层楼/2个玻璃珠39层楼
- String、StringBuffer与StringBuilder与字符串反转
- 移植u-boot2012.04.1 -》2440 (一)新建单板,第一阶段修改
- 21 Must-Know Data Science Interview Questions and Answers
- Maven学习笔记一