CF1465-C. Peaceful Rooks

预备小知识:

Rook(国际象棋中的车)。

国际象棋中的棋子。每人有2个,他只能直走,不能斜走,除王车易位外不能越子。

—— 来自《百度百科》


题意:

题目给出一个\(n\times n\)的棋盘,棋盘中有\(m(m<n)\)个车。最一开始任意两个车都不能打到对方(即都不在同一行或同一列)。

每一个回合你可以让一个车水平或垂直移动任意距离,但是要求车移动后不能让其他车可以打到它。现在问你至少多少回合之后,所有车能够都移动到主对角线上。


思路:

正常情况下每个车直接移动到它对应的主对角线上肯定是最优解。

但是大部分情况下车要移动到它对应的主对角线上的时候会发现那个位置要么所在行有车,要么所在列有车,那么所在行或列上的那个棋子就要先移动到那个棋子对应的主对角线上,但是又发现那个棋子对应主对角线上的位置的行或列有车,那么就要... ...这种最终会有两种情况发生:

一种是最终的棋子对应的主对角线位置所在行或列上都没有棋子,那么这时候它以及它之前的所有棋子都可以一步到达主对角线上;

另一种是最终的棋子对应的主对角线位置所在行或列上有棋子,并且这个棋子是第一个棋子,即形成了这样的环:\(a->b->c->d->a\),那么这时候只要也只有破坏这个环之后,才能把每个棋子移动到主对角线位置。破坏的方法其实很简单,只要把环中的某一个棋子移动到一个所在行所在列没有其他棋子的位置就可以破坏这个环,等其他棋子都移动到主对角线上再把这个棋子移动到它对应的主对角线上即可。这样第二种情况移动的总次数就是环中所有棋子的个数加一(破坏环的时候多移动了一步)。

判断环就用并查集就可以(本蒟蒻一开始还用dfs。。),每个车\((x, y)\)相当于一个边连接了点\(x\)和点\(y\),答案就是不在对角线上车的数量加上环的数量。


AC代码:

#include <cstdio>
#include <cstring>
#include <iostream> const int maxn = 100005; int father[maxn]; int Find(int x) {
return father[x] == x ? x : father[x] = Find (father[x]);
} void Union(int u, int v) {
if (Find(u) != Find(v)) {
father[Find(u)] = Find(v);
}
} int main() {
int T, n, m;
scanf("%d", &T);
while (T--) {
scanf("%d %d", &n, &m);
for (int i = 0; i <= n; i++) {
father[i] = i;
}
int u, v;
int ans = 0;
for (int i = 0; i < m; i++) {
scanf("%d %d", &u, &v);
if (u == v) {
continue;
} else if (Find(u) == Find(v)) {
ans += 2;
} else {
ans += 1;
Union(u, v);
}
}
printf("%d\n", ans);
} return 0;
}

CF1465-C. Peaceful Rooks的更多相关文章

  1. Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3) C. Peaceful Rooks (思维,dsu找环)

    题意:一个棋盘上有一些"车",现在要让这些"车"跑到左倾斜的对角线上,每次可以移动一个棋子,但是棋盘的任意时刻都不能出现一个"车"能吃另一个 ...

  2. Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)

    A.In-game Chat 题目:就是从后面数连着的'('的个数是不是严格比剩下的字符多 思路:水题,直接从后往前遍历即可 代码: #include<iostream> #include ...

  3. UVA - 11134 Fabled Rooks[贪心 问题分解]

    UVA - 11134 Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n × n board subject to t ...

  4. (light OJ 1005) Rooks dp

    http://www.lightoj.com/volume_showproblem.php?problem=1005        PDF (English) Statistics Forum Tim ...

  5. 01_传说中的车(Fabled Rooks UVa 11134 贪心问题)

    问题来源:刘汝佳<算法竞赛入门经典--训练指南> P81: 问题描述:你的任务是在n*n(1<=n<=5000)的棋盘上放n辆车,使得任意两辆车不相互攻击,且第i辆车在一个给定 ...

  6. uva 11134 fabled rooks (贪心)——yhx

    We would like to place n rooks, 1 n 5000, on a n nboard subject to the following restrictions• The i ...

  7. L - Fabled Rooks(中途相遇法和贪心)

    Problem F: Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n×n board subject to the ...

  8. UVA 11134 - Fabled Rooks(贪心+优先队列)

    We would like to place  n  rooks, 1 ≤  n  ≤ 5000, on a  n×n  board subject to the following restrict ...

  9. 贪心 uvaoj 11134 Fabled Rooks

    Problem F: Fabled Rooks We would like to place n rooks, 1 ≤ n ≤ 5000, on a n×n board subject to the ...

随机推荐

  1. 攻防世界—pwn—level0

    题目分析 下载文件后首先使用checksec检查文件保护机制 文件名太长了,就更改了一下 发现是一个64位程序,使用ida查看伪代码 注意到一个特殊的函数名callsystem 确定思路,直接栈溢出 ...

  2. 图像分割论文 | DRN膨胀残差网络 | CVPR2017

    文章转自:同作者个人微信公众号[机器学习炼丹术].欢迎交流沟通,共同进步,作者微信:cyx645016617 论文名称:'Dilated Residual Networks' 论文链接:https:/ ...

  3. jenkins Windows下自动化部署.netcore

    (1) 安装java-sdk (Jdk5-11)不用配置环境变量 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloa ...

  4. 数据库性能调优之始: analyze统计信息

    摘要:本文简单介绍一下什么是统计信息.统计信息记录了什么.为什么要收集统计信息.怎么收集统计信息以及什么时候收集统计信息. 1 WHY:为什么需要统计信息 1.1 query执行流程 下图描述了Gau ...

  5. uni-app调用wifi接口

    微信小程序条件渲染 在小程序app.json中添加 需要先获取位置信息 "permission": { "scope.userLocation": { &quo ...

  6. Py基础—变量名,条件循环,空执行,编码,运算符,字符比较,简化写法

    变量名 只能是字母,数字,下划线.数字不能开头,不要和python内置的东西重复.赋予变量名内容:name1 = "shit" 输出变量名内容 print(name1) 条件语句 ...

  7. 初审blucms(入坑)

    作为一名初来乍到审计小白,从blueCMS入手再好不过了.通过对入门级的cms进行审计以及一个整体的框架和常见的漏洞学习,对个人而言是一次不错的学习经历.话不多说直接进入主题. 代码审计环境 Blue ...

  8. XShell下便捷上载/下载文件到虚拟机

    1.客户机联网后,安装 rz,sz 服务,命令如下: yum install lrzsz 2.XShell连接客户机: 2.1 上传文件:运行rz,在弹窗内选择Windows本地文件上传到客户机当前目 ...

  9. 流量染色与gRPC服务托管 微服务协作开发、灰度发布之流量染色 灰度发布与流量染色

    大规模微服务场景下灰度发布与流量染色实践 https://mp.weixin.qq.com/s/UBoRKt3l91ffPagtjExmYw [go-micro]微服务协作开发.灰度发布之流量染色 - ...

  10. 邮件解析 CNAME记录 A记录 NS记录 MX记录

    域名配置 示例发信配置请至域名 service.i-test.cn DNS服务提供商处添加TXT记录,并保持SPF记录正确,否则会无法发信.*1.所有权验证类型 主机记录 主域名 记录值 状态TXT ...