1991363 2006-08-01 21:38:49 Accepted 1229 C++ 00:00.00 392K St.Crux 这个题其实是取巧了。可以证明,当n>=50时均有解。(怎么证??) 而且是自从共和元年史官们拿起笔和墨以来——也许他们拿的是苹果刀和竹子——我第一次在zoj的效率排名上排到第一页,尽管这排名是多么的虚幻和浮于流表....... 其实抛开这个50,题目还是简单的.....oibh的第一题米。类似于bfs的dp,以每一步为状态,跳到则标1。哦,我是标一个步数。 #include <cstdio>#include <string> int m, n, g;int a[49]; int main(){ //freopen("in.txt", "r", stdin); while(scanf("%d %d", &n, &m) && m | n) { g = 0; memset(a, 0, sizeof(a)); a[0] = 1; if(n < 50) { int got = 1; int c = 2; while(got && !a[m - 1]) { got = 0; for(int i = 0; i < n; i ++) { if(a[i] == c - 1) { int i0 = i + 2 * c - 1; int i1 = i - 2 * c + 1; if(i0 < n) { got = 1; a[i0] = c; } if(i1 >= 0) { got = 1; a[i1] = c; } } } c ++; //pn(); } if(a[m - 1]) g = 1; } else g = 1; if(g) printf("Let me try!\n"); else printf("Don't make fun of me!\n"); } return 0;}

评论