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 |
这个问题是在让我震惊!!!In Reply To:大家帮忙看看啊!!救命啊! Posted by:AlbertTry at 2009-12-11 16:25:11 #include <iostream> using namespace std; // 下面是我极其惊讶的地方,如果将pos[64] 换成 aaa[64],或其他名字,在我的编译器上运行一切正常,但是提交WA。 // 还有 变量 m(表示每个case中大蛋糕的size) 换成其他的名字,比如siaze 就提交WA。 // 我实在不解,我昨天花了一天的时间调试,最后发现只是变量换个名字就可以AC了。POJ让我哭笑不得。 int cake[11] , pos[64] , cs , m , n ; bool check() { int i , j , lie , w=0 , h , tp, minh=41; if(n==0) return true; for(i=0;i<m;++i) if(pos[i]<minh) // 找到pos[i]最小的那一列。 { minh=pos[i], lie=i; } while(pos[lie+w]==minh && lie+w<m ) ++w; h = m-minh ; tp = h<w ? h : w ; // tp是下个位置可以放进去的最大的cake的边长。 for( i=tp; i>0; i--) { if( cake[i] ) { --cake[i]; --n; for(j=0;j<i;++j) pos[lie+j] += i; if( check() ) return true; ++cake[i]; ++n; for(j=0;j<i;++j) pos[lie+j] -= i; } } return false; } int main() { //freopen("in.txt","r",stdin); scanf("%d",&cs); while(cs--) { scanf("%d %d",&m, &n); int i ,t ,sum=0; memset(cake,0,sizeof(cake)); memset(pos,0,sizeof(pos)); for(i=0;i<n;++i) { scanf("%d",&t); ++cake[t]; sum += (t*t); } if( m*m==sum && check() ) printf("KHOOOOB!\n"); else printf("HUTUTU!\n"); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator