bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班

思路:可以贪心,也可以最短路。

贪心写法:因为在保证合法的前提下,我们选择的区间一定要右端点尽量靠后才行,于是我们每次就选择一个合法的并且右端点最靠后的区间就好了(如果没有合法的输出-1即可)。时间复杂度O(nlogn)(排序是nlogn的,贪心是O(n)的)。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 25005int n,t,ans;
int last[1000005];struct node{int l,r;bool operator <(const node &a)const{return l<a.l||(l==a.l&&r<a.r);}
}a[maxn];inline int read(){int x=0;char ch=getchar();for (;ch<'0'||ch>'9';ch=getchar());for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x;
}int main(){n=read(),t=read();for (int i=1;i<=n;i++) a[i].l=read(),a[i].r=read();sort(a+1,a+n+1);int cnt=0;for (int i=1;i<=n;i++)if (a[i].l!=a[i+1].l) a[++cnt]=a[i];n=cnt;int now=0;for (int i=1;i<=n;i++){int x=0;bool flag=0;while (a[i].l<=now+1&&i<=n) x=max(x,a[i].r),i++,flag=1;if (!flag){ans=-1;break;}if (x>now) now=x,ans++;i--;}if (now!=t) ans=-1;printf("%d\n",ans);return 0;
}

最短路写法:区间[l,r]表示可以从l-1走到r,那么我们就把l-1连一条权值为1的边到r即可,然后又因为区间可以有交集,所以还需要将i向i-1连一条权值为0的边,然后以0为起点跑最短路即可(以0为起点是因为是l-1连向r)。时间复杂度O(TlogT)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define maxn 1000005
#define inf 1e9int n,t,tot;
int now[maxn],pre[maxn*2],son[maxn*2],val[maxn*2],dis[maxn];
bool vis[maxn];inline int read(){int x=0;char ch=getchar();for (;ch<'0'||ch>'9';ch=getchar());for (;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x;
}void add(int a,int b,int c){son[++tot]=b;pre[tot]=now[a];now[a]=tot;val[tot]=c;
}void link(int a,int b,int c){add(a,b,c);
}struct node{int id,val;node(){}node(int a,int b){id=a,val=b;}bool operator <(const node &a)const{return val>a.val;}
};
priority_queue<node> heap;void dijkstra(int x){memset(dis,127,sizeof(dis)),dis[x]=0;heap.push(node(x,0));while (!heap.empty()){node x=heap.top();heap.pop();int id=x.id,v=x.val;if (vis[id]) continue;vis[id]=1;for (int p=now[id];p;p=pre[p])if (dis[son[p]]>v+val[p]) heap.push(node(son[p],dis[son[p]]=v+val[p]));}
}int main(){n=read(),t=read();for (int i=1,a,b;i<=n;i++) a=read(),b=read(),link(a-1,b,1);for (int i=1;i<=t;i++) link(i,i-1,0);dijkstra(0);if (dis[t]>1e9) puts("-1");else printf("%d\n",dis[t]);return 0;
}

转载于:https://www.cnblogs.com/DUXT/p/6044799.html

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

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

相关文章

unity 烘焙参数 设置_Unity通用渲染管线(URP)系列(九)——点光源和聚光灯

200篇教程总入口&#xff0c;欢迎收藏&#xff1a;放牛的星星&#xff1a;[教程汇总持续更新]Unity从入门到入坟——收藏这一篇就够了​zhuanlan.zhihu.com本文重点内容&#xff1a;1、支持更多类型的灯光2、包含实时的点光源和聚光灯3、为点光源和聚光灯烘焙阴影4、每个物体限…

c#日期转换周几_Java时间与日期

只有把眼前的事情做好&#xff0c;才能考虑其他的问题。众所周知&#xff0c;全世界在同一时刻看手表肯定不会看到同一个时间&#xff0c;因为地球是圆的&#xff0c;面对太阳的角度是不一样的&#xff0c;我们一般说时间几点几点&#xff0c;是指的本地时间&#xff0c;比如国…

Python开发之--前端 HTML基础

一&#xff1a;HTML介绍 HTML&#xff1a;超文本标记语言&#xff0c;标准通用标记语言下的一个应用。包括“头”部分&#xff08;英语&#xff1a;Head&#xff09;、和“主体”部分&#xff08;英语&#xff1a;Body&#xff09;&#xff0c;其中“头”部提供关于网页的信息&…

给与用户建立dblink的权限_网络安全 之 NTFS安全权限

NTFS安全权限一、NTFS权限概述1、通过设置NTFS权限&#xff0c;实现不同的用户访问不同的权限2、分配了正确的访问权限后&#xff0c;用户才能访问其资源3、设置权限防止资源被篡改、删除二、文件系统概述 文件系统即在外部存储设备上组织文件的方法常用的文件系统&#xff1a;…

TCP 连接中的TIME_WAIT

原文&#xff1a;http://blog.csdn.net/wangpengqi/article/details/17245349 这就有个细节&#xff0c;一次http请求&#xff0c;谁会先断开TCP连接&#xff1f;什么情况下客户端先断&#xff0c;什么情况下服务端先断&#xff1f; 百度后&#xff0c;找到原因&#xff0c;主要…

丁丁打折网卷能用吗_微信群控还能用吗?现在什么群控还能使用吗?

微信群控系统还能用吗&#xff1f;为什么现在微信群控系统越来越被限制了呢&#xff1f;其实&#xff0c;微信群控我想在生活中占据着很大的位置&#xff01;因为微信这么多的使用&#xff0c;现在微信使用人数都是几十亿了&#xff0c;所以很多人看重微信群控系统的市场&#…

错题整理

1.JAVA语言的下面几种数组复制方法中&#xff0c;哪个效率最高&#xff1f; A for循环逐一复制 B System.arraycopy C System.copyof D 使用clone方法 答案&#xff1a;B A、for循环的话&#xff0c;很灵活&#xff0c;但是代码不够简洁. for循环为什么慢&#xff0c;java中所…

xpath中两个冒号_爬虫学习(5)—XPath

之前我们写了一个简单的爬虫&#xff0c;在提取页面信息时我们使用正则表达式来匹配内容&#xff0c;但是正则表达式的书写比较繁琐&#xff0c;而且一旦错误就可能导致匹配失败。对于网页的节点来说&#xff0c;它可以定义id&#xff0c;class或其他的属性&#xff0c;而且节点…

Linux压缩与解压常用命令

欢迎和大家交流技术相关问题&#xff1a; 邮箱: jiangxinnju163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jiangxinnju tar的相关参数-c: 建立压缩档案-x&#xff1a;解压-t&…

mysql 预留一个自定义字段_MySQL 按指定字段自定义列表排序 | DevOps

问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例, 下同):SELECT * FROM MyTableWHERE id IN (1, 7, 3, 5)ORDER BY id ASC降序排列的 SQL 为:SELECT * FROM MyTableWHERE id IN (1, 7, 3, 5)ORDER BY id DESC有时以上排序并不能满足我们的需求. 例如, 我们…

canny算法的实现(android加载图片,数组写入文件换行)

Canny边缘检测首先要对图像进行高斯去噪&#xff0c;前面讲到了高斯去噪处理&#xff0c;这里从对图像灰度进行微分运算讲起吧。微分运算常用的方法是利用模板算子&#xff0c;把模板中心对应到图像的每一个像素位置&#xff0c;然后按照模板对应的公式对中心像素和它周围的像素…

python程序中想使用正则表达式_python中正则表达式的使用方法

本文主要关于python的正则表达式的符号与方法。findall: 找寻所有匹配&#xff0c;返回所有组合的列表search: 找寻第一个匹配并返回sub: 替换符合规律的内容&#xff0c;并返回替换后的内容.&#xff1a;匹配除了换行符以外的任意字符a xy123b re.findall(x...,a)print(b)# …

jQ实现JSON.stringify(obj)方法

jQstringify是使用jQuery实现的JSON.stringify(obj)方法代码如下&#xff1a;<script type"text/javascript" src"http://keleyi.com/keleyi/pmedia/jquery/jquery-1.10.2.min.js"></script>function jQstringify( obj ) {var arr [];$.each(…

解决问题的反馈机制_谈谈HBase中的Nonce机制

最近在读hbase源码关于rpc的一些实现细节&#xff0c;想正好趁此机会和大家分享一下我理解到的hbase关于Nonce机制的实现。Nonce机制的来源Nonce这个词由来已久&#xff0c;且在各个领域都会有相对应的名词解释。对于HBase来说&#xff0c;由于网络环境的复杂性&#xff0c;在客…

【VirtualBox】VirtualBox的桥接网络模式,为啥网络不稳定?

网桥模式访问外网非常慢&#xff0c;经常卡死&#xff0c;ping时断时续 七搞八搞&#xff0c;反复重启了几次 TMD 就好了&#xff0c;也不知道什么情况&#xff0c;VirtualBox还是不太好使啊。。。。。 网桥模式 设置 如下&#xff1a; 参考资料&#xff1a; http://blog.csdn…

白盒基本路径发测试实验报告_软件生命周期、白盒测试、黑盒测试

继上一讲&#xff1a;隅巳毕月&#xff1a;达摩克里斯之——排序与查找技术​zhuanlan.zhihu.com我们今天来讲一下软件周期与两种软件测试方法软件开发应遵循一个软件的生命周期&#xff0c;通常把软件产品从提出、实现、使用、维护到停止使用、退役的过程称为软件生命周期。软…

Windows7睡眠后自动唤醒

笔者的电脑&#xff08;Windows7 64位旗舰版&#xff09;睡眠后&#xff0c;隔段时间后会自动唤醒。经两项配置后&#xff0c;解决了该问题。 1 禁用唤醒定时器 控制面板里进入"电源选项""更改计划设置"界面&#xff0c;如下图所示 单击上图的"更改高…

bootstrap 两个轮播图冲突_为什么使用bootstrap在一个页面同时做两个轮播效果时,只有第一个有效??...

我们都知道使用bootstrap做轮播效果非常快&#xff0c;但是有时候一个页面会需要两个轮播&#xff1b;但这个时候再次使用bootstrap做轮播效果时就会失效&#xff1b;原因在于bootstrap的Carousel问题&#xff0c;只要修改一下id&#xff0c;就好了~~这是第一个轮播&#xff1a…

Ajax的用法

1 Ajax是什么 1.1 Asynchronous JavaScript and XML&#xff08;异步的javascript和xml&#xff09; 实质为&#xff1a;使用浏览器内置的一个对象&#xff08;XmlHttpRequest&#xff09;向服务器发送请求&#xff0c;服务器返回xml数据或文本数据给浏览器&#xff0c;然后在浏…

mysql降级_mysql8降级到mysql5的方法介绍

本篇文章给大家带来的内容是关于mysql8降级到mysql5的方法介绍&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。最近在研究liferay的使用。liferay可以连接mysql数据库。电脑中装的mysql的最新版本是mysql8。于是开始按照life…