首页 > 其他分享 >洛谷P1518两只塔姆沃斯牛

洛谷P1518两只塔姆沃斯牛

时间:2024-10-01 14:54:01浏览次数:3  
标签:洛谷 cow int 塔姆沃 else farmer P1518 type dir

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using u64 = unsigned long long;
using u32 = unsigned;
char m[12][12];
int farmer[3];
int cow[3];
bool zt[200000];
int ans;
void move(int x, int y, int dir, int type)
{
    if(dir == 0)
    {
        if(m[x-1][y] == '*')
        {
            if(type == 0)
            {
                farmer[0] = 1;
            }else
            {
                cow[0] = 1;
            }
        }else if(type == 0)
        {
            farmer[1]--;
        }else
        {
            cow[1]--;
        }

    }

    if(dir == 1)
    {
        if(m[x][y+1] == '*')
        {
            if(type == 0)
            {
                farmer[0] = 2;
            }else
            {
                cow[0] = 2;
            }
        }else if(type == 0)
        {
            farmer[2]++;
        }else
        {
            cow[2]++;
        }
    }

    if(dir ==2)
    {
        if(m[x+1][y] == '*')
        {
            if(type == 0)
            {
                farmer[0] = 3;
            }else
            {
                cow[0] = 3;
            }
        }else if(type == 0)
        {
            farmer[1]++;
        }else
        {
            cow[1]++;
        }
    }

    if(dir == 3)
    {
        if(m[x][y-1] == '*')
        {
            if(type == 0)
            {
                farmer[0] = 0;
            }else
            {
                cow[0] = 0 ;
            }
        }else if(type == 0)
        {
            farmer[2]--;
        }else
        {
            cow[2]--;
        }
    }
}

bool res()
{
    if(farmer[1] == cow[1] && farmer[2] == cow[2] )
    {
        return false;
    }else
    {
        return true;
    }
}

int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    for(int i = 0; i <= 11 ; i++)
    {
        m[i][0] = '*';
        m[i][11] = '*';
    }

    for(int i = 1 ; i <= 10; i++)
    {
        m[0][i] = '*';
        m[11][i] = '*';
    }

    for(int i = 1; i <= 10; i++)
    {
        for(int j = 1; j <= 10; j++)
        {
            cin >> m[i][j];
            if(m[i][j] == 'F')
            {
                farmer[1] = i;
                farmer[2] = j;
            }
            if(m[i][j] == 'C')
            {
                cow[1] = i;
                cow[2] = j;
            }
        }
    }

    while(res())
    {
        int spe = farmer[1] + farmer[2]*10 + cow[1]*100+ cow[2]*1000 + farmer[0] *10000+cow[0]*40000;
        if(zt[spe])
        {
            cout << 0 << endl;
            return 0;
        }
        zt[spe] = 1;

        move(farmer[1] , farmer[2] , farmer[0], 0);
        move(cow[1] , cow[2] , cow[0] , 1);
        ans++;
    }
    cout << ans << endl;
    return 0;
}

标签:洛谷,cow,int,塔姆沃,else,farmer,P1518,type,dir
From: https://blog.csdn.net/2401_83010439/article/details/142651300

相关文章

  • 【洛谷】AT_abc079_d [ABC079D] Wall 的题解
    【洛谷】AT_abc079_d[ABC079D]Wall的题解洛谷传送门AT传送门题解不懂就问,为什么ABC很喜欢出板子题。经典的Floydqaq题目给出了一个二维数组和000~......
  • (洛谷)题目题号P1047 [NOIP2005 普及组] 校门外的树
    Hello大家好我是小亦,这是今天发布的第二篇题解,唉我就在想怎么样才能把粉丝提上来呢隔壁朋友都比我高了好多唉苦恼qwq,好吧接受现实,好那么好今天我们来讲的是来自于NOIP2005年普及组的真题名叫:校门外的树,其实这道题跟其他几道题很相似,应该是同一家的吧qwq,好了不废话了思路给大家q......
  • 数组中洛谷p1427小鱼的数字游戏
    先来看看题目吧:然后先来复习一下数组:你需要了解:数组的定义,数组的创建,数组的初始化,数组的使用(尤其是数组下标是从零开始的!)然后就来看思路吧:......
  • 洛谷题单指南-分治与倍增-P6648 [CCC2019] Triangle: The Data Structure
    原题链接:https://www.luogu.com.cn/problem/P6648题意解读:在一个n行的数字三角形中,求所有边长为k的正三角形最大值之和。解题思路:1、枚举法枚举每一个边长为k的三角形,在其中求max,然后累加,n最多3000,时间复杂度是n^4,显然超时。2、倍增和ST思想此题非常类似于RMQ问题,也就是求区......
  • 字符串中洛谷B2124判断字符串是否为回文
     #include<stdio.h>intmain(){  charstr[80];  inti,count=0;  intt=0;   gets(str);//输入   for(i=0;str[i]!='\0';i++)//遇到字符串结束标志'\0'时停止计数    count++;//统计共有多少个字符   for(i=0;i<count/2;i++......
  • 洛谷每日一题(P2580 于是他错误的点名开始了)字典树/哈希表
    原题目链接:P2580于是他错误的点名开始了-洛谷|计算机科学教育新生态(luogu.com.cn)原题目截图:思路分析:解法一:哈希表法显而易见的一种思路,我们不妨模拟一下:当教练每次点名,我作为特派员,便查看一下有没有这个学生,是不是点过了这个学生。我们查看的过程,就依赖于一张表......
  • 洛谷每日一题(P1481 魔族密码)字典树解法
    原题目链接:P1481魔族密码-洛谷|计算机科学教育新生态(luogu.com.cn)原题目截图:思路分析:这道题的话其实有很多种方法,可以用动态规划做,不过我一看到这道题,脑子里不禁蹦出一个数据结构:“字典树”!字典树+深度优先搜索。那么在这之前,我们先来了解一下什么是字典树吧!什......
  • 洛谷 P1672
    前缀和降低区间和查询问题的时间复杂度,分一维和二维一种数据预处理手段,一般配合其他算法查分、二分搜索二分:容斥原理。sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];差分前缀和相对的策略,可当做求和的逆运算a[l]++;a[r+1]--;洛谷P1672......
  • 洛谷P1827 [USACO3.4] 美国血统 题解
    上题目:题目描述农夫约翰非常认真地对待他的奶牛们的血统。然而他不是一个真正优秀的记帐员。他把他的奶牛们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而不是用图形的方法。你的任务是在被给予奶牛家谱的“树中序遍历”和......
  • 洛谷P1162 填涂颜色题解
    老规矩上题目:题目描述由数字 00 组成的方阵中,有一任意形状的由数字 11 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 22。例如:6×66×6 的方阵(n=6n=6),涂色前和涂色后的方阵如下:如果从某个 00 出发,只向上下左右 44 个方向移动且仅经过其他 00 的情况下,无法......