4452 模拟水题

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

int abs(int a)
{
    return a>0?a:(-a+1);
}
int main()
{
    int n,i,j,s1,t1,s2,t2,m;
    char first[5],second[5];
    while(~scanf("%d",&n),n)
    {
        scanf("%s",first);
        scanf("%d%d",&s1,&t1);
        scanf("%s%d%d",second,&s2,&t2);
        scanf("%d",&m);
        int fx=1,fy=1,sx=n,sy=n;
        for(i=1;i<=m;i++)
        {
            if(first[0]==‘W‘)
            {
                if(fy-1<s1)
                {
                    fy=s1-fy+2;
                    first[0]=‘E‘;
                }
                else fy-=s1;
            }
            else if(first[0]==‘E‘)
            {
                if(n-fy<s1)
                {
                    fy=2*n-s1-fy;
                    first[0]=‘W‘;
                }
                else fy+=s1;
            }
            else if(first[0]==‘N‘)
            {
                if(fx-1<s1)
                {
                    fx=s1-fx+2;
                    first[0]=‘S‘;
                }
                else fx-=s1;
            }
            else
            {
                if(n-fx<s1)
                {
                    fx=2*n-s1-fx;
                    first[0]=‘N‘;
                }
                else fx+=s1;
            }
            if(second[0]==‘W‘)
            {
                if(sy-1<s2)
                {
                    sy=s2-sy+2;
                    second[0]=‘E‘;
                }
                else sy-=s2;
            }
            else if(second[0]==‘E‘)
            {
                if(n-sy<s2)
                {
                    sy=2*n-s2-sy;
                    second[0]=‘W‘;
                }
                else sy+=s2;
            }
            else if(second[0]==‘N‘)
            {
                if(sx-1<s2)
                {
                    sx=s2-sx+2;
                    second[0]=‘S‘;
                }
                else sx-=s2;
            }
            else
            {
                if(n-sx<s2)
                {
                    sx=2*n-s2-sx;
                    second[0]=‘N‘;
                }
                else sx+=s2;
            }
            if(fx==sx&&fy==sy)
            {
                char p=first[0];
                first[0]=second[0];
                second[0]=p;
            }
            else
            {
                if(i%t1==0)
                {
                    if(first[0]==‘W‘) first[0]=‘S‘;
                    else if(first[0]==‘E‘) first[0]=‘N‘;
                    else if(first[0]==‘N‘) first[0]=‘W‘;
                    else first[0]=‘E‘;
                }
                if(i%t2==0)
                {
                    if(second[0]==‘W‘) second[0]=‘S‘;
                    else if(second[0]==‘E‘) second[0]=‘N‘;
                    else if(second[0]==‘N‘) second[0]=‘W‘;
                    else second[0]=‘E‘;
                }
            }
        }
        printf("%d %d\n",fx,fy);
        printf("%d %d\n",sx,sy);
    }
    return 0;
}
时间: 2024-11-08 18:59:02

4452 模拟水题的相关文章

POJ 3030. Nasty Hacks 模拟水题

Nasty Hacks Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13136   Accepted: 9077 Description You are the CEO of Nasty Hacks Inc., a company that creates small pieces of malicious software which teenagers may use to fool their friends.

HDOJ 2317. Nasty Hacks 模拟水题

Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3049    Accepted Submission(s): 2364 Problem Description You are the CEO of Nasty Hacks Inc., a company that creates small pieces of

poj 2497 Strategies 模拟水题

水题,直接贴代码. //poj 2497 //sep9 #include <iostream> #include <algorithm> using namespace std; int a[32]; int main() { int cases,c=0; scanf("%d",&cases); while(cases--){ int tot,n; scanf("%d%d",&tot,&n); int x2,y2,t;

poj 3444 Wavelet Compression 模拟水题

水题,直接贴代码. //poj 3444 //sep9 #include <iostream> using namespace std; const int maxN=260; int a[maxN],b[maxN]; int main() { int i,n,m; while(scanf("%d",&n)==1&&n){ for(i=1;i<=n;++i) scanf("%d",&a[i]); m=1; while

poj 3103 Cutting a Block 模拟水题

水题 #include <iostream> using namespace std; int main() { int x,y,z,n; scanf("%d%d%d%d",&x,&y,&z,&n); for(int i=0;i<n;++i) printf("0 0 %.8lf %d %d %.8lf\n",(z*1.0/n)*i,x,y,(z*1.0/n)*(i+1)); return 0; } 版权声明:本文为博

模拟水题,查看二维数组是否有一列都为1(POJ2864)

题目链接:http://poj.org/problem?id=2864 题意:参照题目 哈哈哈,这个题discuss有翻译哦.水到我不想交了. #include <cstdio> #include <cstdlib> #include <cstring> int arr[510][110]; int main(void) { int r, c; int i, j; int flag; while(scanf("%d%d", &c, &

HDU4287-STL模拟水题

一场2012天津网络预选赛的题,签到题. 但是还是写了三四十分钟,C++和STL太不熟悉了,总是编译错误不知道怎么解决. 一开始用的Char [] 后来改成了string,STL和string搭配起来才好用啊. 1 #include <algorithm> 2 #include <iostream> 3 #include <cstring> 4 #include <ctype.h> 5 #include <cstdlib> 6 #include

【HDU 1889】Reaux! Sham! Beaux!(模拟+水题)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1889 题意:给出一个表,每个国家的石头剪子布的叫法,给两个人用自己国家的语言进行石头剪子布,进行统计,最后输出胜负信息. 分析:就是模拟,先用map去映射每一个字符串,3种分别为1,2,3,然后进行统计判定即可,注意坑点就是输出时候有单复数区别,还有输出格式比较容易错. 代码: /* *********************************************** Author :Tor

模拟水题,牛吃草(POJ2459)

题目链接:http://poj.org/problem?id=2459 题目大意:有C头牛,下面有C行,每头牛放进草地的时间,每天吃一个草,总共有F1个草,想要在第D的时候,草地只剩下F2个草. 解题思路:模拟啊,就像砍树一样的问题,把每天失去的草计算出来,从最后一天往前推. #include <cstdio> #include <cstring> int C,F1,F2,D; int a[2005]; int main() { while (scanf("%d%d%d%