当前位置: 首页 > news >正文

P3588 [POI2015] PUS

~~~~~      P3588 [POI2015] PUS ~~~~~      总题单链接

思路

~~~~~      这道题的关键点在于线段树优化建图。

~~~~~      对每条限制新建一个虚电 p p p,将输入的 x 1 ∼ k x_{1\sim k} x1k 连向 p p p,再将 p p p 连向区间内单的其他点,建完图后拓扑排序即可。

~~~~~      但如果每个区间都是 [ 1 , 100000 ] [1,100000] [1,100000] k = 1 k=1 k=1,那么就会连 ∑ k × n \sum k\times n k×n 条边。

~~~~~      怎么办,发挥想象力,用线段树优化建图。

~~~~~      每个限制的区间最多会被拆分成 k + 1 k+1 k+1 个区间,暴力枚举区间,用线段树建图即可。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;vector<ll>eg[500005];ll n,s,m,tot,usr;
ll vis[500005],din[500005],mx[500005];class{
public:struct Point{ll L,R,id;}po[400005];void build(ll x,ll y,ll p=1){po[p]={x,y,++tot};if(x==y){eg[po[p].id].push_back(x),din[x]++;return;}ll mid=(x+y)>>1;build(x,mid,p<<1);build(mid+1,y,p<<1|1);eg[po[p].id].push_back(po[p<<1].id),din[po[p<<1].id]++;eg[po[p].id].push_back(po[p<<1|1].id),din[po[p<<1|1].id]++;}void query(ll wc,ll x,ll y,ll p=1){if(po[p].R<x||po[p].L>y)return;if(po[p].L>=x&&po[p].R<=y){eg[wc].push_back(po[p].id);din[po[p].id]++;return;}query(wc,x,y,p<<1);query(wc,x,y,p<<1|1);}
}tr;queue<ll>que;
void tupo(){for(ll i=1;i<=tot;i++)if(!din[i])que.push(i);while(!que.empty()){ll u=que.front();que.pop();usr++;if(mx[u]<1||vis[u]>mx[u]){cout<<"NIE";exit(0);}for(ll v:eg[u]){din[v]--;if(u<=n)mx[v]=min(mx[v],mx[u]-1);else mx[v]=min(mx[v],mx[u]);if(din[v]==0)que.push(v);}}if(usr!=tot){cout<<"NIE";exit(0);}
}vector<ll>now;
signed main(){ios::sync_with_stdio(false);cin>>n>>s>>m;tot=n;for(ll i=1;i<=s;i++){ll x,y;cin>>x>>y;vis[x]=y;}tr.build(1,n);for(ll q=1;q<=m;q++){ll x,y,k;cin>>x>>y>>k;now.clear();for(ll i=1;i<=k;i++){ll g;cin>>g;now.push_back(g);}tot++;if(now[0]-1>=x)tr.query(tot,x,now[0]-1);for(ll i=1;i<now.size();i++){if(now[i-1]+1>now[i]-1)continue;tr.query(tot,now[i-1]+1,now[i]-1);}for(ll it:now)eg[it].push_back(tot),din[tot]++;if(y>=now[now.size()-1]+1)tr.query(tot,now[now.size()-1]+1,y);}for(ll i=1;i<=tot;i++){if(vis[i])mx[i]=vis[i];else mx[i]=1000000000;}tupo();cout<<"TAK"<<endl;for(ll i=1;i<=n;i++)cout<<mx[i]<<" ";return 0;
}

相关文章:

P3588 [POI2015] PUS

~~~~~ P3588 [POI2015] PUS ~~~~~ 总题单链接 思路 ~~~~~ 这道题的关键点在于线段树优化建图。 ~~~~~ 对每条限制新建一个虚电 p p p&#xff0c;将输入的 x 1 ∼ k x_{1\sim k} x1∼k​ 连向 p p p&#xff0c;再将 p p p 连向区间内单的其他点&#xff0c;建完图后拓扑排…...

指针(四)

指针和数组笔试题解析 一维数组 字符数组 &#xff08;没有\0&#xff09; 字符数组&#xff08;有\0&#xff09; 重点讲一下printf("%d\n", strlen(*p))&#xff1b; 这个strlen函数中是从地址开始寻找&#xff0c;而非元素本身&#xff1b;假设计算的是元素本…...

0902,DEQUE,LIST,VECTOR

目录 01_vector.cc 02_vector.cc 作业 01STL包括哪些组件&#xff1f;各自具有哪些特点&#xff1f; 02 序列式容器包括哪些&#xff1f;他们之间有哪些异同&#xff1f; 03 下面程序有什么错误&#xff1f; 04 创建和初始化vector的方法&#xff0c;每种都给出一个实例…...

LeetCode 每日一题 2024/9/2-2024/9/8

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/2 3153. 所有数对中数位不同之和9/3 2708. 一个小组的最大实力值9/4 2860. 让所有学生保持开心的分组方法数9/5 3174. 清除数字9/6 3176. 求出最长好子序列 I9/7 3177. 求…...

Linux中的Vim文本编辑器

Linux中的Vim是一个非常强大的文本编辑器&#xff0c;它提供了丰富的命令来支持各种文本编辑操作。以下是一个Vim常用命令的详细总结&#xff0c;涵盖了基本操作、编辑命令、移动光标、查找替换、保存退出等多个方面。 一、基本操作 启动Vim vim&#xff1a;直接启动Vim编辑器…...

rancher搭建k8s及jenkins自动化部署

1、准备环境 角色IP用途k8s-rancher-master192.168.3.63master节点k8s-rancher-node01192.168.3.64node节点k8s-rancher-node02192.168.3.66node节点k8s-rancher-server192.168.2.33rancher-server节点注: 服务器名需要配置不同,相同服务器名不能加入node节点 在所有节点进行…...

vue el-dialog嵌套解决无法点击问题

产生原因: 当你在 el-dialog 上嵌套另一个 el-dialog 窗口时&#xff0c;可能会遇到内部对话框无法点击的问题。这通常是由于嵌套对话框的遮罩层&#xff08;overlay&#xff09;或其他样式问题造成的。 解决方案: 如果你的 el-dialog 组件支持 append-to-body 属性&#xff…...

c# c++程序 交互

目录 一、两种不同程序写的进程交互 1、定义交互消息 2、定义C进程发来的消息ID 3、定义C进程交互的句柄 及给C进程发送的消息ID 4、定义交互消息所需的数据类型 5、引入所需的系统函数 6、给主进程发消息 7、写入本进程主窗口句柄 8、处理发来的交互消息 一、两种不…...

解决ruoyi框架中使用pagehelper插件分页查询后对数据进行对象转换后失效问题

一、场景重现 使用rouyi框架时&#xff0c;可以看到很多分页查询&#xff0c;如&#xff1a; //-----------SysConfigController------------- GetMapping("/list") public TableDataInfo list(SysConfig config) {startPage();List<SysConfig> list config…...

RabbitMQ 应用

文章目录 前言1. Simple 简单模式2. Work Queue 工作队列模式3. Pubulish/Subscribe 发布/订阅模式Exchange 的类型 4. Routing 路由模式5. Topics 通配符模式6. RPC RPC通信7. Publisher Confirms 发布确认1. 单独确认2. 批量确认3. 异步确认 前言 前面我们学习了 RabbitMQ 的…...

使用Python读取Excel数据的详细指南

在数据分析中&#xff0c;Excel文件是一种常见的数据存储格式。使用Python读取Excel数据可以帮助我们更方便地进行数据处理和分析。本文将介绍如何在Python 2和Python 3中读取Excel数据&#xff0c;具体步骤和代码示例详细说明。 准备工作 在开始之前&#xff0c;请确保你已经…...

VitePress 动态路由与路径加载器详解

在使用 VitePress 构建静态网站时&#xff0c;动态路由功能允许我们通过单个 Markdown 文件和动态数据生成多个页面。本文将详细介绍如何使用动态路由以及路径加载器文件来生成这些页面&#xff0c;并提供实例代码和解释说明。 动态路由基础 动态路由的核心在于使用带有参数的…...

C#编程语言及.NET 平台快速入门指南

Office Word 不显示 Citavi 插件&#xff0c;如何修复&#xff1f;_citavi安装后word无加载项-CSDN博客 https://blog.csdn.net/Viviane_2022/article/details/128946061?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_ta…...

高等代数精解【9】

文章目录 向量空间与矩阵矩阵的行列式矩阵A的秩保持不变方阵的行列式线性无关的条件1. 线性组合为零向量的唯一性2. 矩阵的秩3. 几何解释&#xff08;对于二维和三维空间&#xff09;4. 行列式&#xff08;对于方阵&#xff09;总结 矩阵的非零子式基础重要性例子注意事项 非奇…...

谷粒商城の缓存篇

文章目录 前言一、本地缓存和分布式缓存1.本地缓存2.分布式缓存 二、项目实战1.配置Redis2.整合业务代码2.1 缓存击穿2.2 缓存雪崩2.3 缓存穿透2.4 业务代码1.0版2.5 分布式锁1.0版2.6 分布式锁2.0版2.7 Spring Cache及缓存一致性问题2.7.1 Spring Cache2.7.2 缓存一致性问题2.…...

永远学习:为什么人工智能难以适应新挑战

理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境&#xff0c;正如水适应水瓶。”——中国谚语 “适应或灭亡&#xff0c;现在和以往一样&#xff0c;是大自然的必然法则。”——赫伯特乔治威尔斯 近年来&#xff0c;人工智能取得了长足的进步。所…...

【spring】 Jackson :@JsonIgnore 注解

@JsonIgnore 是 Jackson 库中的一个注解,用于在序列化和反序列化过程中忽略某个字段。也就是说,当对象被转换为 JSON 或从 JSON 转换为对象时,带有 @JsonIgnore 注解的字段将不会被包含在内在这个示例中,ignoredField 字段将不会出现在生成的 JSON 字符串中。 import com.…...

Dependencies与DependencyManagement的区别

现在Maven项目管理&#xff0c;在开发中时比较常用的&#xff0c;在一些项目汇总遇到依赖冲突的问题之后&#xff0c;还是没有能有一个很好的解决办法&#xff0c;这次就来看看在使用Maven管理依赖的过程中dependencies与dependencyManagement的区别。 DepencyManagement应用场…...

git svn 日记

1. git log -p -1 --name-only 该命令用于查看最新的一次提交记录的详细信息&#xff0c;包括文件更改情况。 git log&#xff1a;显示 Git 仓库的提交历史。-p&#xff1a;显示每次提交的差异 (diff)&#xff0c;也就是文件内容的修改部分。-1&#xff1a;表示只显示最近的一…...

FSMC

RAM ROM RAM和ROM相比&#xff0c;两者的最大区别是RAM在断电以后保存在上面的数据会自动消失&#xff0c;而ROM不会自动消失&#xff0c;可以长时间断电保存。 并且RAM的速度要远远高于ROM的速度。 SRAM SRAM 的存储单元以锁存器来存储数据&#xff0c;种电路结构不需要定时…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...