POJ 2492 A Bug's Life (带权并查集 && 向量偏移)
题意 : 给你 n 只虫且性别只有公母, 接下来给出 m 个关系, 这 m 个关系中都是代表这两只虫能够交配, 就是默认异性, 问你在给出的关系中有没有与异性交配这一事实相反的, 即同性之间给出了交配关系。
分析 : 本题雷同POJ 1182 食物链, 如果会了那一题, 那现在这题便简单多了, 建议先了解食物链的偏移向量做法。这里也是使用向量的思考方式来进行relation的变化, 这里我令 relation = 0为同性, relation = 1为异性, 接下来的步骤就和食物链的雷同了。
优化 :
① 因为关系的值只有0 或 1, 这里可以考虑位运算中的异或来加快relation变化的运算。
② 由于给出的输入很多, 所以可以采用读入挂来加快读入速度。
瞎搞 : 一开始计算关系的时候居然去%1, 失策啊, 要将范围控制在[0, n]之间的话就应该%(n+1)。还有在判断是否矛盾时候, 实际只要判断两个虫的relation是否一样即可, 我还在加减乘除模来模去=_=
- #include<stdio.h>
- #include<string.h>
- #include<algorithm>
- #include<iostream>
- using namespace std;
- ;
- int f[maxn], relation[maxn], n, num;
- inline int Scan()
- {
- , ch;
- bool flag = false;
- if((ch=getchar()) == '-') flag = true;
- ';
- +ch-';
- return flag?-res:res;
- }
- inline void initialize()
- {
- ; i<=n; i++){
- relation[i] = ;
- f[i] = i;
- }
- }
- int findset(int x)
- {
- if(f[x] == x) return x;
- int father = f[x];
- f[x] = findset(father);
- relation[x] = relation[father]^relation[x];
- //同 relation[x] = ( relation[father] + relation[x] )%2;
- return f[x];
- }
- int main(void)
- {
- int nCase;
- nCase = Scan();
- ;
- while(nCase--){
- bool flag = true;
- n = Scan(); num = Scan();
- initialize();
- while(num--){
- int a, b;
- a = Scan(); b = Scan();
- if(!flag) continue;
- if(a==b){
- flag = false;
- continue;
- }
- int root_a = findset(a);
- int root_b = findset(b);
- if(root_a != root_b){
- f[root_b] = root_a;
- relation[root_b] = relation[a]^^(-relation[b]);
- //同 relation[root_b] = ( relation[a] + 1 - relation[b] )%2;
- }else{
- if(relation[a]==relation[b]) flag = false;
- //同 if( (-relation[a]+relation[b]+2)%2 != 1) flag = false;
- }
- }
- if(!flag){
- printf("Scenario #%d:\nSuspicious bugs found!\n", ++t);
- }else{
- printf("Scenario #%d:\nNo suspicious bugs found!\n", ++t);
- }
- puts("");
- }
- ;
- }
POJ 2492 A Bug's Life (带权并查集 && 向量偏移)的更多相关文章
- POJ 2492 A Bug's Life 带权并查集
题意: 思路: mod2 意义下的带权并查集 如果两只虫子是异性恋,它们的距离应该是1. 如果两只虫子相恋且距离为零,则它们是同性恋. (出题人好猥琐啊) 注意: 不能输入一半就break出来.... ...
- POJ 1182 食物链 (带权并查集 && 向量偏移)
题意 : 中文题就不说题意了…… 分析 : 通过普通并查集的整理归类, 能够单纯地知道某些元素是否在同一个集合内.但是题目不仅只有种类之分, 还有种类之间的关系, 即同类以及吃与被吃, 而且重点是题目 ...
- 【POJ 1984】Navigation Nightmare(带权并查集)
Navigation Nightmare Description Farmer John's pastoral neighborhood has N farms (2 <= N <= 40 ...
- POJ 1984 Navigation Nightmare 【经典带权并查集】
任意门:http://poj.org/problem?id=1984 Navigation Nightmare Time Limit: 2000MS Memory Limit: 30000K To ...
- [poj 2912] Rochambeau 解题报告 (带权并查集)
题目链接:http://poj.org/problem?id=2912 题目: 题目大意: n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000) 接下来m行形 ...
- POJ2492 A Bug's Life 带权并查集
分析:所谓带权并查集,就是比朴素的并查集多了一个数组,记录一些东西,例如到根的距离,或者和根的关系等 这个题,权数组为relation 代表的关系 1 和父节点不同性别,0,和父节点同性别 并查集一 ...
- poj 1733 Parity game【hash+带权并查集】
hash一下然后用带权并查集做模2下的前缀和 #include<iostream> #include<cstdio> #include<map> #include& ...
- 【poj 1182】食物链(图论--带权并查集)
题意:有3种动物A.B.C,形成一个"A吃B, B吃C,C吃A "的食物链.有一个人对N只这3类的动物有M种说法:第一种说法是"1 X Y",表示X和Y是同类. ...
- 【POJ 1988】 Cube Stacking (带权并查集)
Cube Stacking Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)id ...
随机推荐
- 【FFMPEG】网络流媒体协议
目录(?)[-] RTP RTCP SRTP SRTCP RTSP RTSP 和RTP的关系 SDP RTMPRTMPS mms HLS RTP 参考文档 RFC3550/RFC3 ...
- 手把手带你发布Nuget包-图文说话
博客:https://www.cnblogs.com/24klr/
- 线程间的协作(wait/notify/sleep/yield/join)(五)
一.线程的状态 Java中线程中状态可分为五种:New(新建状态),Runnable(就绪状态),Running(运行状态),Blocked(阻塞状态),Dead(死亡状态). New:新建状态,当线 ...
- HDU 2100 Lovekey (26进制大数、字符串)
Lovekey Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- python调用jenkinsapi
在通过python 调用jenkinsapi的时候,需要对一些作业进行定时对构建 报错: <title>Error 403 No valid crumb was included in t ...
- Codeforces Round #587 (Div. 3)
https://codeforces.com/contest/1216/problem/A A. Prefixes 题意大概就是每个偶数位置前面的ab数目要相等,很水,被自己坑了 1是没看见要输出修改 ...
- [.net core]2.hello word(.net core web app模版简介)
创建一个.net core web app project 弹出这个窗口 empty代表 最低依赖, 意味着往往需要手动按需添加依赖. web应用程序(模型视力控制器) 则会帮你创建好control ...
- python 路径操作工具 pathlib,比 os 模块好用太多
在 python 当中,如果你想控制路径,基本上绕不开 os.path.我希望看完这篇文章以后,熟练使用 python 的你能立刻开始使用 pathlib 模块,一刻也不要耽误. pathlib 相对 ...
- 解决Asp.net Core中chtml文档中文乱码的问题
原因 由于Visual Studio 2017在保存chtml时,文本格式非utf-8,所以导致中文会出现乱码情况. 解决办法 在工具->扩展与更新中添加插件"ForceUTF8 (w ...
- vim学习(二)之模式
vim模式 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode). 命令模式: 用户刚刚启 ...