JEOI-R1:棋
「JEOI-R1棋
题目前言
巨大诈骗题
题面
题目描述
现在有一个
现有若干询问,每次询问给定
为了减少程序时间复杂度的常数影响,建议使用更快的读入方式。
输入格式
第一行三个正整数
接下来
接下来一行一个正整数
接下来
输出格式
对于每个询问,如果可以移动棋子(无次数限制)使得矩阵内有且仅有给定的位置上有棋子,输出 YES
,否则输出 NO
。
样例 #1
样例输入 #1
3 3 5
1 2
1 3
2 1
3 2
3 3
3
1 2 2 3 0
1 2 3 3 4
1 2
1 3
2 3
3 3
1 1 2 3 2
1 3
2 2
样例输出 #1
NO
YES
NO
@ 提示
【样例解释 #1】
解释以 0
代表空位,1
代表放置了棋子的位置。
初始状态:
011
100
011
对于第一个询问,可以证明
对于第二个询问,考虑把
011
101
001
满足询问要求。移动方式不唯一。
对于第三个询问,可以证明
【数据范围】
对于
对于另外
对于另外
对于
【提示与说明】
提供一种较快的读入一个 int
类型非负整数的方式。调用下文中的 read()
,其作用是返回输入中的一个非负整数,同时读取其后的一个字符。
int read() {
int x(0);
char c(getchar());
while (c < '0' || c > '9') c = getchar();
while (c >= '0' && c <= '9') x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
return x;
}
题解
巨大诈骗题
首先看着移动方式:
棋子可以走向
不难发现,更改后的
以下称一类格为横纵坐标之和为奇的格子,零类格为横纵坐标之和为偶的格子
引理 :
一个棋子可以到达棋盘上与其同类的格子
由移动前后奇偶性不变可得必要性,现在来证明充分性。
本题的棋子移动数量不限,则可以以一种延迟撤回的思想,即由这个棋子往目标方向跳,若有撞上的则将撞上的移开,若撞上的那个棋子无路可走,则又移动撞上的那个棋子的周围棋子,如此类似递归步骤,可知这个棋子无论如何可以被移开。故充分性得证。
那么本题做法就比较明显了:先预处理出原矩阵
然后我们讨论对于这些变量的求法。首先若
而对于
十年OI一场空,不开longlong见祖宗
#include<iostream>
#include<cstdio>
#include<algorithm>
#define int long long
using namespace std;
int n,m,t1,t0,p,q0,q1,s1,s0,a,b,c,d;
int read() {
int x(0);
char c(getchar());
while (c < '0' || c > '9') c = getchar();
while (c >= '0' && c <= '9') x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
return x;
}
signed main(){
n=read(),m=read(),c=read();
q1=n*m/2,q0=n*m-q1;
for(int i=1;i<=c;i++){
int x=read(),y=read();
if((x+y)&1)s1++;
else s0++;
}
int t=read();
while(t--){
int x1=read(),y1=read(),x2=read(),y2=read();
int l=x2-x1+1,r=y2-y1+1,p0=0,p1=0;
if((l*r)&1){
if((x1+y1)&1){
t0=l*r/2;
t1=l*r-t0;
}
else {
t1=l*r/2;
t0=l*r-t1;
}
}
else {
t1=l*r/2;
t0=l*r/2;
}
int q=read();
for(int i=1;i<=q;i++){
int x=read(),y=read();
if((x+y)&1)p1++;
else p0++;
}
if(p0<=s0&&p1<=s1&&(s0+t0)<=(q0+p0)&&(s1+t1)<=(q1+p1))puts("YES");
else puts("NO");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!