P1955 [NOI2015] 程序自动分析

news2024/11/25 6:37:33

题目

在这里插入图片描述

思路

第一眼:非常简单的并查集

看看标签
在这里插入图片描述
6
为什么离散化会WA+RE呢
首先,并查集是根据f数组来联系两点的,类似于f[x]=y,但是在这个题中我们不能确定x是否为非负整数,而且x过大也会炸内存
那就加一个离散化吧

  • 输入所有元素
  • 排序
  • 去重
  • 把每个元素标号
  • 对标号后的元素进行操作

这样就能保证x为整数且最大为元素的个数了
理论存在,时间开始

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=1e7+5;
int n,tot;
int f[maxn*2],a[maxn*2];
struct q{
	int x1,x2,if_case;
}qry[maxn];
struct cmp{
	bool operator () (const q& a,const q& b){
		return a.if_case>b.if_case;
	}
};
istream& operator >> (istream& in,q& qr){
	in>>qr.x1>>qr.x2>>qr.if_case;
	return in;
}
void init(int n) { for(int i=0;i<=n;i++) f[i]=i; }
int find(int x) { return f[x]==x?x:f[x]=find(f[x]); }
bool query(int x,int y) { return find(x)==find(y); }
void merge(int x,int y) { f[find(x)]=find(y); }
void read(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>qry[i],a[++tot]=qry[i].x1,a[++tot]=qry[i].x2;//输入每个元素
}
void solve(){
	sort(a+1,a+1+tot);//排序元素
	int res=unique(a+1,a+1+tot)-(a+1);//去重
	for(int i=1;i<=n;i++) qry[i].x1=lower_bound(a+1,a+1+res,qry[i].x1)-(a+1),qry[i].x2=lower_bound(a+1,a+1+res,qry[i].x2)-(a+1);//查找标号,更改元素
	sort(qry+1,qry+1+n,cmp());//先处理1
	init(res);//一定要初始化!
	for(int i=1;i<=n;i++){
		int x1=qry[i].x1,x2=qry[i].x2;
		switch (qry[i].if_case){
			case 1:if(!query(x1,x2)) merge(x1,x2); break;//合并
			case 0:if(query(x1,x2)) { cout<<"NO"<<endl;return; } break;
		}
	}
	cout<<"YES"<<endl;
}
signed main()
{
	int t;cin>>t;
	while(t--) read(),solve();
	return 0;
}

这里用到了一个小技巧:先把等号处理后再处理不等号,这样就可以在判断不等号时若之前有等号就直接return掉了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux服务使用宝塔面板搭建网站,通过内网穿透实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

案例16 基于Spring Boot实现学生新增案例

基于Spring Boot实现学生新增。 1. 创建Spring Boot项目 创建Spring Boot项目&#xff0c;项目名称为case16-springboot-student01。 ​ 2. 设置项目信息 ​ 3. 选择依赖 选择Lombok ​ 选择Spring Web ​ 4. 设置项目名称 ​ 5. Maven依赖 <?xml version"1.0&qu…

SyntaxError: Cannot use import statement outside a module

node环境运行报错&#xff1a; 解决步骤&#xff1a; 1. npm init -y 2. 在 package.json 文件中加入一条&#xff1a;"type": "module", 3. 保存后再执行即可 附&#xff1a;最好是不要在node用import&#xff0c;否则需要上次配置 建议1&#xff1a;用re…

【网络】传输层——TCP(滑动窗口流量控制拥塞控制延迟应答捎带应答)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 上篇文章对TCP可靠性机制讲解了一部分&#xff0c;这篇文章接着继续讲解。 &#x1f3a8;滑动窗口 在…

手动实现线性回归例子

转自&#xff1a;https://www.cnblogs.com/BlairGrowing/p/15061912.html 刚开始接触深度学习和机器学习&#xff0c;由于是非全日制&#xff0c;也没有方向感&#xff0c;缺乏学习氛围、圈子&#xff0c;全靠自己业余时间瞎琢磨&#xff0c;犹如黑夜中摸索着石头过河。 本文…

探讨uniapp的数据缓存问题

异步就是不管保没保存成功&#xff0c;程序都会继续往下执行。同步是等保存成功了&#xff0c;才会执行下面的代码。使用异步&#xff0c;性能会更好&#xff1b;而使用同步&#xff0c;数据会更安全。 1 uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中&#x…

Oracle切割字符串的方法,SQL语句完成。

Oracle用正则的方式循环切割字符串 需求&#xff1a;有一个这样子的 Str “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’” &#xff0c;然后我需要拿到每一个单号&#xff0c;每一个单号都要走一遍固定的…

基于K8S环境部署Dolphinscheduler及简单应用

一、Dolphinscheduler简介 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用…

SOPC之NIOS Ⅱ遇到的问题

记录NIOS Ⅱ中遇到的报错 一、NIOS II中Eclipse头文件未找到 问题&#xff1a;Unresolved inclusion: "system.h"等 原因&#xff1a;编译器无法找到头文件所在路径 解决方法&#xff1a; 在文件夹中找到要添加的头文件&#xff0c;并记录下其路径&#xff0c;如…

8.14 作业

1. .text .globl _start_start:mov r0,#0x9mov r1,#0xfbl loop loop:cmp r0,r1beq stopsubhi r0,r1subls r1,r0mov pc,lr stop:b stop 2.实现1-100的和 .text .globl _start_start:mov r0,#0x1bl loop loop:cmp r0,#0x64bhi stopaddls r1,r0addls r0,#0x1mov pc,lr stop:b sto…

Android app专项测试之耗电量测试

前言 耗电量指标 待机时间成关注目标 提升用户体验 通过不同的测试场景&#xff0c;找出app高耗电的场景并解决 01、需要的环境准备 1、python2.7(必须是2.7&#xff0c;3.X版本是不支持的) 2、golang语言的开发环境 3、Android SDK 此三个的环境搭建这里就不详细说了&am…

C++之map的emplace与pair插入键值对用法(一百七十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【openwrt学习笔记】dnsmasq源码阅读

目录 一、DHCP(Dynamic Host Configuration Protocol)1.1 前置知识1.2 参考链接1.3 IP地址分配代码分析rfc2131.cdhcp-common.cdhcp.c 1.4 几个小问题1.4.1 连续IP模式&#xff08;sequential_ip&#xff09;1.4.2 重新连接使用IP地址1.4.3 续约租期1.4.4 不同的MAC地址分配到相…

Power Automate:筛选查找列表中的项并删除

目的&#xff1a;筛选出列表中所有符合条件的项并删除&#xff0c;如果一项都没有&#xff0c;就发邮件通知自己 1、首先获取多个项&#xff0c;添加筛选条件&#xff0c;比如设备列为1的项&#xff0c;无需加引号。也可以添加筛选条件 2、接下来不能直接循环刚得到的多个项并…

NuGet包离线安装方法

在某项情况下&#xff0c;我们的计算机是无法直接连接外网的&#xff0c;这个时候就只能用离线安装的方法了。 一、直接区NUGET.org网页下载&#xff1a; 二、先下载nuget.exe工具&#xff0c;然后用这个工具下载 把下载的nuget.exe放在任意目录下&#xff0c;然后在此目录用…

MongoDB升级经历(4.0.23至5.0.19)

MongoDB从4.0.23至5.0.19升级经历 引子&#xff1a;为了解决MongoDB的两个漏洞决定把MongoDB升级至最新版本&#xff0c;期间也踩了不少坑&#xff0c;在这里分享出来供大家学习与避坑~ 1、MongoDB的两个漏洞 漏洞1&#xff1a;MongoDB Server 安全漏洞(CVE-2021-20330) 漏洞2…

如何在Stream流中分组统计

上面是今天碰到需求,之前就做过类似的分组统计,这个相对来说比较简单,统计的也少,序号和总预约人数这两部分交给前端了,不需要由后端统计,后端统计一下预约日期和检查项目和预约人数就行; Overridepublic List<ItemStatisticsVo> statistics(ItemStatisticsModel itemSta…

checkbox post参数接收

checkbox 定义 <div class"check-box"> <label for"ck1">batchInsert:</label><input type"checkbox" id"ck1" checkedname"ckFn" value"batchInsert" > </div> <div class&qu…

Python爬虫获取美女头像并保存本地(观山篇一)

Python爬虫获取美女头像并保存本地&#xff08;观山篇一&#xff09; 前言步骤一步骤二步骤三步骤四步骤五最终效果完整代码结言 前言 最近某短视频平台上经常刷到&#xff0c;人生四大雅事&#xff1a;“品茗、抚琴、观山、听雨”。那么今天我们就利用python观山所看到的美景给…

如何做好一名网络工程师?具备的技能有哪些?

支持属于网络工程师的工作范围的企业网络&#xff0c;此网络与支持它的铜或光纤基础架构一样性能良好。网络工程师及其布线厂区需要为支持最新网络技术做好准备。网络工程师作为任何性能问题的解决者&#xff0c;需要拥有必要的工具来确定问题所在 — 在网络中还是在其他地方。…