poj 1733 Parity game 离散化+带权并查集(区间)
来源:互联网 发布:机器人仿真软件 编辑:程序博客网 时间:2024/05/28 15:47
点击打开链接
奇数个1 为奇,偶数个1为偶
rk[i] :区间 [根节点,i]的奇偶性
题意:要判断区间[l,r]的奇偶性是否为k,如果l-1,和r在同一集合中 则要满足rk[l-1]^k==rk[r]
如果不在同一个集合,把小fx的当作根节点 求rk[fy] 画图求即可
#include <iostream>#include <algorithm>#include <cstring>#include <map>#include <vector>using namespace std;typedef long long ll;const int N=2e5+20;int fa[N],rk[N];//rk[i] 区间 [根节点~i]的奇偶性 vector<ll> p;struct node{ll x;ll y;int k;}a[N];int find(int x){if(x!=fa[x]){int t=fa[x];fa[x]=find(fa[x]);rk[x]^=rk[t];}return fa[x];}int main(){int ans=0,m;ll n;cin>>n>>m;for(int i=1;i<=N;i++){fa[i]=i;rk[i]=0;}for(int i=1;i<=m;i++){ int k;string s;cin>>a[i].x>>a[i].y>>s;if(s[0]=='e')a[i].k=0;elsea[i].k=1;p.push_back(a[i].x);p.push_back(a[i].y);}sort(p.begin(),p.end());int cnt=unique(p.begin(),p.end())-p.begin();for(int i=1;i<=m;i++){int l=lower_bound(p.begin(),p.begin()+cnt,a[i].x-1)-p.begin()+1;int r=lower_bound(p.begin(),p.begin()+cnt,a[i].y)-p.begin()+1;//cout<<a[i].x<<' '<<a[i].y<<endlint fx=find(l);int fy=find(r);if(fx==fy){if((rk[r]^a[i].k!=rk[l])){ans=i-1;break;}}else{//rk[fy]=rk[l]^(x~fy)//x~fy ^ rk[y] =k //两边同时Xor rk[y]//x~fy=k^rk[y] fa[fy]=fx;rk[fy]=a[i].k^rk[r]^rk[l];}}if(!ans) ans=m;cout<<ans<<endl;return 0;}
0 0
- poj 1733 Parity game 离散化+带权并查集(区间)
- poj 1733 Parity game(带权并查集+离散化)
- POJ 1733 Parity game(离散化+带权并查集)
- POJ 1733Parity game 离散化+带权并查集
- POJ - 1733 Parity game 带权并查集+离散化
- POJ 1733 Parity game(离散化 + 带权并查集)
- POJ 1733 Parity game(离散化+带权并查集)
- poj 1733 Parity game (带权并查集)(离散化)
- poj 1733 Parity game(离散化+带权并查集+二分查找)
- POJ 1733 Parity game hash离散化+带权并查集
- POJ 1733 Parity game 带权并查集+离散化处理
- POJ-1733-Parity game [带权并查集][离散化]
- poj 1733 - Parity game(离散化+并查集)
- poj 1733 Parity game 并查集 离散化
- poj 1733 Parity game 【种类并查集+离散化】
- Poj 1733 Parity Game(离散化+并查集)
- poj 1733Parity game(map离散+带权并查集)
- POJ 1733 Parity game(哈希|离散+带权并查集)
- c语言之左右法则
- Mybatis手写分页,非常灵活
- pog 2891 Strange Way to Express Integers (中国剩余定理 非互质)
- 【爬坑之路】--Native method not found...【android studio上】
- CF 738D 贪心
- poj 1733 Parity game 离散化+带权并查集(区间)
- hive 数据倾斜总结
- 正则表达式学习
- 5、RxJava学习记录
- redis乐观锁(适用于秒杀系统)
- Javascript的内存管理
- 操作系统实验四:独占设备的静态分配模拟
- STM32 GPIO I/O复用和映射
- 适配器模式