solution-cf763b

神仙题

第一篇题解太简略了,本篇题解作为补充。

首先,根据四色定理,必有解。于是考虑如何构造出答案。

注意到,矩形的所有边的长度都是奇数

发现,对于两个矩形左下角坐标 $(x_i,y_i)$ 和 $(x_j,y_j)$,若满足 $x_i$ 和 $x_j$ 奇偶性相等且 $y_i$ 和 $y_j$ 奇偶性相等,则这两个矩形必定互不相邻,可以为同种颜色。这就一共有四类了,输出即可。

代码:

// Problem: Timofey and rectangles
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/CF763B
// Memory Limit: 250 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
inline void write(int x){if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');}
#define put() putchar(' ')
#define endl puts("")

const int MAX = 5e5+10;
const int MAX2 = 1e9;
int dx[MAX], dy[MAX], ex[MAX], ey[MAX];

void solve(){
    puts("YES");
    int n = read();
    for(int i = 1; i <= n; i++){
        int dx = read(), dy = read(), ex = read(), ey = read();
        if(dx % 2 and dy % 2)   puts("4");
        else if(dx % 2) puts("3");
        else if(dy % 2) puts("2");
        else puts("1"); 
    }
}

signed main(){
    int t = 1;
    while(t--)  solve();
    return 0;
}
posted @ 2023-04-23 17:14  WRuperD  阅读(0)  评论(0编辑  收藏  举报  来源

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

这是一条自定义内容

这是一条自定义内容