poj 1733 并查集(奇偶校验,判断第一个矛盾)

HDU 3038 带权并查集判错(详解) 题目链接: HDU 3038 How Many Answers Are Wrong 题目描述: 给出一个数组的区间和,如果后面与前面矛盾认为是假话 输入描述: 第一行连个整数n, m; 表示数组长度n,一共m组 之后每行三个整数,a, b, v:表示数组第a个元素到b第个元素的和为v 输出描述: 一行一个整数,表示有多少假话 思路:1.为什么要用并查集: 在一些有N个元素的集合 阅读详情

题意:一个由0,1组成的数字串,现在你问一个人,第i位到第j位的1的个数为奇数还是偶数。一共会告诉你n组这样的数。要你判断前k组这个人回答的都是正确的,到第k+1组,这个人说的是错的,要你输出这个k,要是这个人回答的都是正确的,则输出组数。

思路:并查集。注意输入的区间非常大,所以要离散化一下。离散化的时候还要注意,如果两个数字相邻但是其差不为1,那么中间必须再加上另一个数。比如将出现的数字排序后连续的两个数字是3和8,那么中间必须加上一个数字(4~7都行)。这是为了防止这样的情况:3~3和8~8都是奇数,3~8也是奇数。如果中间不加数,离散化之后就会判断为错,实际上这是可能的。

接着就是并查集的过程,与找同性恋虫子那题类似。

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define clr(s,t) memset(s,t,sizeof(s))
#define N 15005
struct node{
    int x,y,flag;
}p[N];
int s[N<<1],t[N<<1],f[N],parity[N];
int T,n;
int find(int x){
    int tmp = f[x];
    if(f[x] == x)
        return x;
    f[x] = find(f[x]);
    parity[x] = (parity[tmp]+parity[x])&1;
    return f[x];
}
int main(){
    int i,j,a,b,xx,yy,len,top;
    char str[10];
    clr(parity, 0);
    scanf("%d",&T);
    scanf("%d",&n);
    if(!n){
        printf("0\n");
        return 0;
    }
    len = 0;
    for(i = 1;i<=n;i++){
        scanf("%d %d %s",&p[i].x,&p[i].y,str);
        s[len++] = p[i].x;
        s[len++] = p[i].y;
        p[i].flag = (str[0]=='o');
    }
    sort(s,s+len);
    top = 0;
    t[top++] = s[0];
    for(i = 1;i<len;i++){
        if(s[i] - s[i-1] > 1)//中间差一个数至关重要
            t[top++] = s[i-1]+1;
        t[top++] = s[i];
    }
    memcpy(s, t, sizeof(s));
    len = top;
    len = (int)(unique(s, s+len) - s);
    
    for(i = 0;i<=len;i++)
        f[i] = i;
    for(i = 1;i<=n;i++){
        a = (int)(lower_bound(s, s+len, p[i].x)-s);
        b = (int)(lower_bound(s, s+len, p[i].y)-s+1);
        xx = find(a);
        yy = find(b);
        if(xx == yy){
            if((parity[a]^parity[b]) != p[i].flag)
                break;
        }else if(xx < yy){
            f[yy] = xx;
            parity[yy] = (parity[a] +parity[b] + p[i].flag) & 1;
        }else{
            f[xx] = yy;
            parity[xx] = (parity[b] +parity[a] + p[i].flag) & 1;
        }
    }
    printf("%d\n",i-1);
    return 0;
}


并查集——奇偶性(Parity) 题目描述 •有一个01序列,长度现在有n条信息,每条信息的形式是-a b even/odd。表示第a位到第b位元素之间的元素总和是偶数/奇数。 •你的任务是对于这些给定的信息,输出第一个不正确的信息所在位置-1。信息的数目不超过5000。 •如果信息全部正确,即可以找到一个满足要求的01序列,那么输出n。 输入 •输入文件 阅读详情

相关推荐

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7783

【poj1182】【经典】【带权并查集】【关系判断矛盾】

【链接】 给出几条关系,判断有几个是矛盾的 i-x代表“i属于x类” 并查集内同组所有元素代表的情况同时发生或者同时不发生 分类: 同类:合并x-A和y-A,x-B和y-B,x-C和y-C 捕食关系(x吃y):合并x-A和y-B,x-B和y-C,x-C和y-A 【代码】 #include&lt;cstdio&gt; using namespace std; const int m...

running_acmer的博客 289

windows10下 iperf3测试带宽

客户端输入:"iperf3.exe -u -c 服务器IP地址 -b 5g" //客户端给服务器发送udp数据包,最大带宽为5g。客户端输入:“iperf3.exe -c 服务器IP地址 -P 10“//表示客户端10路并行给服务器发送TCP包;上图可知:带宽是15Gbps(这里不知道为什么下面测试的UDP会比这里TCP慢 按道理UDP不可能比TCP慢的5.)3. 验证是否下载成功,在打开的窗口中输入“iperf3.exe -v”,会出现安装的版本,表示安装成功了。5. iperf3参数。

xiaoqixiaoguai的博客 5891

并查集-解决区间和纠错问题 hdu-3038

题目:多次给出信息,告诉你[a,b]区间的和,求多少个错误信息(错误信息不考虑)。 乍一看有点像线段树,但想想就发现这个并不能用线段树方便地解决。后来经提醒是并查集的一种经典题型。 把区间抽象为并查集的子节点和母根结点,子节点存放了到根节点的区间和。这样当引入一个新的区间,如果区间左右界根节点不同就一定不存在矛盾(有点种类并查集的意思,形象来看就是存在冗余区间用于调整),然后可以通过...

dong52130的博客 228

字符串替换—牛客网(C++实现)

一.题目描述 请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。 给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。 测试样例: “A%sC%sE”,7,[‘...

qq_38358582的博客 1523

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

『并查集·奇偶性判定』Parity game

Description 有一个01序列,长度<=1000000000,现在有n条信息,每条信息的形式是-a b even/odd。表示第a位到第b位元素之间的元素总和是偶数/奇数。 你的任务是对于这些给定的信息,输出第一个不正确的信息所在位置-1。信息的数目不超过5000。 如果信息全部正确,即可以找到一个满足要求的01序列,那么输出n。 Solution1 l到r是偶数,想到与1到l-1的...

Ronaldo7_ZYB的博客 807

基于fme和python-docx第三方库批量更新不动产调查表

最近应朋友需要批量更新在不动产成果中提交的各种word报表中的指定数据,根据初步的了解,我做了一个基于fme软件和python-docx第三方库进行一个批量的更新方案。

weixin_43229258的博客 1240

POJ-1733 Parity game(并查集+数据离散化)

POJ-1733 Parity game(并查集+数据离散化) Now and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for e...

菜鸡的博客 244

2026.2.23:AgentScope框架实战<一>:安装并使用agentscope

本文介绍了AgentScope框架的安装与使用实践。通过PyPI安装agentscope[full]后,演示了如何创建ReActAgent代理:1)配置DashScope聊天模型;2)注册自定义工具函数(查询位置和天气);3)初始化代理并处理用户请求。示例展示了代理如何响应复合查询(如同时获取北京位置和天气信息),输出结果显示代理成功执行了工具调用并返回结构化响应。该框架支持Python 3.13环境,提供内存管理、工具集成等功能,适用于构建智能代理系统。

拥抱具身智能,昇腾Ascend C 511

NVIDIA Jetson之交叉编译工具

参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&amp;tid=33630 用TX2做红外热成像仪的识别,厂家不提供源码,只能提供对应版本的SDK,但是需要我们自己提供交叉编译器 由于之前没有做过交叉编译相关工作,对编译工具不太了解,因此查找相关资料学习下 交叉编译知识 一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编...

ZONGXP的博客 8385

Parity game POJ - 1733 带权并查集

Now and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for example the subsequence from the t...

loooooog的博客 247

SAP 基于生产订单行项目外部加工创建采购申请时的一个增强需求

摘要 本文介绍在SAP系统中实现生产订单外协工序自动生成采购申请(PR)时,将指定文本写入PR抬头文本的技术方案。关键点包括: 业务背景:通过CO02事务码将工序标记为外部加工,系统自动生成PR,需在生成时自动写入抬头文本。 技术难点: PR抬头文本存储在STXH/STXL而非EBAN表 标准增强点ME_PROCESS_REQ_CUST在外协场景可能不触发 推荐方案: 使用BAdI ME_REQ_POSTED,在PR过账时点执行 通过Text Object EBANH和Text ID(如B01)写入文本 实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 624

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Parity game POJ - 1733(带权并查集)

Now and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for example the subsequence from the t...

Ray.C.L的博客 419

【离散化+并查集】POJ_1733_Parity game

Parity game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9578   Accepted: 3713 Description Now and then you play the following game with your friend. Your

yiluuuuu的博客 285

POJ 1733 并查集 偏移向量

这题也是用到了偏移向量 一个由0,1组成的数字串~~,现在你问一个人一些问题,第i位到第j位的1的个数为奇数还是偶数。他会告诉你答案, 但是答案可能会自相矛盾,现在就是最多能有前几个回答是不矛盾的。 设r[i]表示第1位到第i位的1个数的奇偶状况,r[i] = 0表示有偶数个1,r[i] = 1表示有奇数个1。 那么要是第i位到第j位为偶数个1时,r[i-1] = 1, r[j] = 1 或...

java开发指南博客 【转载】 370

poj 1733带权并查集

L - Parity game Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description Now and then you play the following game with your friend. Your f

u013268685的专栏(有一种幸福叫AC,有一种期待叫AK) 925

bnuoj 17184 代数 && POJ 1733 (带权并查集 )

N. 代数 Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO format: %lld      Java class name: Main   现有N个未知数A[1],A[2],…A[N],以及M个方程,每个方程都是形如A[s]+A[s+1]+A[s+2]+…A[t-1]+A[t]=c。现

Mr.Phoebe的专栏 582

POJ ~ 1733 ~ Parity game (带权并查集+map离散化)

题意:一个长度为N的01串,M句话,每次告诉你a~b区间内有奇数个或者偶数个1,问第一个与前面矛盾的位置在哪,输出他的上一个的位置,没有错误输出M。思路:因为N为10^9,明显开不了那么大的数组,而M只有5000,也就是说中间会有很多数字没有。我们就想到了离散化,只保存有的数字,没有的数字不开辟空间。对于每个数字需要保存两个值,一个为父节点,一个为权值。用map >即可,第一个int表示下标,pa

张松超的博客 618

POJ 1733 Parity game 区间并查集

Now and then you play the following game with your friend. Your friend writes down a sequence consisting of zeroes and ones. You choose a continuous subsequence (for example the subsequence from the t...

zamaochick的博客 224

POJ-1733 Parity game

Parity game 题目链接 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10580 Accepted: 4076 Description Now and then you play the following game with your friend. Your friend wri...

xu0_zy的博客 384

POJ 1733 Parity game (离散化+带权并查集)

Parity game Time Limit:1000MS Memory Limit:65536K Total Submissions:7016 Accepted:2728 Description Now and then you play the following game with your friend. Y...

142

POJ 1733 Parity game

题目链接 题意:首先输入字符串长度N及询问次数M,字符串是有0和1组成的。以下M行,每行两个数a,b,代表区间[a,b],紧接着是一个字符串,如果为“even”代表区间[a,b]中1的个数为偶数,“odd”代表为奇数,询问编号从0开始,问第一个与前面出现矛盾的编号是? 题目解析:类似于 HDU 3038 How Many Answers Are Wrong求区间内数字总和的一道题。设置两个数组

qq_37495823的博客 273

偶数树 并查集

Description给你一棵有n个节点的树(一个无环简单图),节点序号为1~n,根节点为1。 请你找出一个最大的整数k,表示从这棵树上断掉k条边使其所有的子树的节点数都为偶数。Input第一行输入两个整数N,M。表示这棵树有N个节点和M条边。 接下来有M行,每行输入两个整数u,v,表示u节点和v节点间有一条边相连。数据保证:2 ≤ n ≤ 100,并且所有的节点都在一棵树上。 输入的树总能被

xinxiaxindong的博客 724

GOJ1446 并查集判断逻辑错误(是否说谎)

这道题暑假做过,但是忘了。 思路:因为无法直接将输入的两个数放到一个并查集,所以可以让对应的数字与足够远但是又能够一一对应回来的数做联合。 #include #include #include #include using namespace std; int n,l,k,a,b,vis; int main(){ scanf("%d",&n); for(int i=0;i<n;i

RockyHOO1209的博客 584
上一篇: poj 1320 佩尔方程递推
下一篇: poj 3974 Manacher算法(判断最长回文子串)
dumeichen
博客等级 码龄13年 55粉丝 475原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值