Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
wa了wa了,谁能救救我。!~~~~#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define N 1000 int col[N]; int re[N]; int a[N]; bool vist[N]; int m,n; int u; int mincol; bool dfs(int cont) { int i; if(cont==m) return true; int min = 10000; for(i = 1;i<=n;i++) if(min>col[i]) { u = i; min = col[i]; } for(i = m;i>=1;i--) { if(u+a[i] - 1<=n&&min+a[i] - 1 <=n&&!vist[i]) { bool flag = true; for(int j = u;j<u+a[i];j++) if(col[j]>min) { flag = false; break; } if(flag) { for(int j = u;j<u+a[i];j++) col[j]+=a[i]; vist[i] = true; if(dfs(cont+1)) return true; vist[i] = false; for(int j = u;j<u+a[i];j++) col[j]-=a[i]; } } } return false; } int main() { //freopen("in","r",stdin); int t; scanf("%d",&t); while(t--) { memset(vist,false,sizeof(vist)); scanf("%d%d",&n,&m); int sum = 0; for(int i = 1;i<=m;i++) { scanf("%d",&a[i]); sum+=a[i]*a[i]; } if(sum!=n*n) { printf("HUTUTU!\n"); continue; } sort(a+1,a+m+1); fill(col,col+n+1,1); if(dfs(0)) { printf("KHOOOOB!\n"); } else printf("HUTUTU!\n"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator