Cut the Sequence
题目
解析
单调队列优化DP好题
万题先拿部分分,我们先考虑裸DP,得到动态转移方程:
dp[i]=min(dp[j]+max(a[k])(j<k<=i))(1<=j<=i)
显然这个O(N2)的DP必T
考虑单调队列优化最大值,AC
1,前缀和优化,O(1)区间求和
2,开longlong
3,有值>m时输出-1
其实听说单调队列优化可以被卡成O(n2),但是A了就行
code:
#include<cstdio>
#include<deque>
#define ll long long
using namespace std;
ll min(ll x,ll y){
return (x<y)?x:y;}
bool idigit(char x){
return (x<'0'|x>'9')?0:1;}
inline ll read()
{
ll num=0,f=1;
char c=0;
while(!idigit(c=getchar())){
if