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

洛谷 P1868 饥饿的奶牛

原题

题目描述

有一条奶牛冲出了围栏,来到了一处圣地(对于奶牛来说),上面用牛语写着一段文字。

现用汉语翻译为:

有 N 个区间,每个区间x,y 表示提供的x∼y 共y−x+1 堆优质牧草。你可以选择任意区间但不能有重复的部分。

对于奶牛来说,自然是吃的越多越好,然而奶牛智商有限,现在请你帮助他。

输入格式

第一行一个整数 N。

接下来 N 行,每行两个数x,y,描述一个区间。

输出格式

输出最多能吃到的牧草堆数。

输入输出样例

输入 #1

3
1 3
7 8
3 4

输出 #1

5

说明/提示

解题思路

动态加二分。

构造一个结构体存储元素,然后按照r从小到大排序。

dp[i]=max(dp[i-1],dp[lower_bound(1,i,cow[i].l)]+cow[i].val)

lower_bound(二分查找) 最后一个没有和cow[i].l相交的元素,寻找到后取最大的那个区间。

AC代码

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1.5e5+5; 
struct Cow{int l,r;int val;bool operator <(const Cow b){return r<b.r;}
}cow[N];
int n,dp[N];
int lower_bound(int l,int r,int k){int ans=0;while(l<r){int mid=(l+r)>>1;if(cow[mid].r<k)  {ans=mid;l=mid+1;}else r=mid;}return ans;
}
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d %d",&cow[i].l,&cow[i].r);cow[i].val=cow[i].r-cow[i].l+1; }sort(cow+1,cow+n+1);for(int i=1;i<=n;i++){dp[i]=max(dp[i-1],dp[lower_bound(1,i,cow[i].l)]+cow[i].val);}printf("%d",dp[n]);return 0;
} 

http://www.lryc.cn/news/412917.html

相关文章:

  • Arco Design 之Table表格
  • Python机器学习 模型
  • 基于 STM32 的 NAS私有云盘搭建:集成LwIP 协议、HTTP/HTTPS、WEB前端技术栈(代码示例)
  • 蓝屏?死机?爆CPU?多开卡顿?你有关心过你的硬盘吗?
  • Flutter开发报错error: unable to unlink old ‘pubspec.yaml‘: Invalid argument
  • 零基础进程最详解:进程状态、僵尸进程、孤儿进程、阻塞态、挂起态、进程切换、进程常用命令、进程创建、队列优先级
  • Redis的分布式锁
  • C++笔记---类和对象
  • 全国区块链职业技能大赛样题第9套后端源码
  • 3个功能强大的PDF转换工具,免费试用
  • 表单修改数字输入框保留小数点
  • [VS Code扩展]写一个代码片段管理插件(一):介绍与界面搭建
  • vxe grid slots 用法
  • 【网络】基于UDP协议的聊天室(第二篇)
  • 【SpringBoot3】场景整合(实战)
  • 【全网最全最详细】MYSQL 面试题大全(上)
  • 【C语言】程序环境,预处理,编译,汇编,链接详细介绍,其中预处理阶段重点讲解
  • 人生低谷来撸C#--021 多线程
  • 【优秀python django系统案例】基于python的医院挂号管理系统,角色包括医生、患者、管理员三种
  • 硬盘数据丢失不再怕,四大恢复工具帮你轻松逆转局面!
  • 自定义封装日历组件
  • 【大模型】【面试】独家总结表格
  • C# 6.定时器 timer
  • 有了 createSlice,还有必要使用 createReducer 吗?什么情况需要 createReducer 呢?
  • 怎么搭建AI带货直播间生成虚拟主播?
  • 设计模式的原则
  • RocketMQ与RabbitMQ的区别:技术选型指南
  • 小白也能懂:SQL注入攻击基础与防护指南
  • 【Hot100】LeetCode—76. 最小覆盖子串
  • 删除排序链表中的重复元素 II(LeetCode)