codeforecs Gym 100286B Blind Walk

一个好玩的交互式程序,要用到一个函数fflush,它的作用是对标准输出流的清理,对stdout来说是及时地打印数据到屏幕上,一个事实:标准输出是以『行』为单位进行的,也即碰到\n才打印数据到屏幕。这就可能造成延时。在Windows平台上是看不出来的,它被改成及时生效了。而fflush对stdin的作用是清除冗余输入。

#include<cstdio>

const int maxn = 123; //要AC
const int maxlen = 42;
bool vis[maxn][maxn];
char dir[4][maxlen] = {"NORTH","EAST","SOUTH","WEST"};
char done[] = "DONE";

int dx[] = {0,1,0,-1} , dy[] = {1,0,-1,0};
char response[maxlen];

bool Move(int d)
{
    puts(dir[d]);
    fflush(stdout);
    gets(response);
    return *response == ‘E‘;
}

void dfs(int x,int y)
{
    vis[x][y] = true;
    for(int i = 0; i < 4; i++) {
        int nx = x + dx[i], ny = y + dy[i];
        if(!vis[nx][ny] && Move(i)) dfs(nx,ny),Move((i+2)%4);
        else vis[nx][ny] = true;
    }
}

int main()
{
    int x = 42, y = 42;
    dfs(x,y);
    puts(done);
    fflush(stdout);
    return 0;
}
时间: 2024-11-03 21:33:30

codeforecs Gym 100286B Blind Walk的相关文章

F - Philosopher&#39;s Walk Gym - 101667F

题意:如图所示,方格按图中的顺序进行标号,给定区域的边长和一个值,问此值所在的格子坐标 思路:将区域划分成四份,逐渐将所求的范围减小,进行递归求解,直到边长为2时, 直接返回坐标.返回坐标后,根据图形的翻转方向,重新计算坐标 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 typedef long long ll; 5 6 struct Point { 7 int x, y; 8 }; 9 10 Point dfs(int n, in

Gym 101667F Philosopher&#39;s Walk

题目大意: 哲学家用递归的方式构造里一个地图并按其散步,现在,已知图的边长,以及哲学家的步数,求哲学家的位置坐标.构图方式如下: 输入保证边长为2^k的形式,且0<k<=15. 思路:    先判断哲学家在记录当前图的哪一个方框(主要是左下和右下可能加的不一样),从那个方框的起点,走了多少步到目标位置:在将图缩小到上一个,做同样操作.最后从最小的图开始按照记录走回来,就求出坐标了. //显然是要写递归的,但我开始想错了写成了一个简单的循环,修改时直接加了个手写栈,所以我的代码可能比较长. 1

ACM: Gym 101047E Escape from Ayutthaya - BFS

Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Practice Description standard input/output Ayutthaya was one of the first kingdoms in Thailand, spanning since its foundation in 1350 to it

CodeForces Gym 101047E Escape from Ayutthaya BFS

Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Gym 101047E Description standard input/output Ayutthaya was one of the first kingdoms in Thailand, spanning since its foundation in 1350 to its collaps

CodeForces Gym 100935D Enormous Carpet 快速幂取模

Enormous Carpet Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Gym 100935D Description standard input/outputStatements Ameer is an upcoming and pretty talented problem solver who loves to solve problems using computers.

B - Average Gym - 101161B 组合数学

http://codeforces.com/gym/101161/attachments 今天被卡常了,其实是自己对组合数技巧研究的不够. 如果是n, m <= 1e5的,然后取模是质数,那么可以用费马小定理. 如果n, m都比较小,那么其实是直接杨辉三角.不用逆元那些. 这题的思路是,枚举每一一个ave,然后总和就是n * ave 相当于方程  x1 + x2 + .... + xn = n * ave中,在0 <= x[i] <= full的情况下,不同解的个数中,使得x[i] ==

Codeforces Gym 100269 Dwarf Tower (最短路)

题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game named "Dwarf Tower". In this game there are n different items,which you can put on your dwarf character. Items are numbered from 1 to n. Vasya want

CodeForces Gym 101063C 二进制压缩

http://codeforces.com/gym/101063/problem/C 给n个人,m样物品,每个人可以从物品中选择几样.两人选择物品的交集元素个数比上并集元素个数如果大于某个比例即可将两人配对.求配对数. n的范围是1e5,直接比较所有人的选择会TLE,应该将所有选择物品的情况用二进制压缩,m最大是10,情况数目小于2048,可以接受.注意配对总数范围应为long long. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> i

Gym 101246H ``North-East&#39;&#39;(LIS)

http://codeforces.com/gym/101246/problem/H 题意: 给出n个点的坐标,现在有一个乐队,他可以从任一点出发,但是只能往右上方走(包括右方和上方),要经过尽量多的点.输出它可能经过的点和一定会经过的点. 思路: 分析一下第一个案例,在坐标图上画出来,可以发现,他最多可以经过4个点,有两种方法可以走. 观察一下,就可以发现这道题目就是要我们求一个LIS. 首先,对输入数据排一下顺序,x小的排前,相等时则将y大的优先排前面. 用二分法求LIS,这样在d数组中就可