这题离散化+并查集,没看出关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的更多相关文章

  1. 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733

    1.POJ 1733 Parity game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5744   Accepted: ...

  2. poj 1733 并查集+hashmap

    题意:题目:有一个长度 已知的01串,给出多个条件,[l,r]这个区间中1的个数是奇数还是偶数,问前几个是正确的,没有矛盾 链接:点我 解题思路:hash离散化+并查集 首先我们不考虑离散化:s[x] ...

  3. poj 1733(带权并查集+离散化)

    题目链接:http://poj.org/problem?id=1733 思路:这题一看就想到要用并查集做了,不过一看数据这么大,感觉有点棘手,其实,我们仔细一想可以发现,我们需要记录的是出现过的节点到 ...

  4. poj 1733 Parity game(带权并查集+离散化)

    题目链接:http://poj.org/problem?id=1733 题目大意:有一个很长很长含有01的字符串,长度可达1000000000,首先告诉你字符串的长度n,再给一个m,表示给你m条信息, ...

  5. POJ 1733 Parity game(种类并查集)

    http://poj.org/problem?id=1733 题意: 给出一个01串,有多次询问,每次回答[l,r]这个区间内1的个数的奇偶性,但是其中有一些回答是错误的,问到第几个回答时与前面的回答 ...

  6. (并查集 建立关系)Parity game -- POJ -1733

    链接: http://poj.org/problem?id=1733 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82830#probl ...

  7. POJ 1733 Parity game(带权并查集)

    题目链接:http://poj.org/problem?id=1733 题目大意:给你m条信息,每条信息告诉你区间l~r的1的个数是奇数还是偶数,如果后面出现信息跟前面矛盾则这条信息是错误的,问在第一 ...

  8. 【POJ 1733】 Parity Game

    [题目链接] http://poj.org/problem?id=1 [算法] 并查集 [代码] #include <algorithm> #include <bitset> ...

  9. POJ 1733 Parity game (并查集)

    Parity game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6816   Accepted: 2636 Descr ...

随机推荐

  1. 洛谷P3407 散步[分组]

    题目描述 一条道路上,位置点用整数A表示. 当A=0时,有一个王宫.当A>0,就是离王宫的东边有A米,当A<0,就是离王宫的西边有A米. 道路上,有N个住宅从西向东用1-N来标号.每个住宅 ...

  2. Django调用JS、CSS、图片等静态文件

    zz 在下面的例子中,我们将media作为静态(CSS\JS\图片文件)文件的目录 方法一. 1.首先在settings.py文件中自定义参数 STATIC_PATH=’./media’ .(意为当前 ...

  3. asp.net页面关闭的时候如何触发事件?

      <script type="text/javascript"> var pb_strConfirmCloseMessage; var pb_blnCloseWind ...

  4. C#.NET 大型企业信息化系统 - 防黑客攻击 - SSO系统加固优化经验分享

    好久没写文章了,突然间也不知道写什么好了一样,好多人可能以为我死了,写个文章分享一下.证明一下自己还在,很好的活着吧,刷个存在感. 放弃了很多娱乐.休闲.旅游.写文章.看书.陪伴家人,静心默默的用了接 ...

  5. 禁用datagridview中的自动排序功能

    把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...

  6. 搭建一套自己实用的.net架构(1)【概述】

    入园很久,一直默默的潜水,近来得空想写点什么. 思前想后,那就把自己平时没事干自己摘抄.引用.瞎写的一些东西写出来.帮助自己巩固一下,顺便请高手们指点一二. 我本人很懒 ,一些代码就是直接复制别人的劳 ...

  7. Spring IOC容器创建对象的方式

    一.无参构造函数创建                                                                            我们用Spring创建Stu ...

  8. [Think In Java]基础拾遗3 - 容器、I/O、NIO、序列化

    目录 第十一章 持有对象第十七章 容器深入研究第十八章 Java I/O系统 第十一章 持有对象 1. java容器概览 java容器的两种主要类型(它们之间的主要区别在于容器中每个“槽”保存的元素个 ...

  9. System.Diagnostics.Process.Star的用法

    System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如“控制 ...

  10. sql 知识点系统汇总

    提供性能: .服务器往往具有强大的计算能力和速度..避免把大量的数据下载到客户端,减少网络上的传输量. 第一章 T-SQL 语句 1.1数据类型 文本型 -- CHAR 定长型 <=8000字节 ...