1737C - Ela and Crickets

news2025/7/17 8:20:33

原题链接:

Problem - 1737C - Codeforces

题目描述:

The problem, which involves a non-standard chess pieces type that is described below, reads: given 33 white crickets on a n⋅nn⋅n board, arranged in an "L" shape next to each other, there are no other pieces on the board. Ela wants to know with a finite number of moves, can she put any white cricket on the square on row xx, column yy?

An "L"-shape piece arrangement can only be one of the below:

For simplicity, we describe the rules for crickets on the board where only three white crickets are. It can move horizontally, vertically, or diagonally, but only to a square in some direction that is immediately after another cricket piece (so that it must jump over it). If the square immediately behind the piece is unoccupied, the cricket will occupy the square. Otherwise (when the square is occupied by another cricket, or does not exist), the cricket isn't allowed to make such a move.

See an example of valid crickets' moves on the pictures in the Note section.

Input

Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤1041≤t≤104). The description of the test cases follows.

The first line of each test case contains nn (4≤n≤1054≤n≤105) — denotes the size of the chessboard.

The second line of each test case contains 6 numbers: r1r1, c1c1, r2r2, c2c2, r3r3, c3c3 (1≤r1,c1,r2,c2,r3,c3≤n1≤r1,c1,r2,c2,r3,c3≤n) — coordinates of the crickets. The input ensures that the three crickets are arranged in an "L" shape that the legend stated.

The third line of each test case contains 2 numbers: xx, yy (1≤x,y≤n1≤x,y≤n) — coordinates of the target square.

Output

For each test case, print "YES" or "NO" to denotes whether Ela can put a cricket on the target square.

题目大意:

略(点题目链接,然后复制题目自行翻译吧,挺麻烦的)。

解题思路:

分类讨论:

1、四种特殊情况,L紧贴角落,则只能平移一行的两个或者一列的两个

2、常规情况,平移L,如果目标点不在一个完整的区域中,可以先到达邻近的区域,再进行一至两步操作到达终点,如果目标正好在2*2区域的孔雀位置,则无解

代码(CPP):

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
typedef long long ll;
typedef unsigned long long ull;
const int maxn = 1e3 + 10;
const int INF = 0x3fffffff;

void solve()
{
    int n, a[4][2];
    cin >> n;
    map<pair<int, int>, int> mp;
    for (int i = 1; i <= 3; i++)
    {
        cin >> a[i][0] >> a[i][1];
        mp[{a[i][0], a[i][1]}]++;
    }
    int x, y;
    cin >> x >> y;

    // 四种特殊情况,L紧贴角落
    if(mp[{1, 1}] && mp[{1, 2}] && mp[{2, 1}])
    {
        if(x == 1 || y == 1)
            cout << "YES\n";
        else
            cout << "NO\n";
        return;
    }
    if(mp[{1, n}] && mp[{1, n - 1}] && mp[{2, n}])
    {
        if(x == 1 || y == n)
            cout << "YES\n";
        else
            cout << "NO\n";
        return;
    }
    if(mp[{n, 1}] && mp[{n, 2}] && mp[{n - 1, 1}])
    {
        if(x == n || y == 1)
            cout << "YES\n";
        else
            cout << "NO\n";
        return;
    }
    if(mp[{n, n}] && mp[{n, n - 1}] && mp[{n - 1, n}])
    {
        if(x == n || y == n)
            cout << "YES\n";
        else
            cout << "NO\n";
        return;
    }

    // 常规情况,平移L,如果目标点不在一个完整的区域中,可以先到达邻近的区域,再进行一至两步操作到达终点
    // 如果目标正好在2*2区域的孔雀位置,则无解
    int xx = a[1][0] + a[2][0] + a[3][0] - 2 * max({a[1][0], a[2][0], a[3][0]});
    int yy = a[1][1] + a[2][1] + a[3][1] - 2 * max({a[1][1], a[2][1], a[3][1]});
    if((xx - x) % 2 == 0 && (yy - y) % 2 == 0)
        cout << "NO\n";
    else
        cout << "YES\n";
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cout << fixed;
    cout.precision(18);

    int t;
    cin >> t;
    while(t--)
    {
        solve();
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/6863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详细讲解磁盘及文件系统管理(图例解析)

磁盘及文件系统管理详解 目前市场上主流的磁盘是机械式硬盘 u盘&#xff0c;光盘&#xff0c;软盘&#xff0c;硬盘&#xff0c;磁带 机械式硬盘 【硬盘内部由一个个同心圆组成】如下图&#xff1a; 硬盘内部所有盘片都固定在一根“轴”上&#xff0c;所以&#xff1a;所有…

Vant的List组件列表 滑动后不触底也发送请求的Bug

&#x1f4c3;目录跳转&#x1f4da;简介&#xff1a;&#x1f389;页面效果&#xff1a;&#x1f4ad;使用Float:&#x1f9d0; 问题&#xff1a;&#x1f52d;div 转为行内块 &#xff08;解决&#xff09;&#x1f3c6;总结&#xff1a;&#x1f4da;简介&#xff1a; Vant的…

docke入门基础知识

一、Docker 架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容…

html前端跨域问题的解决方案

前言&#xff1a; 在前端发出Ajax请求的时候&#xff0c;有时候会产生跨域问题&#xff0c;报错如下: Access to XMLHttpRequest at ‘http://127.0.0.1/api/post’ from origin ‘null’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is pre…

WINSOFT ComPort轻松连接到各种串行端口和连接设备

WINSOFT ComPort轻松连接到各种串行端口和连接设备 WINSOFT ComPort是一个Delphi库和CBuilder&#xff0c;通过USB端口连接到输入设备。该库提供CP210x、CP2130、CDC、FTDI、PL2303和CH34x设备。这些标准包括广泛的设备和电气从设备。例如&#xff0c;除了标准输入设备之外&…

Android App开发之利用Glide实现图片的三级缓存Cache讲解及实战(附源码 超详细必看 简单易懂)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、利用Glide实现图片的三级缓存 图片加载框架之所以高效&#xff0c;是因为它不但封装了访问网络的步骤&#xff0c;而且引入了三级缓存的机制。具体来说&#xff0c;是先到内存中查找图片&#xff0c;找到了就直接显示内存图…

国内访问Github超级慢?那是你没有用我这个脚本。直接起飞。

导语 之前很多朋友咨询过国内访问Github较慢的问题&#xff0c;然后我一般让他们自己去知乎上找攻略&#xff0c;但今天我才发现网上竟然没有一个一键配置的脚本&#xff0c;一般都需要我们跟着教程一步步地去做才行。这也太麻烦了&#xff0c;于是自己动手写了个脚本&#xf…

2-1 C++类的转换函数与禁止隐士转换(explicit)

1. 转换函数与explicit关键字 1.1 转换函数 下述代码的第5行operator double()即是一个转换函数&#xff0c;通过这个函数&#xff0c;编译器可以在需要的情况下&#xff0c;直接将Fraction类型的对象转换为double类型。这个函数有两个特点&#xff1a;首先因为转换函数的返回…

FFplay文档解读-50-多媒体过滤器四

32.21 showspectrumpic 将输入音频转换为单个视频帧&#xff0c;表示音频频谱。 过滤器接受以下选项&#xff1a; size&#xff0c;s指定输出的视频大小。 有关此选项的语法&#xff0c;请查阅&#xff08;ffmpeg-utils&#xff09;视频大小语法。 默认值为4096x2048。 mod…

Spring Boot入门必会(基本介绍+依赖管理+自动装配)

目录 一.基础入门 1.Spring Boot 是什么? 2.SpringBoot 快速入门 2.1完成步骤 2.2快速入门小结 3.Spring SpringMVC SpringBoot 的关系 3.1梳理关系 3.2如何理解 -约定优于配置 二.依赖管理和自动配置 1.依赖管理 1.1 什么是依赖管理 1.2 修改自动仲裁/默认版本号 …

论文阅读-Federated Social Recommendation with Graph NeuralNetwork

基于图神经网络的联邦社交推荐 1. 引言 因此&#xff0c;针对社交推荐任务&#xff0c;我们设计了一个联邦学习推荐系统&#xff0c;该系统具有异构性、个性化和隐私保护要求&#xff0c;具有一定的挑战性。为此&#xff0c;设计了一个基于图神经网络(FeSoG)的联邦社交推荐框…

【RHCE】ansible的简单配置

目录 使用静态清单文件指定受管主机 定义主机清单 定义方式 使用静态主机清单指定受管主机&#xff08;默认&#xff09; 验证清单 第一种方式 第二种方式&#xff08;图表形式显示&#xff09; 选择主机和组&#xff1a; 1>匹配所有主机 2>匹配指定的主机或者主…

二叉树与树、森林之间的转换

关于树的概念 树可以称为特殊的森林 &#xff0c; 其中二叉树是树中一些节点度数最大为2 &#xff0c;并且分左右孩子的树 ● 二叉树很重要 • 结构简单 • 存储效率高 • 运算算法相对简单 • 任何森林、树都可以转换成二叉树 ● 讨论 • 二叉树 度为2 的树 ? 答: 树的度就是…

官方盘点 .NET 7 新功能

.NET 7 为C# 11/F# 7、.NET MAUI、ASP.NET Core/Blazor、Web API、WinForms、WPF 等应用程序带来了更高的性能和新功能。使用 .NET 7&#xff0c;您还可以轻松地将 .NET 7 项目容器化&#xff0c;在 GitHub 操作中设置 CI/CD 工作流&#xff0c;并实现云原生可观察性。欢迎下载…

java之Fork/Join框架

文章目录前言工作窃取算法Fork/Join框架的设计Fork/Join框架的异常处理Fork/Join框架的实现原理总结前言 Fork/Join框架是java7提供的一个用于执行并行任务的框架&#xff0c;是一个把大部分任务分割成若干个小任务&#xff0c;最终汇总每个小任务结果后&#xff0c;得到大任务…

4进程地址空间

文章目录前言1. 概念引入2. CPU和物理内存关系3.何为进程地址空间4. 为什么存在地址空间?前言 本节主要是讲解进程地址空间,区分和物理内存地址空间的差别,并且向读者解释四个疑问: 怎样验证地址空间的排布; 进程地址空间是什么; 进程地址空间和物理内存之间的关系; 为什么要…

[附源码]java毕业设计基于web的球类体育馆预定系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

数据链路层(2层 Data Link Layer)

1、数据链路层属于2层 2、传输单元&#xff1a;帧 帧格式&#xff1a; 802.3 有线网卡 802.11 无线网卡&#xff0c;无线路由器都支持802.11 802开头的都是国际标准&#xff0c;是由IEEE国际学术组织制定的标准 3、帧结构的构成&#xff1a;MAC子层&#xff08;帧头&…

MySQL表的增删改查(进阶)

目录1.数据库约束1.1约束类型1.2 NULL约束1.3 UNIQUE&#xff1a;唯一约束1.4 PRIMARY KEY: 主键约束1.5 DEFAULT&#xff1a;默认值约束1.6 FOREIGN KEY&#xff1a;外键约束2. 表的设计3. 新增4. 查询4.1 聚合查询4.1.2 GROUP BY子句4.2 联合查询4.2.1内连接4.2.2外连接4.2.3…

2022 第十四届蓝桥杯模拟赛第一期(题解与标程)

第十四届蓝桥杯模拟赛第一期1. 二进制位数问题描述答案提交参考答案2. 晨跑问题描述答案提交参考答案3. 调和级数问题描述答案提交参考答案程序验证4. 山谷问题描述答案提交参考答案5. 最小矩阵问题描述答案提交参考答案6. 核酸日期问题描述输入格式输出格式样例输入样例输出评…