携程编程大赛 (预赛第二场)第一题【剪刀石头布】

 

Problem Description
现有M个人一起玩剪刀石头布,以1-M编号,每人出一种,出过不再改变,但是我们并不知道它到底是哪一种。 (其中石头赢剪刀,剪刀赢布,布赢石头,一样则平)
裁判用两种说法对这M个人所构成的输赢关系进行描述:
一:"1 A B",表示第A个人和第B个人出的一样。
二:"2 A B",表示第A个人赢第B个人。
裁判对M个人,用以上两种说法,连说N句话,其中有真的、也有假的。
一句话出现以下情况,就是假话,否则就是真话。
1) 该句话与之前的某些真话冲突;
2) 该句话中A或B比M大;
3) 该句话表示A赢A。

请根据给定的M和N,输出假话数。
其中(1 <= M <= 10,000),(0 <= N <= 10,000)

 

Input
第1行是一个自然数K,代表有K组数据。
每组数据以一个空行分隔,其中每组数据的第1行是两个自然数M、N,以空格分开。
每组数据的第2行至N+1行,每行是三个自然数X,A,B,三个数之间用空格分开,X(1或2)表示说法的种类。

 

Output
每组数据对应一行,每行有一个整数,代表假话数。
3
43 11
1 4 3
2 3 3
1 4 1
1 4 4
2 3 3
1 2 2
2 1 4
1 1 1
2 1 4
2 3 4
2 3 2
66 9
2 3 1
2 4 4
2 1 2
2 4 3
2 4 2
2 2 3
1 3 2
1 2 1
1 1 1
6 7
2 3 7
2 1 2
2 4 4
1 2 1
1 3 2
1 2 3
2 1 3

 

Sample Output
5 4 3

 分析:经典并查集

#include <stdio.h>
#include<iostream>
using namespace std;
const int MAX_N = 50010;
int set[MAX_N];
int r[MAX_N];
void init(int n)
{for (int i = 0; i <= n; i++){set[i] = i;r[i] = 0;}
}
int cha(int x)
{if (x == set[x])return x;int tx = cha(set[x]);r[x] = (r[x] + r[set[x]]) % 3;return set[x] = tx;
}
void unite(int x, int y, int type)
{int tx = cha(x);int ty = cha(y);set[ty] = tx;r[ty] = (r[x] + type - 1 - r[y] + 3) % 3;return;
}
int main()
{int n(0), m(0);int xx;scanf("%d",&xx);while(xx--){scanf("%d%d", &n, &m);init(n);int type(0), x(0), y(0);int ans(0);for (int i = 1; i <= m; i++){scanf("%d%d%d", &type, &x, &y);if (x > n || y > n || (type == 2 && x == y)){ans++;continue;}if (cha(x) == cha(y)){if ((r[y] - r[x] + 3) % 3 != (type - 1)){ans++;}}else{(unite(x, y, type));}}printf("%d\n", ans);}
}

  

转载于:https://www.cnblogs.com/castledrv/p/3664011.html

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

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

相关文章

AndroidStudio自定义属性xmlns无法识别问题解决in Gradle projects,always use http://schemas.android.com/apk/res-auto

正如in Gradle projects,always usehttp://schemas.Android.com/apk/res-auto for custom attributes所说的 将eclipse中 http://schemas.android.com/apk/res/com.xxx.xxx 换成 http://schemas.android.com/apk/res-auto 这样Gradle就会自动查找自定属性的

量子计算机是程序员的未来,研究者:量子计算机一旦成功问世,时间也许会失去存在的意义...

贝尔实验室的科学家索尔&#xff0c;自从在1994年35界计算科学基础年会上提出量子算法后&#xff0c;立刻引起全世界科学界的轰动&#xff0c;量子计算机的研究热潮自此到来。量子计算机的运行方式以及存储计算方式&#xff0c;都与经典计算机存在着很大不同。经典计算机的存储…

.NET 现代化动态 LINQ 库 Gridify

动态 LINQ大家好&#xff0c;我是等天黑, 这次继续介绍开源项目&#xff0c;Gridify 是一个现代化动态 LINQ 库&#xff0c;它以最简单的方式将您的字符串转换为 LINQ 查询&#xff0c;并且有出色的性能。它还提供了一种使用基于文本的数据应用过滤、排序和分页的简单方法&…

Android之Toolbar的三个问题:修改左边箭头颜色、怎样修改右边以及子activity中的toolbar添加返回箭头

1&#xff09;怎样修改左边这个小箭头的颜色&#xff1f;2&#xff09;怎样修改右边这三个点的颜色、怎样把这三个点替换成我自己的图标&#xff1f;3&#xff09;怎样让“交易清单”这4个字居中显示&#xff1f; 首先设置Theme为AppCompat.NoActionBar。 (1)toolbar可以通过设…

brew mysql 添加修改mysql配置

为什么80%的码农都做不了架构师&#xff1f;>>> brew安装的MySQL是没有默认配置文件的&#xff0c;因此Mysql使用默认配置启动。我们需要手动创建my.cnf去覆盖默认配置。在/usr/local/opt/mysql 下确实有 my.cnf 但是并没有在启用中&#xff0c;应该是作为一个示例…

微型计算机名词术语,微型计算机及接口技名词解释题及解答题.doc

微型计算机及接口技名词解释题及解答题微处理器&#xff1a;由一片或几片大规模集成电路组成的中央处理器。主要部件&#xff1a;由运算器、控制器、寄存器组组成。微型计算机&#xff1a;以微处理器为基础&#xff0c;配以内存储器以及I/O接口电路和相应的辅助电路构成的裸机。…

LINUX BASH SHELL,小小学习一下

注意点要注意的&#xff1a; 整数运算一般通过 let 和 expr 这两个指令来实现&#xff0c;如对变量 x 加 1 可以写作&#xff1a;let "x $x 1" 或者 xexpr $x 1 两个比较表格要记得&#xff1a; 对应的操作 整数操作 字符串操作 相同 -eq 不同 -ne ! 大…

“人肉”背后隐藏的网络风险

“遭此不幸”的演艺界大碗包括 Jay-Z、碧昂斯 (Beyonce)、布兰妮。斯皮尔斯 (Britney Spears) 以及金。卡戴珊 (Kim Kardashian) 等&#xff0c;他们的个人信息被公诸于众。此外&#xff0c;这次泄露事件的受害者甚至包括美国第一夫人米歇尔。奥巴马 (Michelle Obama)、副总统乔…

数学系都是怎么发「新年祝福」的?

全世界只有3.14 % 的人关注了爆炸吧知识过年啦&#xff01;你都收到什么样的祝福&#xff1f;&#xff08;快到留言区留言&#xff09;不过看来看去&#xff0c;还是超模君曾经收到的一条祝福最特别了&#xff01;超模君今天把这份新年祝福分享给大家&#xff1a;长按图片可保存…

NET 6 中新增的LINQ 方法

.NET 6 中添加了许多 LINQ 方法。下表中列出的大多数新方法在 System.Linq.Queryable 类型中具有等效方法。欢迎关注如果你刻意练习某件事情请超过10000小时&#xff0c;那么你就会达到世界级别今晚打老虎TryGetNonEnumeratedCount 尝试在不强制枚举的情况下确定序列中的元素数…

Android之startService与bindService的区别

Android执行Service有两种方法&#xff0c;一种是startService&#xff0c;一种是bindService。下面让我们一起来聊一聊这两种执行Service方法的区别。 1、生命周期上的区别 执行startService时&#xff0c;Service会经历onCreate->onStartCommand。当执行stopService时&…

DCOS实践分享(6):基于DCOS的大数据应用分享

Open DC/OS大中华区官方发布会在京隆重召开 DCOS领域诞生了一个100%开源的企业级Datacenter Operating System版本&#xff0c;即DC/OS。Linker Networks及其合作伙伴Microsoft, Cisco, HPE, Mesosphere, Verizon等于4月19日开启全球发布&#xff0c;而Linker Networks作为初创…

计算机技术在数学教学中的应用,信息技术在数学教学中应用

数学是一门高度抽象的学科&#xff0c;高度抽象的概念&#xff0c;科学简洁的数学语言&#xff0c;严谨的逻辑体系&#xff0c;深刻的数学思想方法&#xff0c;都使得相当数量的学生难于理解数学。处理好教与学的关系&#xff0c;选择适当的教学模式&#xff0c;设计优化的教学…

CSV格式数据如何导入MySQL?

经常有客户咨询如何将CSV文件导入到MySQL数据库中&#xff0c;特写此文介绍一种方便、快捷的方法。 我们要使用的辅助工具是著名的MySQL管理软件&#xff1a;Navicat for MySQL 1&#xff09;我准备了一个字符编码为UTF-8的标准CSV文件&#xff0c;总共有2001条记录&#xff08…

subclipse用法

SUBCLIPSE的使用方法. 针对ECLIPSE的SUBVERSION插件http://blog.csdn.net/kimsung/article/details/5277873 SubVersion和Subclipse的简单使用方法http://subclipse.group.iteye.com/group/wiki/1708-subversion-and-simple-to-use-subclipse

.NET静态代码织入——肉夹馍(Rougamo)

肉夹馍是什么肉夹馍通过静态代码织入方式实现AOP的组件。.NET常用的AOP有Castle DynamicProxy、AspectCore等&#xff0c;以上两种AOP组件都是通过运行时生成一个代理类执行AOP代码的&#xff0c;肉夹馍则是在代码编译时直接修改原始方法IL代码&#xff0c;在原始方法内织入AOP…

Android之电话状态的监听(来电和去电)

实现手机电话状态的监听&#xff0c;主要依靠两个类&#xff1a;TelephoneManger和PhoneStateListener。 TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用程序可以注册listener来监听电话状态的…

Only the original thread that created a view hierarchy can touch its views.

/*********************************************************************************** Only the original thread that created a view hierarchy can touch its views.* 说明&#xff1a;* 自定义view的时候出现这个错误&#xff0c;是用错了方法。* * …