hdu 4739Zhuge Liang's Mines(简单dfs,需要注意重点)
2014-04-28 13:11
288 查看
Zhuge Liang's Mines
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1166 Accepted Submission(s): 505
Problem Description
In the ancient three kingdom period, Zhuge Liang was the most famous and smartest military leader. His enemy was Shima Yi, who always looked stupid when fighting against Zhuge Liang. But it was Shima Yi who laughed to the end.
Once, Zhuge Liang sent the arrogant Ma Shu to defend Jie Ting, a very important fortress. Because Ma Shu is the son of Zhuge Liang's good friend Ma liang, even Liu Bei, the Ex. king, had warned Zhuge Liang that Ma Shu was always bragging and couldn't be used,
Zhuge Liang wouldn't listen. Shima Yi defeated Ma Shu and took Jie Ting. Zhuge Liang had to kill Ma Shu and retreated. To avoid Shima Yi's chasing, Zhuge Liang put some mines on the only road. Zhuge Liang deployed the mines in a Bagua pattern which made the
mines very hard to remove. If you try to remove a single mine, no matter what you do ,it will explode. Ma Shu's son betrayed Zhuge Liang , he found Shima Yi, and told Shima Yi the only way to remove the mines: If you remove four mines which form the four vertexes
of a square at the same time, the removal will be success. In fact, Shima Yi was not stupid. He removed as many mines as possible. Can you figure out how many mines he removed at that time?
The mine field can be considered as a the Cartesian coordinate system. Every mine had its coordinates. To simplify the problem, please only consider the squares which are parallel to the coordinate axes.
Input
There are no more than 15 test cases.
In each test case:
The first line is an integer N, meaning that there are N mines( 0 < N <= 20 ).
Next N lines describes the coordinates of N mines. Each line contains two integers X and Y, meaning that there is a mine at position (X,Y). ( 0 <= X,Y <= 100)
The input ends with N = -1.
Output
For each test case ,print the maximum number of mines Shima Yi removed in a line.
Sample Input
3
1 1
0 0
2 2
8
0 0
1 0
2 0
0 1
1 1
2 1
10 1
10 0
-1
Sample Output
0
4
Source
2013 ACM/ICPC Asia Regional Hangzhou Online
题目大意:给你一些点,最多二十个,让你找用这些点弄出正方形的个数,输出个数*4。
不过需要注意的是有重点。
还是有些细节没考虑到,WA了很多,T了几次。。
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4739
AC代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int ans,n; int cnt[105][105]; struct node { int x; int y; }nod[25]; int cmp(node p1,node p2) { if(p1.x<p2.x) return 1; if(p1.x==p2.x&&p1.y<p2.y) return 1; return 0; } void dfs(int cur,int score) { if(score>ans) ans=score; if(cur>=n) return; if(ans>=n-cur+score) return; int i; int cx,cy,px,py; cx=nod[cur].x,cy=nod[cur].y; if(cnt[cx][cy]<=0) { dfs(cur+1,score); return; } for(i=cur+1;i<n;i++) { px=nod[i].x,py=nod[i].y; if(px>cx) break; if(py==cy) continue; int len=py-cy; if(cnt[cx][cy]&&cnt[cx][cy+len]&&cnt[cx+len][cy]&&cnt[cx+len][cy+len]) { cnt[cx][cy]--,cnt[cx][cy+len]--; cnt[cx+len][cy]--,cnt[cx+len][cy+len]--; dfs(cur+1,score+4); cnt[cx][cy]++,cnt[cx][cy+len]++; cnt[cx+len][cy]++,cnt[cx+len][cy+len]++; } } dfs(cur+1,score); } int main() { int i; while(scanf("%d",&n)) { if(n==-1) break; memset(cnt,0,sizeof(cnt)); for(i=0;i<n;i++) { scanf("%d%d",&nod[i].x,&nod[i].y); cnt[nod[i].x][nod[i].y]++; } sort(nod,nod+n,cmp); ans=0; dfs(0,0); cout<<ans<<endl; } return 0; }
相关文章推荐
- hdu 1285 确定比赛名次 简单的拓扑排序模板题~~需要注意重边
- HDU 4548美素数(简单题 保存结果时需要注意不要超时)
- 简单题(需要注意一个细节) 之 hdu 4847 Wow! Such Doge!
- 简单题(需要注意一个细节) 之 hdu 4847 Wow! Such Doge!
- poj2488 A Knight's Journey 简单DFS 注意搜索步骤
- hdu - 1704 Rank(简单dfs)
- HDU 1016 超简单DFS
- hdu 题目1241 Oil Deposits(简单DFS)
- hdu 1016 prime ring 简单dfs输出
- hdu 三部曲 A Knight's Journey 简单dfs(),顺序很重要(字典序),搜索顺序的先后体现
- hdu Prime Ring Problem (java 简单DFS)
- 杭电 HDU 1312 Red and Black(超级简单dfs)
- HDU 1181(简单dfs)
- HDU 1312Red and Black(简单搜索 bfs或dfs)
- hdu - 1010 Tempter of the Bone (dfs+奇偶性剪枝) && hdu-1015 Safecracker(简单搜索)
- 大型的门户网站建设前期需要那些技术和注意事项的简单总结
- hdu 1241 Oil Deposits 简单八个方向的DFS
- HDU 1241 简单的DFS
- hdu 1180 诡异的楼梯 BFS 这题相当坑爹啊,需要注意几点
- poj2488 A Knight's Journey 简单DFS 注意搜索步骤