【NOIP2017提高A组模拟9.7】陶陶摘苹果
Description

Input

Output

Sample Input
10 5 110 3
100 200 150 140 129 134 167 198 200 111
0 30
20 40
90 100
100 110
50 60
Sample Output
7
Data Constraint

题解
考试的时候已经打出了正解,但-1放错位置,爆零
容易想到DP
设f[i][j]为第i个凳子,选了j个的最大摘苹果数
用前缀和维护区间采摘的苹果数
把凳子按l排序
转移:f[i][j]=max(f[k][j-1]+(max(a[i].l-1,a[k].r)~a[i].r)) (a[k].r<a[i].r)
max(a[l].l-1,a[k].r)是取选取苹果区间的左端点,a[i].r就是右端点
时间复杂度O(k*m^2)
code
#include<cstdio>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#define R register
using namespace std;
const int N=1e6+10;
struct node{
int l,r;
}a[N];
int sum[N],n

这篇博客主要介绍了NOIP2017提高A组模拟赛中的一道题目——陶陶摘苹果。文章详细阐述了问题描述、输入输出格式,并提供了样例输入输出。作者提到在考试中因误操作导致了错误答案,但指出可以使用动态规划来解决此问题,通过前缀和维护区间苹果数,并对凳子按位置进行排序。转移状态定义为f[i][j]表示第i个凳子选j个的最大苹果数,时间复杂度为O(k*m^2)。
最低0.47元/天 解锁文章
688

被折叠的 条评论
为什么被折叠?



