小sun的假期(贪心+逻辑思维)
这道题一看就是区间排序,但是怎么把没有安排的区间记录这就有点困难了;
区间排序按照这样排序:
bool cmp(Node a,Node b){if(a.l==b.l)return a.r<b.r;//如果左区间相等,就按照右区间从小到大排序else return a.l<b.l;//左区间不相等,那么久按照左边,从小到大排序;
}
举个例子,如果我这个区间经过排序成了这样:
我初始化,l和r分别为1和0;我用for(0:n-1)那么如果r<L1那么l就应该先记录max(ans,L1-l),之后再把l指向r+1,然后再把r指向R1;如果r>L2那么就把r指向R2去,同理这样一直指到R4,然后由于r<L5了,所以就把l指向r+1的地方,最后r指向R5;
所以最后要求一下n-r的值;为什么l要初始化为1呢?因为如果刚开始区间是1开头的,那么L1-l就是0;所以这样就可以把前面的抵消掉;
这样就可以贪心出来了,主要是这里的逻辑很不好理清;
确实巧妙!!!
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
pair<int,int> p[100050];
int main(){int n,m;scanf("%d %d",&n,&m);for(int i=0;i<m;i++){scanf("%d %d",&p[i].first,&p[i].second);}sort(p,p+m);//利用pair的默认排序int L=1;int ans=0;int r=0;for(int i=0;i<m;i++){if(r<p[i].first){//ans=max(ans,p[i].first-L);L=r+1;//先移动左区间r=p[i].second;//再移动右区间}else if(r>p[i].first){r=max(r,p[i].second);}}printf("%d\n",max(ans,n-r));//因为最后r指向的是最后的区间,所以这里需要比较一下n-r和ans 的大小return 0;
}
小sun的假期(贪心+逻辑思维)相关推荐
- 牛客小白月赛17 A 小sun的假期
题意已经很明显了,但是我首先是用暴力方法先把数字离散,再用离散后的值当下标来存这个数字出现了几次 1 #include<stdio.h> 2 #include<string.h> ...
- 洛谷P2085ssl1411OJ1370-最小函数值【堆,贪心】
前言 有一个东西卡了我一会 折叠N*或N+ 正整数集 (由全体正整数组成的集合) N*:={1,2,3,-,n,-} 题目 洛谷P2085 OJ1370 给出n个ai,bi,ci.定义一个函数 fi( ...
- 牛客小白月赛17-记录(附题解)
正题 比赛链接:https://ac.nowcoder.com/acm/contest/1085#question 成绩 总结 除了那道积分数学其他还好 后面没有FFF题的题解 T1:小sun的假期T ...
- 2018SCUACM Training1 贪心
点击打开 2018SCUACM Training1 贪心 A - LiAlH4的字符串 追求完美的LiAlH4定义了一个叫字符串完美度的东西.字符串的完美度等于它里面所有字母的完美度之和.每个字母的完 ...
- 【控制】贪心算法(GA,Greedy Algorithm)及 Matlab 实现
文章目录 算法思路 应用实例 仿真 Ref. 算法思路 贪心算法一般按如下步骤进行: 建立数学模型来描述问题. 把求解的问题分成若干个子问题. 对每个子问题求解,得到子问题的局部最优解. 把子问题的解 ...
- uva 1614奇怪的股市(归纳法证明,贪心)
uva 1614奇怪的股市(归纳法证明,贪心) 输入一个长度为n的序列a,满足\(1\le a_i\le i\),要求确定每个数的正负号,使得所有数的总和为0.例如a={1, 2, 3, 4},则4个 ...
- 2020ICPC(小米邀请赛2) - Knapsack(贪心+dp)
题目链接:点击查看 题目大意:给出 n 个物品,每个物品都有体积和价值,现在问容量为 m 的背包最多可以装下多少价值的物品 题目分析:本题正解应该是斜率优化dp,然鹅看了大佬们的博客讲解后,感觉不是自 ...
- 【UVA - 10037】Bridge(过河问题,经典贪心)
题干: 题目大意: 有N个人要过桥,每个人速度不同,只有一个手电筒,每次最多只能过去两个人,问所有人最短的过桥时间为多少 解题报告: 首先让最快的两个人最后过,然后我们分奇偶考虑,分别处理到剩下三个人 ...
- c语言2048项目报告,c语言----项目_小游戏2048
2048 小游戏 主要是针对逻辑思维的一个训练. 主要学习方面:1.随机数产生的概率.2.行与列在进行移动的时候几种情况.3.messagebox的使用 #include #include #incl ...
最新文章
- vue 集成富文本tinymce
- CLR via C#学习笔记-第十三章-定义接口、继承接口
- liunx常用命令笔记
- oracle oci.dll的作用,ASP.NET bin目录中的Oracle oci.dll无法删除/不起作用
- DNS服务(4)Slave DNS及高级特性
- 一步一步写算法(之 A*算法)
- DbVisualizer 12.0.* Ubuntu
- 安卓robot自动化测试包经常用的方法
- linux rvm,RVM 实用指南
- txt文件转为excel文件
- AutoCAD.net 自定义窗体及面板与CAD交互时的焦点切换问题(C#)
- 知网论文CAJ格式免费转换成PDF,你学会了吗
- iOS——结构体指针
- 雅虎新频道Buzz截图,Digg竞争者?
- 字谜游戏(b)C语言
- 纳米数据世界杯足球基础数据,接口文档,接口api调试,数据接口演示
- 关于大数据相关的问答汇总,每天持续更新中哦~
- 如果不想当程序员,学编程有什么用?答案显而易见!
- 服务器ghost系统蓝屏,完美解决ghost WIN7安装后启动蓝屏问题
- php5.6版本帝国cms后台内容不显示,帝国cms后台编辑器显示不完整无法操作的处理方法...