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;
}
评论