【洛谷P1955】程序自动分析【并查集】【离散】

题解:洛谷 P1955 [NOI2015] 程序自动分析 题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。,这些约束条件显然是不可能同时被满足的,因此这个问题应判定为不可被满足。在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。,描述一个相等/不等的约束条件,相邻整数之间用单个空格隔开。,表示需要判定的问题个数。,表示该问题中需要被满足的约束条件个数。#普及+# #并查集# 阅读详情

##题目大意:
题目链接:https://www.luogu.org/problemnew/show/P1955
给出 n n n个变量之间的关系(等或不等),求这些活能否全部是真话。


##思路:
考虑并查集,先将读入的排序,给出相等关系的在前,不等关系的在后。那么对于所有相等的两个变量,我们将它们化为同一集合。之后对于不相等的变量,我们看看这两个变量是否在同一集合内,如果在同一集合内,说明这两个变量是相等的,所以肯定不成立;否则成立,继续往下。
但是这样由于变量的名称比较大,所以要离散之后再用并查集。


##代码:

#include <cstdio>
#include <algorithm>
using namespace std;

int t,n,x,y,len,father[200011],b[200011];

struct node{
  int x,y,z;
}a[200011];

bool cmp(node x,node y)
{
	return x.z>y.z;
}

int find(int x) 
{
	return father[x]==x?x:father[x]=find(father[x]);
}

int main()
{
	scanf("%d",&t);
	while (t--)
	{
		scanf("%d",&n);
		for (int i=1;i<=n;i++)
		{
			scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
			b[i]=a[i].x;
			b[i+n]=a[i].y;  //记录变量
		}
		stable_sort(b+1,b+1+n*2);  //排序
		len=unique(b+1,b+1+n*2)-b-1;  //去重,返回最后数组的长度
		for (int i=1;i<=len;i++) father[i]=i;	
		for (int i=1;i<=n;i++) 
		{
            a[i].x=lower_bound(b+1,b+len+1,a[i].x)-b-1;
            a[i].y=lower_bound(b+1,b+len+1,a[i].y)-b-1;  //离散
        }
        stable_sort(a+1,a+1+n,cmp);  //排序
        for (int i=1;i<=n;i++)
        {
        	int x=find(a[i].x),y=find(a[i].y);
        	if (a[i].z)  //相等关系
        	 if (x!=y)
        	  father[min(x,y)]=max(x,y);  //进入同一集合
        	if (!a[i].z) if (x==y)   //不成立
        	 {
        	 	printf("NO\n");
        	 	break;
        	 }
        	if (i==n) printf("YES\n");
        }
	}
}
AFSim插件开发实战:从环境搭建到功能扩展 本文详细介绍了AFSim插件开发的完整流程,从环境搭建到功能扩展,涵盖了SDK配置、插件创建、核心代码解析、功能扩展实战、调试优化以及高级开发技巧。通过实战案例和实用技巧,帮助开发者快速掌握AFSim插件开发,提升仿真系统的扩展性和灵活性。 阅读详情

相关推荐

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1099

洛谷 P1955 [NOI2015] 程序自动分析

使用map来进行离散化。

无用之人的博客 314

当今用于探测和阻止无人机的 10 种反无人机技术

利用反无人机技术应对无人机威胁。

网络研究观 3541

洛谷P1955 程序自动分析

在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设 x_1,x_2,x_3,\cdotsx1​,x2​,x3​,⋯ 代表程序中出现的变量,给定 nn 个形如 x_i=x_jxi​=xj​ 或 x_i\neq x_jxi​=xj​ 的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件为:x_1=x_2,x_2=x_3,x_3=x_4,x_4\neq x_1x1​=x2​,x2

lzx_xzl_______的博客 361

Xilinx ZYNQ 7000学习笔记二(FSBL代码分析启动-汇编代码)

Xilinx ZYNQ 7000学习笔记

u011116085的博客 4246

【WireShark】WireShark windows平台编译 问题解决

最近工作中需要基于wireshark做二次开发,在windows平台构建过程中 遇到了找不到Glib库的问题,具体报错如下: Working in D:\WorkSpace\WIRESHARK\wiresharksource\wireshark-win64-libs Tag 2021-08-14 not found. Refreshing. Downloading https://anonsvn.wireshark.org/wireshark-win64-libs/tags/2021-08-14/pac

qq_35456540的博客 1545

《洛谷深入浅出进阶篇》P1995 程序自动分析——并查集,离散化

第二,这道题的数据范围太大了,i能达到ie9,所以我们直接用并查集的话,毫无疑问,数组装不下。所以我们可以用离散化来大大缩小数据范围,除此之外呢,我们还可以用hash表来处理这样的大数据,使得每一个大数据都有一个特别的标记与之对应。(前面两个数代表下标,第三个整数k代表条件,如果它是1 ,则代表 x1 = x2,如果它是0,代表x1!第一个条件到第四个条件分别是 x1=x2,x2=x3,x1=x4 ,x3!7,如果第三个数字k=0,我们就查询两个数是否为同一集合,如果是同一集合,那么我们有。

louisdlee的博客 490

【机电杂谈2】BLDC和PMSM的特点和区别

在日常生活中,小到电动玩具,大到电动汽车,永磁电机的身影可以说是无处不在。有刷直流电机、无刷直流电机、永磁同步电机由于其结构和输出特定的不同也被应用到不同的场合。如果你经常拆一些玩具和家电,就会看到大量的有刷直流电机和无刷直流电机,而永磁同步电机主要应用在高精度的工业伺服和电动汽车领域。本文就从电机的结构和控制方面,对这几种常见的永磁电机做简单的梳理和归纳。

2936

洛谷P1955 [NOI2015] 程序自动分析(并查集)

不在一个联通块,则继续向下处理,否则直接输出NO。最后,如果没有矛盾,则输出YES。用并查集连接成一块。,所以本题需要先进行离散化处理。的情况,将相等的两个。

weixin_74754298的博客 909

6、核函数与再生核希尔伯特空间:原理、应用与实践

本文系统介绍了核函数与再生核希尔伯特空间(RKHS)的理论基础、核心性质及其在机器学习和信号处理中的广泛应用。文章从核方法的优势出发,阐述了其在非线性建模、正则化和算法核化方面的独特价值,并深入探讨了正定核、Mercer定理、表示定理等关键理论。通过构建多种标准核与工程专用核,展示了核函数的设计灵活性。结合支持向量回归(SVR)模型与多个MATLAB示例,详细说明了核方法的实际应用流程与操作技巧。最后,总结了核方法的应用领域、未来发展方向及学习实践建议,为读者提供了一套完整的理论与实践指南。

z2a3b4c5d的博客 143

fanuc机器人KAREL程序间参数的传递

之前的课程中讲述过KAREL程序中函数参数的传递,而控制工业机器人的动作只能通过控制TP程序来实现,所以在实际应用中就会出现在不同程序间进行参数的传递。尤其是对于有模块化编程的思想的设计者,更有这种迫切的要求。所以本次课程来讲解一下如何实现在不同程序之间进行参数的传递。 本次课程分为两个部分,以讲解在不同类型程序间进行参数传递的实现方式。 1、TP程序之间传递参数; 2、TP与PC程序之间传递参数。

haier123888的博客 2696

洛谷【P1955 [NOI2015] 程序自动分析】

先离散化缩小区间 再进行并查集操作 结构体要排序 按0和1排 1在前面 对于循环中是0的进行判断祖先节点是否相等 相等就矛盾 打印no 直到循环结束flag还为1的话就打印yes。

2302_78926002的博客 453

风控系统中的架构设计原型图分析与实践探讨

本文探讨了风控系统的架构设计原型图在风险管理中的重要性。通过分析多个案例,文章展示了如何利用架构设计原型图提升团队沟通效率,优化系统结构与功能。强调了良好的架构设计不仅有助于系统的可扩展性和可维护性,还能增强对风险的应对能力。最后,呼吁金融行业持续关注技术进步与市场需求变化,以不断提升风控系统的设计与实施效果。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

洛谷P1955——自动程序分析【并查集 + 离散化】

洛谷P1955——自动程序分析 大致思路:我们先把可以划等号的数字划到同一个集合中,然后再在把划不等号的判断一下看有没有在同一个集合中的,如果有输出NO,无输出YES,这道题的数据给的是1E9如果直接存到数组中去肯定会TLE,我们可以用离散化处理一下。 #include &lt;algorithm&gt; #include &lt;cstdio&gt; #include &lt;cstrin...

xiang_hehe的博客 306

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

洛谷【P1955】程序自动分析(并查集+离散化)

题目链接:https://www.luogu.com.cn/problem/P1955 分析: 首先看到题目中有两种关系,会想到带权并查集,但发现并不适用,反而有点复杂,其次看了元素的范围之后才发现这道题应该就是普通并查集,难点在于对元素进行离散化,使得元素大小缩小到下标可以表示的范围。 #include<iostream> #include<cstdio> #includ...

yj8023xx的博客 235

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

洛谷 P1955 [NOI2015]程序自动分析 (进阶指南, 并查集,离散化)

算法竞赛进阶指南,194页,并查集 本题要点: 1、离散化,等式中的数字 10^9, 而一共 2 * 10^5 个不同的数字, 把所有数字装在数组a,然后排序,去重, 放到数组b, 原来的一个数字映射到数组b的一个下标。 用 lower_bound 来查找每一个数字对应的下标。 2、 并查集,相等关系具有传递性,扫描所有的式子,如果是等式(a == b),将 a 和 b 所在的并查集合并; 然后扫描所有的不等式 (a != b),看看 a 和 b 是否属于同一个并查集即可。 #include <cst

qq_38232157的博客 243

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【并查集/离散化】洛谷P1955 程序自动分析

思路是先把等号的两个数用并查集连起来。 再扫一遍不等号,如果这两个数在同一集合内,就NO,返回。 如果成功扫完了,输出YES。 但是这题数据这么大,必须离散化。 lower_bound是个好东西啊,找到第一个不小于某个数的位置,这样就能方便我们进行离散化了。 楼下的dalao都说是普及组难度,本蒟蒻真是服了。 我拿普一的时候数据结构还没入门呢! 下面是代码

u013095699的博客 430

洛谷 P1955 [NOI2015]程序自动分析 并查集+离散化

题目描述在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。考虑一个约束满足问题的简化版本:假设x1,x2,x3…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件为:x1=x2,x2=x3,x3=x4,x4≠x1,这些约束条件显然是不可能同时被满

Loi_cgold 246

洛谷P1955 [NOI2015]程序自动分析(并查集,离散化)

[NOI2015]程序自动分析 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设x1,x2,x3…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件为:x1=x2,x2=x3,x3=x4,...

闲人请进 183

洛谷P1955 [NOI2015] 程序自动分析 [并查集,离散化]

  题目传送门 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。例如,一个问题中的约束条件为:x1=x2,x2=x3,x...

weixin_30363817的博客 64

洛谷 P1955[NOI2015]程序自动分析【离散化+并查集】

离散化;并查集

niiick 194

题248.离散化-洛谷P1955 [NOI2015] 程序自动分析

文章目录题248.离散化-洛谷P1955 [NOI2015] 程序自动分析一、题目二、题解 题248.离散化-洛谷P1955 [NOI2015] 程序自动分析 一、题目 二、题解 首先推导公式我们可以知道我们要求的系数其实就是a的n次方乘以b的m次方再乘上m,k组合数。对于a的n次方和b的m次方,我们可以使用快速幂直接得出。 之后,看k,m组合数,它可作如下推导: 则我们把除以(k-m)!分解,其实就是每次去乘i逆元(即倒数),又因为取模是素数,所以可以费马小定理a-1%mod=amod-

Adongua的博客 455

每日一题006-离散化和哈希-洛谷p1955程序自动分析

为什么用快读是因为我看我的做法总时长1.17s,题解里面的做法三百多毫秒,不知道为什么差距这么大。的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。那题很像,但是有问题,就是不等于的关系是不可以传递的。最后一个问题,显然不能开10^9的数组,所以要么使用离散化要么使用哈希,可以点击前置知识中的链接。应该先把所有的e=1的数据合并了,然后再判断e=0的数据。,这些约束条件显然是不可能同时被满足的,因此这个问题应判定为不可被满足。,表示需要判定的问题个数。

zjh的博客 1196

【字符串哈希】练习

一眼并查集,唯一要注意的是数据范围很大,需要离散化。自然溢出手写哈希模板代码。

m0_74183164的博客 439

并查集 + 离散化 + 哈希 - NOI 2015 程序自动分析 - 洛谷 P1955

并查集 + 离散化 + 哈希 - NOI 2015 程序自动分析 - 洛谷 P1955 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个变量赋予恰当的值,使得上述所有约束条件同时被满足。 例如,一个问题中的约束条件为:x1=x2,x2=x3,x3=x4,x1≠x4,这些约束条件显然是不可能同时被满足的,因此这个问题应判定

njuptACMcxk的博客 301

并查集——程序自动分析(洛谷 P1955)

比较复杂一点的并查集题目,还用到了离散化的思想

青春无问西东 岁月自成芳华 2176
上一篇: 【CH 4201】楼兰图腾【树状数组】
下一篇: 【洛谷P3368】【模板】树状数组2【树状数组】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值