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

P1868 饥饿的奶牛

根据题意可以知道是一个动态规划,看完数据范围之后可以知道是一个线性DP。

解决方法有点类似于背包问题,枚举背包的每一个空间。

如果把坐标轴上每个点都看成一个块儿,只需要按顺序求出前 i 个块儿的最大牧草堆数,f[i] 就是前i的最大牧草堆数。

假如区间x, y 是一个牧草堆块儿,只需取 f[y - 1] 与 f[x - 1] + y - x + 1,前者就相当于这个堆块儿不取的情况下的最大数,后者相当于取当前堆块儿的最大数,取最大值即可。

因为枚举的是坐标轴上的所有位置,所以每一个位置的最大值都可以从上一个位置更新过来,如果当前位置为某个堆块儿的右端点,只需要判断当前堆块儿取不取即可。 

#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl "\n"
//#define x first
//#define y second
//#define int long long
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<int, string> pis;
typedef struct{int x, y;
}aa;
const int mod = 1e9 + 7;
const int N = 3e6+ 10;
int dx[] = {-1, 0, 1, 0, -1, 1, 1, -1};
int dy[] = {0, 1, 0, -1, 1, 1, -1, -1};
int n, m;
int x, y;
vector<int> vec[N];
int f[N];inline void sovle()
{cin >> n;int r = 0;for(int i = 0; i < n; i ++) // 用vector可以使代码更加简洁,不过空间有点悬。这一题还是行的{int a, b;cin >> a >> b;vec[b].push_back(a - 1); // 记录当前右端点对应的左端点,减一有利于之后的计算。r = max(b, r); // 记录最大右端点}for(int i = 1; i <= r; i ++){f[i] = f[i - 1];for(auto j : vec[i]) //枚举以当前位置为右端点的所有堆块儿{f[i] = max(f[i], f[j] + i - j); // 通过状态转移方程来更新当前位置。}}cout << f[r] << endl; // 输出最大值
}signed main(void)
{IOS;int t = 1;
//	cin >> t;while(t --) sovle();return 0;
}

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

相关文章:

  • 【软考系统架构设计师】2021年系统架构师综合知识真题及解析
  • 如何在忘记手机密码或图案时重置 Android 手机?
  • LeetCode每日一题——2520. Count the Digits That Divide a Number
  • 论文阅读——DistilBERT
  • 202212 青少年等级考试机器人实操真题三级
  • token正确不报错,token失效后却出现报跨域错误
  • STM32中除零运算,为何程序不崩溃?
  • sprinbboot 2.7启动不生成日志文件
  • Kafka - 3.x 图解Broker总体工作流程
  • APP自动化测试 ---- Appium介绍及运行原理
  • 学习模板发布
  • Hive 视图和索引
  • EtherCAT主站SOEM-- 0 SOEM下载编译及文件功能介绍
  • 【Python机器学习】零基础掌握RFE特征选择
  • R语言的极值统计学、分位数回归、机器学习方法
  • 【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?
  • C++环境配置【学习笔记(一)】
  • Python数据结构——树
  • Simulink和GUI联合使用
  • 【0基础学Java第一课】-- 初始Java
  • osg3.4的插件及功能
  • 『力扣刷题本』:轮转数组
  • Java关于实例对象调用静态变量和静态方法问题
  • 【开源】基于SpringBoot的海南旅游景点推荐系统的设计和实现
  • 字符串中的assert和strcat
  • 方舟生存进化ARK个人服务器搭建教程保姆级
  • SpringBoot可以连接RabbitMQ集群吗 ?
  • 【机器学习】KNN算法-模型选择与调优
  • NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
  • redis集群中节点fail,noaddr