HDU 4665
来源:互联网 发布:ubuntu与linux的区别 编辑:程序博客网 时间:2024/04/30 03:14
HDU 4665
题意:给出一段数字,要求平均分成两组,相对位置不变,两组位置相同的数字要相等,求任意解。
虽然N有2000,但是相同的数字不超过4个,又因为所有数字都要用上,所以情况其实不算很多,DFS可以很好的解决,但是还是没能当场做出来,可惜。
#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <vector>#include <string>#include <map>#include <set>#include <sstream>#include <iostream>#include <algorithm>#include<cstdlib>#include<queue>using namespace std;#define N 2005#define L(x) x<<1#define R(x) x<<1|1#define M(x,y) (x + y)>>1#define MOD 1000000007#define MODD 1000000006#define inf 0x7fffffff#define llinf 0x7fffffffffffffff#define LL __int64int s[N];int ans[N];int visit[N];int next_[N + N];int flag;int t,n;void addpoint(int x,int th){ next_[th] = visit[x]; visit[x] = th;}void out(){ for(int i = 1;i <= n;i++) printf("%d",ans[i]); printf("\n");}void dfs(int l,int r,int num){/* cout<<endl<<l<<' '<<r<<' '<<num<<endl;; for(int i = 1;i <= n;i++) cout<<ans[i]<<' '; cout<<endl;*/ if(num == n) { flag = 1; out(); return ; } if(flag || r <= 0) return ; if(ans[l] != -1) { dfs(l - 1,r,num); return ; } int mark[4] = {-1,-1,-1,-1}; for(int i = l,j = 0;i != -1;i = next_[i],j++) mark[j] = i; if(r >= mark[1] && flag == 0) { ans[l] = 1; ans[mark[1]] = 0; dfs(l - 1,mark[1] - 1,num + 2); ans[l] = -1; ans[mark[1]] = -1; }// cout<<" show "<<mark[2]<<' '<<flag<<' '<<r<<endl; if(mark[2] != -1 && flag == 0 && r >= mark[2]) { ans[l] = 1; ans[mark[2]] = 0; dfs(l - 1,mark[2] - 1,num + 2); ans[l] = -1; ans[mark[2]] = -1; } return ;}int main(){ int i,j,k; scanf("%d",&t); while(t--) { memset(visit,-1,sizeof(visit)); memset(ans,-1,sizeof(ans)); scanf("%d",&n); for(i = 1;i <= n;i++) { scanf("%d",&s[i]); addpoint(s[i],i); } flag = 0; dfs(n,n - 1,0); } return 0;}
- hdu 4665
- HDU 4665
- hdu 4665 Unshuffle (DFS)
- HDU 4665 Unshuffle
- hdu 4665 Unshuffle
- hdu - 4665 - Unshuffle
- HDU 4665 题解
- hdu 4665Unshuffle
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- hdu 2602 Bone Collector
- HDU 2517 / POJ 1191 棋盘分割 区间DP / 记忆化搜索
- HDOJ 1325 Is It A Tree? 杭电 ACM
- intent.putExtra() 和 bundle.putExtra()的区别
- python杂记
- HDU 4665
- hdu 4655——Cut Pieces
- CentOS 安装MongoDB
- 设置JqueryUI DatePicker默认语言为中文
- mysql 使用经验
- 神奇的图像处理算法(Amazing algorithms to enhance or transform images)
- 通过GDI+我们可以很方便的对bmp、jpeg、gif、tiff、png格式的图片进行转换。
- strcpy与 memcpy
- 互联网本质就是广告,就不要想离开他