poj 1733
这题离散化+并查集,没看出关dp什么事。(那他为什么放到dp里面)
用Si记录前i项的和。拆成两个点,i*2表示与第i个相同,i*2+1表示与第i个不同。用并查集判断。区间[a,b]就可以看成Sb-S(a-1),用并查集保存S的奇偶性的相同和相异情况。
注意数组开时要开成4*n+4,我在这里RE了一次
代码:
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct dt{
int id,p,l;
}a[10100];
int fa[20100];
bool d[5100],f;
bool cmp1(dt x,dt y){
return x.p<y.p;
}
bool cmp2(dt x,dt y){
return x.id<y.id;
}
int find(int x){
return(fa[x]==x)?x:fa[x]=find(fa[x]);
}
void uni(int x,int y){
int m1=find(x),n1=find(y);
// for(int i=0;i<20;i++)printf("%d ",fa[i]);printf("\n");
// printf("%d %d\n",m1,n1);
if(abs(m1-n1)==1 && (m1+n1)%4==1){
f=1;
return;
}
fa[n1]=m1;
return;
}
int main(){
int n;
scanf("%d",&n);
scanf("%d",&n);
for(int i=0;i<n*4+4;i++)
fa[i]=i;
for(int i=0;i<n;i++){
int x,y;
char ch[20];
scanf("%d%d%s",&x,&y,ch);
a[i*2].id=i*2,a[i*2].p=x-1;
a[i*2+1].id=i*2+1,a[i*2+1].p=y-1;
if(ch[0]=='e')d[i]=0;else d[i]=1;
}
sort(a,a+n*2,cmp1);
a[0].l=1;
for(int i=1;i<n*2;i++)
if(a[i].p==a[i-1].p)
a[i].l=a[i-1].l;
else a[i].l=a[i-1].l+1;
sort(a,a+n*2,cmp2);
f=0;int ans=0;
for(int i=0;i<n;i++){
int p=a[i*2].l-1,q=a[i*2+1].l;
// printf("%d %d\n",p,q);
if(d[i]){
uni(p*2,q*2+1);
if(f)break;
uni(p*2+1,q*2);
if(f)break;
}else{
uni(p*2,q*2);
if(f)break;
uni(p*2+1,q*2+1);
if(f)break;
}
ans++;
}
printf("%d\n",ans);
return 0;
}
poj 1733的更多相关文章
- 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733
1.POJ 1733 Parity game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5744 Accepted: ...
- poj 1733 并查集+hashmap
题意:题目:有一个长度 已知的01串,给出多个条件,[l,r]这个区间中1的个数是奇数还是偶数,问前几个是正确的,没有矛盾 链接:点我 解题思路:hash离散化+并查集 首先我们不考虑离散化:s[x] ...
- poj 1733(带权并查集+离散化)
题目链接:http://poj.org/problem?id=1733 思路:这题一看就想到要用并查集做了,不过一看数据这么大,感觉有点棘手,其实,我们仔细一想可以发现,我们需要记录的是出现过的节点到 ...
- poj 1733 Parity game(带权并查集+离散化)
题目链接:http://poj.org/problem?id=1733 题目大意:有一个很长很长含有01的字符串,长度可达1000000000,首先告诉你字符串的长度n,再给一个m,表示给你m条信息, ...
- POJ 1733 Parity game(种类并查集)
http://poj.org/problem?id=1733 题意: 给出一个01串,有多次询问,每次回答[l,r]这个区间内1的个数的奇偶性,但是其中有一些回答是错误的,问到第几个回答时与前面的回答 ...
- (并查集 建立关系)Parity game -- POJ -1733
链接: http://poj.org/problem?id=1733 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...
- POJ 1733 Parity game(带权并查集)
题目链接:http://poj.org/problem?id=1733 题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一 ...
- 【POJ 1733】 Parity Game
[题目链接] http://poj.org/problem?id=1 [算法] 并查集 [代码] #include <algorithm> #include <bitset> ...
- POJ 1733 Parity game (并查集)
Parity game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6816 Accepted: 2636 Descr ...
随机推荐
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
的最佳方案 标签: Android屏幕旋转AsyncTaskProgressDialog 2014-07-19 09:25 39227人阅读 评论(46) 收藏 举报 分类: [android 进阶之 ...
- jquery工具方法access详解
access : 多功能值操作(内部) access方法可以使set/get方法在一个函数中体现.比如我们常用的css,attr都是调用了access方法. css的使用方法: $(selector) ...
- HDU 3032 Nim or not Nim (sg函数)
加强版的NIM游戏,多了一个操作,可以将一堆石子分成两堆非空的. 数据范围太大,打出sg表后找规律. # include <cstdio> # include <cstring> ...
- Spring源码分析——BeanFactory体系之抽象类、类分析(一)
上一篇介绍了BeanFactory体系的所有接口——Spring源码分析——BeanFactory体系之接口详细分析,本篇就接着介绍BeanFactory体系的抽象类和接口. 一.BeanFactor ...
- jquery富文本在线编辑器UEditor
UEditor 是由百度「FEX前端研发团队」开发的所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. UEditor的功能非常强大,官方 ...
- 《JavaScript高级程序设计》 - 读书笔记 - 第4章 变量、作用域和内存问题
4.1 基本类型和引用类型的值 JavaScript变量是松散类型的,它只是保存特定值的一个名字而已. ECMAScript变量包含两种数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据 ...
- iOS --- DIY文件名批量修改
批量修改文件名: // 1.创建文件管理 NSFileManager *filemanager =[NSFileManager defaultManager]; // 2. 获得所有文件夹路径 NSS ...
- JQuery slidebox实现图片轮播
jQuery图片轮播(焦点图)插件jquery.slideBox,简单设置下参数就可以多个多种动画效果,左右,上下,速度,还可指定默认显示第N张,点击的按钮在现代浏览中可以实现圆形或圆角效果,插件代码 ...
- Linux/Mac/Shell常用命令
常用命令 · ls 查看当前目录下的文件 · cd 进入某目录 · cd - 跳转回前一目录 · cd ~ 进入当前用户个人目录 · pwd 输出当前所在路径 · mkdir 新建文件夹 · touc ...
- 友盟ionic多渠道自动签名app
这几天公司的运营部门要求添加流量统计功能,集成了友盟的插件,中间遇到很多的问题,在这里说明记录一下,为遇到相同问题的朋友们减少麻烦 问题一.插件的使用直接将友盟sdk系在放置到项目根目录下plugin ...