洛谷P3084 [USACO13OPEN] Photo G

题目描述


Farmer John has decided to assemble a panoramic photo of a lineup of his N cows (1 <= N <= 200,000), which, as always, are conveniently numbered from 1..N. Accordingly, he snapped M (1 <= M <= 100,000) photos, each covering a contiguous range of cows: photo i contains cows a_i through b_i inclusive. The photos collectively may not necessarily cover every single cow.

After taking his photos, FJ notices a very interesting phenomenon: each photo he took contains exactly one cow with spots! FJ was aware that he had some number of spotted cows in his herd, but he had never actually counted them. Based on his photos, please determine the maximum possible number of spotted cows that could exist in his herd. Output -1 if there is no possible assignment of spots to cows consistent with FJ's photographic results.

农夫约翰决定给站在一条线上的N(1 <= N <= 200,000)头奶牛制作一张全家福照片,N头奶牛编号1到N。

于是约翰拍摄了M(1 <= M <= 100,000)张照片,每张照片都覆盖了连续一段奶牛:第i张照片中包含了编号a_i 到 b_i的奶牛。但是这些照片不一定把每一只奶牛都拍了进去。

在拍完照片后,约翰发现了一个有趣的事情:每张照片中都有且仅有一只身上带有斑点的奶牛。约翰意识到他的牛群中有一些斑点奶牛,但他从来没有统计过它们的数量。 根据照片,请你帮约翰估算在他的牛群中最多可能有多少只斑点奶牛。如果无解,输出“-1”。

Input

输入格式

* Line 1: Two integers N and M.
* Lines 2..M+1: Line i+1 contains a_i and b_i.

输出格式


* Line 1: The maximum possible number of spotted cows on FJ's farm, or -1 if there is no possible solution.

输入输出样例


输入 #1


5 3 
1 4 
2 5 
3 4 


输出 #1


1


说明/提示


There are 5 cows and 3 photos. The first photo contains cows 1 through 4, etc.

From the last photo, we know that either cow 3 or cow 4 must be spotted. By choosing either of these, we satisfy the first two photos as well.

题目分析

差分约束裸题

但要注意纯spfa会被卡超时,用双端队列优化

同时还要加入过时退出:
 

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct Edge{int v;int w;int next;
}edge[1000010];
int cnt,head[200010],add[200010],vis[200010],dis[200010];
deque<int> deq;
void add_edge(int u,int v,int w)
{edge[++cnt]=(Edge){v,w,head[u]};head[u]=cnt;
}
int main()
{memset(head,-1,sizeof(head));cin>>n>>m;for(int i=1;i<=n;i++){add_edge(i,i-1,0);add_edge(i-1,i,1);}for(int i=1;i<=m;i++){int x,y;scanf("%d%d",&x,&y);add_edge(x-1,y,1);add_edge(y,x-1,-1);}deq.push_front(0);memset(dis,0x3f,sizeof(dis));dis[0]=0;vis[0]=1;add[0]=1;int st=clock();while(!deq.empty()){int u=deq.front();deq.pop_front();vis[u]=0;for(int i=head[u];i!=-1;i=edge[i].next){int v=edge[i].v,w=edge[i].w;if(dis[v]>dis[u]+w){dis[v]=dis[u]+w;if(!vis[v]){vis[v]=1;if(++add[v]>n+1){cout<<-1;return 0;}if(clock()-st>=0.7*CLOCKS_PER_SEC){cout<<-1;return 0;}if(!deq.empty()&&dis[v]<dis[deq.front()]) deq.push_front(v);else deq.push_back(v);}}}}if(dis[n]==dis[n+1]) cout<<-1;else cout<<dis[n];return 0;
}

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

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

相关文章

c++算法之二分

目录 二分法简介 解题步骤 整数二分 模板 例题 输入描述 输出描述 样例输入输出 解 浮点二分 模板 二分答案&#xff08;最重要&#xff09; 模板 例题 跳石头 题目描述 输入描述 输出描述 输入输出样例 解 例题 肖恩的苹果林 输入描述 输出描述 解 测…

linux-前端项目由nginx迁移到apache httpd

linux-前端项目由nginx迁移到apache httpd 1、前端项目存放目录为 /var/www/dist 虚拟主机端口80 反向代理拦截 /prod-api 后端服务地址 http://192.168.0.44:8097 2、在/etc/httpd/conf.d/目录中&#xff0c;创建一个vhost.conf的文件&#xff0c;放入以下内容 <VirtualHos…

android 13.0 Launcher3长按app弹窗设置为圆角背景功能实现二

1.前言 在13.0的系统ROM定制化开发中,在进行一些Launcher3的定制化开发中,在使用app的弹窗的功能时,会弹出应用信息和 微件之类的内容,所以在定制需求中,需要默认设置为圆角背景,接下来就来分析下相关功能的实现如图: 2.Launcher3长按app弹窗设置为圆角背景功能实现二的…

基于JAVA的固始鹅块销售系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固始鹅块模块2.4 鹅块订单模块2.5 评论管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 鹅块类型表3.2.2 鹅块表3.2.3 鹅块订单表3.2.4 鹅块评论表 四、系统展示五、核心代码5.…

ubuntu篇---降低内核版本

ubuntu篇---降低内核版本 1. 关闭自动更新2. 查看当前内核版本3. 内核恢复4. 查看本地已安装的内核版本5. 更新引导6. 重启系统7. 卸载内核 1. 关闭自动更新 要在 Ubuntu 中关闭系统的自动更新&#xff0c;可以按照以下步骤进行操作&#xff1a; 把1都改成0 查看 cat /etc…

一张4MP的YUV大小为什么按6M来估算或者是为什么是4*1.5

在图像处理中&#xff0c;YUV是一种常用的颜色空间格式。4MP意味着图像有大约400万个像素点。YUV格式通常包含三个分量&#xff1a;Y&#xff08;亮度&#xff09;&#xff0c;U和V&#xff08;色度&#xff09;。不同的YUV格式有不同的存储方式&#xff0c;但是最常见的格式之…

每日一练:LeeCode-104. 二叉树的最大深度【二叉树】

本文是力扣LeeCode-104. 二叉树的最大深度 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例…

WAMP apache 无法启动(端口 80 未使用)

这段时间系统重装后&#xff0c;安装WAMP Server&#xff0c;装好后点击启动绿了下然后又变成了黄色&#xff0c;托盘图标无论是左键点击还是右键点击都没有反应&#xff0c;wampapache64服务也启动不起来&#xff0c;提示“windows不能在本地计算机启动wampapache”&#xff0…

【npm link】Node命令中的npm link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;NodeJs &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续前进的勇气…

Mysql查询与更新语句的执行

一条SQL查询语句的执行顺序 FROM&#xff1a;对 FROM 子句中的左表<left_table>和右表<right_table>执行笛卡儿积&#xff08;Cartesianproduct&#xff09;&#xff0c;产生虚拟表 VT1 ON&#xff1a;对虚拟表 VT1 应用 ON 筛选&#xff0c;只有那些符合<join_…

yapi无法注册解决,使用yapi pro即可注册,接口文档生成,java,json

1.气屎我了&#xff0c;直接用yapi pro就可以用&#xff0c;害的我弄了半天 2.地址&#xff1a;https://yapi.pro/login 3.yapi pro比较卡顿。开启无痕模式轻松解决该问题&#xff08;手动狗头&#xff09;祝你开启新大陆 yapi pro yapi

ChatGPT能帮助我们人类做什么

一、ChatGPT可以在多个方面帮助人类&#xff1a; 回答问题&#xff1a; ChatGPT可以回答各种问题&#xff0c;提供信息和解释概念。 创造性写作&#xff1a; 它可以生成文章、故事、诗歌等创意性文本。 学术辅助&#xff1a; ChatGPT可以辅助学术研究&#xff0c;提供解释、背…

DNS解析和主从复制

一、DNS名称解析协议 二、DNS正向解析 三、DNS主从复制 主服务器 从服务器

在开发时如何决定使⽤哪种数据类型?

一、问题 程序中的每个数据都必须有明确的数据类型&#xff0c;那么在开发时如何决定使⽤哪种数据类型呢&#xff1f; 二、解答 1、如果需要的数⼤于32767 或者⼩于-32767&#xff0c;就应该使⽤ long 型。 2、如果有⼤数组或很多结构&#xff0c;就使⽤ short 型。除了上述两…

安装rlwrap库出现问题

背景&#xff1a;oracle的sqlplus还是那么难用&#xff0c;不知道为什么不打包解决这个问题&#xff0c;留给用户&#xff0c;内核硬&#xff0c;就是猖狂。废话不多说。下载解压rlwrap-0.46.1.tar.gz;进入/tmp/database/rlwrap-0.46.1源码包&#xff0c;./configure checki…

Ubuntu按转发HDF5

源码编译流程 下载源代码 wget https://hdf-wordpress-1.s3.amazonaws.com/wp-content/uploads/manual/HDF5/HDF5_1_14_3/src/hdf5-1.14.3.zip 解压 unzip hdf5-1.14.3.zip 进入解压后的目录 cd hdf5-1.14.3 编译 依次执行下面的命令 ./configure --prefix/usr/local/hdf5…

RT-Thread基于AT32单片机的CAN应用

1 硬件电路 2 RT-Thread驱动配置 RT-Studio中没有CAN相关的图形配置&#xff0c;需要手动修改board.h。在board.h的末尾&#xff0c;增加相关的BSP配置。 #define RT_CAN_USING_HDR #define BSP_USING_CAN13 IO配置 at32_msp.c中的IO配置是PB9和PB10&#xff0c;掌上实验室V…

Pandas实战100例 | 案例 39: 日期时间索引

案例 39: 日期时间索引 知识点讲解 当你的 DataFrame 有一个 datetime 类型的索引时&#xff0c;你可以利用这个索引来选择特定日期或日期范围的数据。这在时间序列数据分析中非常有用。 日期时间索引: 如果 DataFrame 的索引是 datetime 类型的&#xff0c;你可以使用日期字…

轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

MySQL索引优化实战

联合索引第一个字段用范围不会走索引 type all EXPLAIN SELECT * FROM employees WHERE name > LiLei AND age 22 AND position manager; 因为MySQL有自己的优化机制&#xff0c;当索引中第一个字段是 大于 小于 那么MySQL就会认为会扫描出很多条数据 并且是二级索引可…