POJ - 2362 - 搜索顺序和方法很重要..
2012-02-21 14:04
429 查看
最开始这题我是想4条边分开看..找到一种方法填满第一条边,再填第二条....直道第四条添满..则说明找到一组解....但是WA了..不知道为什么不行..感觉上相互是没有联系的..但Discuss里的不少数据确实证明这种方法是不可行的...
然后就是搜索罗...因为长的线段显然对结果影响更大..所以将线段从大到小排序...开始我的搜索是让每个线段往4条边上分别尝试着放..直道所有线段放好..结果TLE..\
后来再一想..若DFS放满一条边后再DFS来放第二条边..这样自然就大大减少了没意义的尝试...同时若后面的边做不下去了..也能回朔回来(最初的方法就是没这个..)...这样的话就能AC了..250ms.....
Program:
然后就是搜索罗...因为长的线段显然对结果影响更大..所以将线段从大到小排序...开始我的搜索是让每个线段往4条边上分别尝试着放..直道所有线段放好..结果TLE..\
后来再一想..若DFS放满一条边后再DFS来放第二条边..这样自然就大大减少了没意义的尝试...同时若后面的边做不下去了..也能回朔回来(最初的方法就是没这个..)...这样的话就能AC了..250ms.....
Program:
#include<iostream> #include<string.h> #include<stdio.h> #include<algorithm> #include<math.h> #include<queue> using namespace std; int t,n,data,a[25],have[4]; bool used[25]; bool DFS(int k,int p) { int i; if (p==4) return true; for (i=k;i<=n;i++) if (!used[i] && data-have[p]>=a[i]) { have[p]+=a[i]; used[i]=true; if (have[p]==data) { if (DFS(1,p+1)) return true; }else if (DFS(i+1,p)) return true; used[i]=false; have[p]-=a[i]; } return false; } bool getanswer() { int i; if (data%4) return false; data/=4; memset(have,0,sizeof(have)); memset(used,false,sizeof(used)); return DFS(1,0); } bool cmp(int a,int b) { return a>b; } int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); scanf("%d",&t); while (t--) { int i; scanf("%d",&n); data=0; for (i=1;i<=n;i++) { scanf("%d",&a[i]); data+=a[i]; } sort(a+1,a+1+n,cmp); if (getanswer()) printf("yes\n"); else printf("no\n"); } return 0; }
相关文章推荐
- POJ 2362(Square-搜索剪枝1-相对顺序)
- POJ 2362:Square 觉得这才算深度搜索
- POJ 1579 DP顺序控制不容易使,改为记忆搜索 !!!
- [搜索顺序] POJ 1165 [IOI 1994] The Primes
- !POJ 2488 dfs--按顺序搜索
- poj 2362 hdoj 1518 Square(搜索)
- poj 2362 hdoj 1518 Square(搜索)
- POJ 1011 (poj 2362强化版) 搜索
- POJ 2488 A Knight's Journey (dfs+改变搜索顺序)
- POJ 2362 搜索
- poj 2362 Square 搜索
- hdu 三部曲 A Knight's Journey 简单dfs(),顺序很重要(字典序),搜索顺序的先后体现
- poj 2362 square-----搜索+剪枝
- POJ 2362 Square (搜索 + 剪枝)
- POJ-2488 A Knight's Journey(需注意搜索顺序的深搜)
- POJ 2362:Square 觉得这才算深度搜索
- Xcode增加头文件搜索路径的方法
- 让source insight 搜索到.S的文件 高亮AT&T ASM 文件keyword的方法 sourceinsight技巧
- FZU 1205(小鼠迷宫问题)BFS+DFS的基本综合运用(同一题目中体现两种搜索方法的特点)
- POJ 3523 The Morning after Halloween 搜索