cf547D. Mike and Fish(欧拉回路)

题意

题目链接

Sol

说实话这题我到现在都不知道咋A的。

考试的时候是对任意相邻点之间连边,然后一分没有

然后改成每两个之间连一条边就A了。。

按说是可以过掉任意坐标上的点都是偶数的数据啊。。

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<vector>
#include<cstring>
#include<queue>
#define Pair pair<int, int>
#define MP(x, y) make_pair(x, y)
#define fi first
#define se second 
using namespace std;
const int MAXN = 2e5 + 10, INF = 1e9 + 10, mod = 998244353;
inline int read() {
    char c = getchar(); int x = 0, f = 1;
    while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();}
    while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
    return x * f;
}
int N;
int x[MAXN], y[MAXN], date[MAXN], numx[MAXN], numy[MAXN];
vector<int> E[MAXN];
vector<Pair> tmp[MAXN];
void Get(int *a) {
    for(int i = 1; i <= N; i++) date[i] = a[i];
    sort(date + 1, date + N + 1);
    int num = unique(date + 1, date + N + 1) - date - 1;
    for(int i = 0; i <= num; i++) tmp[i].clear();
    for(int i = 1; i <= N; i++) a[i] = lower_bound(date + 1, date + num + 1, a[i]) - date - 1, tmp[a[i]].push_back(MP(a[i], i));
    for(int i = 0; i <= num; i++) {
        if(tmp[i].size() < 2) continue;
        sort(tmp[i].begin(), tmp[i].end());
        for(int j = 0; j < tmp[i].size() - 1; j += 2) {
            int x = tmp[i][j].se, y = tmp[i][j + 1].se;
            E[x].push_back(y);
            E[y].push_back(x);
        }
    }
}
int vis[MAXN], vis2[MAXN];
void BFS(int k) {
    queue<int> q;
    vis[k] = 1; q.push(k); 
    while(!q.empty()) {
        int p = q.front(); q.pop(); 
        if(vis2[p]) continue; vis2[p] = 1;
        for(int i = 0; i < E[p].size(); i++) {
            int to = E[p][i];
            vis[to] = vis[p] ^ 1;
            q.push(to);
        }
    }
    
}
int main() {
    N = read();
    for(int i = 1; i <= N; i++) x[i] = read(), y[i] = read();
    Get(x); Get(y);
    for(int i = 1; i <= N; i++) if(!vis2[i]) BFS(i);
    for(int i = 1; i <= N; i++) putchar(vis[i] == 0 ? 'b' : 'r');
    return 0;
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏iOS技术杂谈

iOS runtime探究(三): 从runtime开始理解OC的属性property你要知道的runtime都在这里

你要知道的runtime都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本文主要讲解...

33490
来自专栏蓝天

sed 学习笔记(转)

声明:这些代码只是为了学习和理解sed命令而为之,并不代表问题的唯一解或最佳解,希望各位拍砖

9120
来自专栏窗户

awk的递归

  想来惭愧,之前写的一篇文章《用awk写递归》里多少是传递了错误的信息。虽然那篇文章目的上是为了给出一种思路,但实际上awk是可以支持函数局部变量的。

12420
来自专栏数据结构与算法

洛谷P3808 【模板】AC自动机(简单版)

subtask1[50pts]:∑length(模式串)<=10^6,length(文本串)<=10^6,n=1;

12820
来自专栏深度学习之tensorflow实战篇

R语言读CSV、txt文件方式以及read.table read.csv 和readr(大数据读取包)

首先准备测试数据*(mtcars) 分别为CSV. TXT read.table 默认形式读取CSV(×)与TXT(效果理想) ? ① > t...

3.6K60
来自专栏C语言及其他语言

【每日一题】1444: [蓝桥杯][历届试题]斐波那契

这道题,咳咳,大家要认真想一想!因为此斐波那契非彼斐波那契! 题目描述 斐波那契数列大家都非常熟悉。它的定义是: f(x) = 1 .... (x...

31740
来自专栏C语言及其他语言

【每日一题】 问题 1233: 核电站问题

一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续3个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。现在,请你计算:对于给定的N,求不发...

33220
来自专栏数据结构与算法

LOJ#6284. 数列分块入门 8

6284. 数列分块入门 8 内存限制:256 MiB 时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录...

277100
来自专栏数据结构与算法

BZOJ4195: [Noi2015]程序自动分析(并查集)

考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别...

8920
来自专栏数据结构与算法

LOJ#6281. 数列分块入门 5

内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计讨论 1 测试数据 题...

335110

扫码关注云+社区

领取腾讯云代金券