POJ1733
题目链接:https://vjudge.net/problem/POJ-1733
解题思路:并查集+离散化
AC代码:
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <map>
#include <cstring>
#include <cmath>
using namespace std;
const int maxn=;
struct query{
int l,r;
int oe;
}q[maxn];
map<int,int> lists;
int v[maxn],fa[maxn];
int finds(int t){
if(fa[t]==-)
return t;
int tmp=finds(fa[t]);
v[t]^=v[fa[t]];
return fa[t]=tmp;
}
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int vals[maxn<<];
char ooe[];
int ques,len;
memset(fa,-,sizeof(fa));
memset(v,,sizeof(v));
scanf("%d",&len);
scanf("%d",&ques);
int j=;
for(int i=;i<=ques;i++){
scanf("%d%d%s",&q[i].l,&q[i].r,ooe);
q[i].l-=;
if(ooe[]=='e') q[i].oe=;
else q[i].oe=;
vals[j]=q[i].l; j++;
vals[j]=q[i].r; j++;
}
sort(vals+,vals+j);
int m=unique(vals+,vals+j)-vals-;
for(int i=;i<=m;i++){
lists[vals[i]]=i;
}
int ending=;
for(int i=;i<=ques;i++){
int t1=finds(lists[q[i].l]),t2=finds(lists[q[i].r]);
int vl=v[lists[q[i].l]],vr=v[lists[q[i].r]];
if(t1==t2){
if(vr^vl!=q[i].oe){
printf("%d\n",i-);
ending=;
break;
}
}
else{
fa[t2]=t1;
v[t2]=q[i].oe^vl^vr;
}
}
if(!ending) printf("%d\n",ques);
return ;
}
额,先这样吧,晚上或者明天再来详谈。
POJ1733的更多相关文章
- 【poj1733】 Parity game
http://poj.org/problem?id=1733 (题目链接) 题意 一个由0,1组成的序列,每次给出一段区间的奇偶,问哪一条信息不合法. Solution 并查集. 题目中序列的长度有很 ...
- 并查集专辑 (poj1182食物链,hdu3038, poj1733, poj1984, zoj3261)
并查集专题训练地址,注册登录了才能看到题目 并查集是一个树形的数据结构, 可以用来处理集合的问题, 也可以用来维护动态连通性,或者元素之间关系的传递(关系必须具有传递性才能有并查集来维护,因为并查集 ...
- POJ1733 Parity game 【扩展域并查集】*
POJ1733 Parity game Description Now and then you play the following game with your friend. Your frie ...
- POJ1733 Parity game 【带权并查集】*
POJ1733 Parity game Description Now and then you play the following game with your friend. Your frie ...
- 【POJ1733】Parity game
[POJ1733]Parity game 题面 vjudge 题解 比较简单的分类并查集 将一个查询操作看作前缀和\(s_r-s_{l-1}\)的奇偶性 将每个点拆成一奇一偶然后分别连边即可 如果一个 ...
- poj1733(种类并查集+离散化)
题目链接: http://poj.org/problem?id=1733 题意: 输入n表示有一个长度为n的0,1字符串, m表示接下来有m行输入, 接下来的m行输入中x, y, even表示第x到第 ...
- poj1733 带权并查集
题意:有一个 0/1 数列,现在有n组询问和回答,表示某个区间内有奇数或者偶数个1,问到前多少个都没有逻辑错误,而下一个就不满足 可以定奇数为 1 偶数为 0作为每个元素的权值,表示它与它的祖先元素的 ...
- 【POJ1733】【带标记并查集】Parity game
Description Now and then you play the following game with your friend. Your friend writes down a seq ...
- poj1733(并查集+离散化)
题目大意:有一个长度为n的0,1字符串, 给m条信息,每条信息表示第x到第y个字符中间1的个数为偶数个或奇数个, 若这些信息中第k+1是第一次与前面的话矛盾, 输出k; 思路:x, y之间1的个数为偶 ...
随机推荐
- 【Linux常见命令】dos2unix命令,unix2dos命令
我们都知道.打回车键就是换行的意思. 在不同系统下打回车键效果是不同的: MAC OS下:dakdhih \r LINUX下:dakdhih \n DOS\WINDOWS下:dakdhih \r\n ...
- Angular 7开发环境配置
目录 前言 一.搭建项目 1.安装Angular CLI 2.创建项目 3.集成Element Angular 二.设置路由 1.创建路由模块 2.导入.导出RouterModule类 3 ...
- Jdbc批处理一点异同
同样的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public class TestBatch { public stati ...
- 一张图告诉你E-R图怎么画
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型.属性和联系的方法,用来描述现实世界的概念模型. 它是描述现实世界关系概念模型的有效方法.是表示概 ...
- ACM学习总结 6月11日
经过这几天没有队友的协助,又是算法题比较多,有点碰触到自己的短板,因为搜索的题目就做了1个,一遇到搜索就跳过,DP也有点忘得差不多了,四边形优化,斜率优化还不会,这是下一阶段努力方向,把之前做过的题, ...
- git新手使用教程包含各种系统
Git Tutorial 1.下载客户端 从Git官网下载客户端: https://git-scm.com/ Windows版下载地址: https://git-scm.com/downl ...
- MES系统的模型结构和主要功能(二)
上一节,我们主要说了Mes系统是什么,以及它的特点和难点,本节,再来讨论一下一个合格的MES系统的模型结构和基本功能. 现代工厂的快速发展,对MES系统提出了更高的要求,其必须满足范围广泛的任务要求, ...
- springboot设置banner
下图是springboot项目启动的的打印数据,在log中可以清楚的看到有一个spring的banner图案,这个图案其实我们是可以自己进行设置的 我们在项目目录的resources目录下创建一个ba ...
- Synchronized 和 ReentrantLock (Lock )的区别
原始构成 Synchronized 是关键字,属于JVM层面,底层是通过 monitorenter 和 monitorexit 完成,依赖于 monitor 对象来完成.由于 wait/notify ...
- boost在Qt中的使用
一.说明 理论上,Qt和boost是同等级别的C++库,如果使用Qt,一般不会需要再用boost,但是偶尔也会有特殊情况,比如,第三方库依赖等等.本文主要介绍boost在windows Qt(MinG ...