POJ 1773 Parity game 带权并查集
分析:带权并查集,就是维护一堆关系
然后就是带权并查集的三步
1:首先确定权值数组,sum[i]代表父节点到子节点之间的1的个数(当然路径压缩后代表到根节点的个数)
1代表是奇数个,0代表偶数个
2:设计路径压缩算法 sum[x]=(sum[x]+sum[t])%2;
3:弄清合并根节点时的操作,小的在上;
注:这个题需要离散化
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N=5e3+;
struct Node{
int l,r,v;
}p[N];
int a[N<<],cnt;
char s[];
int fa[N<<],sum[N<<];
int find(int x){
if(x==fa[x])return x;
int t=fa[x];
fa[x]=find(fa[x]);
sum[x]=(sum[x]+sum[t])%;
return fa[x];
}
int main()
{
int n;
while(~scanf("%d%d",&n,&n)){
cnt=;
for(int i=;i<=n;++i){
scanf("%d%d%s",&p[i].l,&p[i].r,s);
if(s[]=='e')p[i].v=;
else p[i].v=;
--p[i].l;
a[++cnt]=p[i].l,a[++cnt]=p[i].r;
}
sort(a+,a++cnt);
cnt=unique(a+,a++cnt)-a-;
for(int i=;i<=cnt;++i)fa[i]=i,sum[i]=;
int ans=;
for(int i=;i<=n;++i){
p[i].l=lower_bound(a+,a++cnt,p[i].l)-a;
p[i].r=lower_bound(a+,a++cnt,p[i].r)-a;
int u=find(p[i].l),v=find(p[i].r);
if(u==v){
if((-sum[p[i].r]-sum[p[i].l])%!=p[i].v)break;
}
else if(u<v){
fa[v]=u;
sum[v]=sum[p[i].r]-sum[p[i].l]-p[i].v;
}
else{
fa[u]=v;
sum[u]=sum[p[i].l]-sum[p[i].r]+p[i].v;
}
++ans;
}
printf("%d\n",ans);
}
return ;
}
POJ 1773 Parity game 带权并查集的更多相关文章
- POJ 1733 Parity game (带权并查集)
题意:有序列A[1..N],其元素值为0或1.有M条信息,每条信息表示区间[L,R]中1的个数为偶数或奇数个,但是可能有错误的信息.求最多满足前多少条信息. 分析:区间统计的带权并查集,只是本题中路径 ...
- URAL - 1003:Parity (带权并查集&2-sat)
Now and then you play the following game with your friend. Your friend writes down a sequence consis ...
- POJ 1182 食物链 【带权并查集】
<题目链接> 题目大意: 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我 ...
- POJ 1182 食物链 (带权并查集)
食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 78551 Accepted: 23406 Description ...
- POJ 1182 食物链 【带权并查集/补集法】
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说 ...
- poj 1182 食物链【带权并查集】
设相等的边权为0,吃的边权为,被吃的边权为2,然后用带权并查集在%3的意义下做加法即可 关系为简单环的基本都可以用模环长的方式是用带权并查集 #include<iostream> #inc ...
- A Bug's Life POJ - 2492 (种类或带权并查集)
这个题目的写法有很多,用二分图染色也可以写,思路很好想,这里我们用关于并查集的两种写法来做. 题目大意:输入x,y表示x和y交配,然后判断是否有同性恋. 1 带权并查集: 我们可以用边的权值来表示一种 ...
- 【poj1733】Parity game--边带权并查集
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15776 Accepted: 5964 Description Now ...
- POJ 3228 Gold Transportation(带权并查集,好题)
参考链接:http://www.cnblogs.com/jiaohuang/archive/2010/11/13/1876418.html 题意:地图上某些点有金子,有些点有房子,还有一些带权路径,问 ...
随机推荐
- Oracle配置
1.安装Oracle11g--->通过Database Configuration Assistant创建新数据库 建数据库注意记住数据库名和SID,安装最后一步解锁scott[密码填tiger ...
- jquery中邮箱地址 URL网站地址正则验证实例代码
QQ网站有一个网站举报的功能,看了一些js代码觉得写得很不错,我就拿下来了,下面是一个email验证与url网址验证js代码,分享给大家 email地址验证 复制代码代码如下: function ch ...
- mysql查看表结构命令
mysql查看表结构命令 mysql查看表结构命令,如下: desc 表名;show columns from 表名;describe 表名;show create table 表名; use inf ...
- UIExtendedEdge
在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局.就离不开这个属性 edgesForExtendedLayout,它是一个类型为UIExtendedEd ...
- 视频边下边播--缓存播放数据流-b
google搜索“iOS视频变下边播”,有好几篇博客写到了实现方法,其实只有一篇,其他都是copy的,不过他们都是使用的本地代理服务器的方式. 原理很简单,但是缺点也很明显,需要自己写一个本地代理服务 ...
- Spring 数据源配置二:多数据源
通过上一节 Spring 数据源配置一: 单一数据源 我们了解单一数据源的配置, 这里我们继续多个数据源的配置 如下(applicationContent.xml 内容) 一: Spring ...
- c++ 输入一行字符串
]; //cin>>str1; 方式1 不能统计(录入)空格后的字符 cin.); //方式2 能统计空格后输入的字符 按回车键输入结束 get()会将换行符保存在序列里 //gets(s ...
- xxx couldn't be loaded because it has not been added to the build settings.
这个由于没有将进入场景放入Build Settings里面造成的.
- php和.net的DES加密解密方法
.net版本 /// <summary> /// DES加密 /// </summary> /// <param name="pToEncrypt"& ...
- HDU4524+水题
简单. #include<stdio.h> #include<string.h> ; int a[ maxn ]; int main(){ int ca; scanf(&quo ...