http://poj.org/problem?id=1733

题意:

给出一个01串,有多次询问,每次回答[l,r]这个区间内1的个数的奇偶性,但是其中有一些回答是错误的,问到第几个回答时与前面的回答是有矛盾的。

思路:

任意一个区间要么是奇要么就是偶。所有就可以用种类并查集来解决。

因为是区间,所以如果要连起来的话,每个区间的左端点需要减1。

因为n很大但是询问少,所有需要离散化处理。

下面的代码中,1表示奇,0表示偶。

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = *; int n,q,tot;
int p[maxn],re[maxn],a[maxn]; //0表示偶,1表示奇 struct node
{
int l, r;
char s[];
}query[maxn]; int finds(int x)
{
if(p[x]==x) return x;
int tmp = p[x];
p[x] = finds(p[x]);
re[x] = (re[x]+re[tmp])%;
return p[x];
} void unions(int l,int r,int x, int y,int tmp)
{
if(x<y)
{
p[x] = y;
re[x] = (re[r]-re[l]+tmp+)%;
}
else
{
p[y] = x;
re[y] = (re[l] - re[r]-tmp+)%;
}
} int main()
{
//freopen("in.txt","r",stdin);
tot = ;
scanf("%d%d",&n,&q);
for(int i=;i<=maxn;i++) {p[i] = i;re[i]=;}
for(int i=;i<=q;i++)
{
scanf("%d%d%s",&query[i].l,&query[i].r,query[i].s);
query[i].l--;
a[++tot] = query[i].l;
a[++tot] = query[i].r;
}
sort(a+,a+tot+);
int num = unique(a+,a+tot+)-(a+);
int i;
for(i=;i<=q;i++)
{
int l = lower_bound(a+,a+num+,query[i].l)-(a+);
int r = lower_bound(a+,a+num+,query[i].r)-(a+);
int x = finds(l);
int y = finds(r);
int tmp = ;
if(query[i].s[]=='o') tmp = ;
if(x==y)
{ if((re[l]-re[r]+)%!=tmp) break;
}
else
{
unions(l,r,x,y,tmp);
}
}
printf("%d\n",i-);
return ;
}

POJ 1733 Parity game(种类并查集)的更多相关文章

  1. POJ - 1733 Parity game 种类并查集+离散化

    思路:d(i, j)表示区间(i, j]的1的个数的奇偶性.输入最多共有5000*2个点,需要离散化处理一下.剩下的就是并查集判冲突. AC代码 #include <cstdio> #in ...

  2. POJ1733 Parity game —— 种类并查集

    题目链接:http://poj.org/problem?id=1733 Parity game Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  3. poj 1182:食物链(种类并查集,食物链问题)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 44168   Accepted: 12878 Description ...

  4. poj 1182 食物链(种类并查集 ‘初心者’)

    题目链接:http://poj.org/problem?id=1182 借着这题可以好好理解一下种类并查集,这题比较简单但挺经典的. 题意就不解释了,中问题. 关于种类并查集结局方法也是挺多的 1扩增 ...

  5. POJ 1182 食物链(种类并查集)

    食物链 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 63592   Accepted: 18670 Description ...

  6. POJ 1182 食物链 (种类并查集)

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说 ...

  7. POJ 1417 True Liars(种类并查集+dp背包问题)

    题目大意: 一共有p1+p2个人,分成两组,一组p1,一组p2.给出N个条件,格式如下: x y yes表示x和y分到同一组,即同是好人或者同是坏人. x y no表示x和y分到不同组,一个为好人,一 ...

  8. POJ 1182——食物链——————【种类并查集】

    食物链 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status P ...

  9. POJ 2912 Rochambeau(种类并查集+枚举)

    题目链接:http://poj.org/problem?id=2912 题目大意:n个人玩,玩石头剪刀布游戏,其中1人是裁判,剩下的n-1个人分为3组, 他们商量好了,相同组的人每次都出相同的手势,不 ...

  10. POJ 1988 Cube Stacking (种类并查集)

    题目地址:POJ 1988 这道题的查找合并的方法都能想的到,就是一点没想到,我一直天真的以为查询的时候,输入后能立即输出,这种话在合并的时候就要所有的结点值都要算出来,可是经过路径压缩之后,没办法所 ...

随机推荐

  1. 基于FPGA摄像头图像采集显示系统

    本系统主要由FPGA主控模块.图像采集模块.图像存储模块以及图像显示模块等模块组成.其中图像采集模块选择OV7670摄像头模块,完成对视频图像的采集和解码功能,并以RGB565标准输出RGB 5:6: ...

  2. activemq消息队列的使用及应用docker部署常见问题及注意事项

    activemq消息队列的使用及应用docker部署常见问题及注意事项 docker用https://hub.docker.com/r/rmohr/activemq/配置在/data/docker/a ...

  3. 产品经理-需求分析-用户故事-敏捷开发 详解 一张图帮你了解Scrum敏捷流程

    产品经理-需求分析-用户故事-敏捷开发 详解 用户故事是从用户的角度来描述用户渴望得到的功能.一个好的用户故事包括三个要素:1. 角色:谁要使用这个功能.2. 活动:需要完成什么样的功能.3. 商业价 ...

  4. Codeforces 237A - Free Cash

    题目链接:http://codeforces.com/problemset/problem/237/A Valera runs a 24/7 fast food cafe. He magically ...

  5. [转载]FlipClock.js时钟,计数,3D翻转插件

    1.FlipClock.js能够自动定义计数,时钟的翻牌效果,调用简单,下面简单记录下用法 2.官网地址:http://www.flipclockjs.com/ 3.调用2个文件 <link h ...

  6. GoldenGate Logdump基本使用

    Logdump是GoldenGate复制软件中附带的一个工具软件,在OGG的目录下可以找到.这个工具主要用于分析OGG生成的队列文件,查找记录.统计队列文件中的数据等. 在OGG安装目录下执行logd ...

  7. eclipse的svn插件添加代理访问svn

    1.首先找到插件配置文件 C:\Users\Administrator\AppData\Roaming\Subversion这个目录下的servers文件 打开找到 # http-proxy-host ...

  8. BeanCreationException: Error creating bean with name 'transactionManager' defined

    BeanCreationException: Error creating bean with name 'transactionManager' defined in \WEB-INF\classe ...

  9. powermock+mockito+testng 单元测试pom文件

    0:Supported versions PowerMock version 1.7.0 and upper has experimental support of Mockito 2. A lot ...

  10. centos 6.5 gdb 7.10安装make[5]: *** [install-bfdincludeHEADERS] Error 1解决

    make[5]: *** [install-bfdincludeHEADERS] Error 1make[5]: Leaving directory `/usr/local/gdb-7.10/bfd' ...