BZOJ 3594 Scoi2014 方波波麦田 树阵
标题效果:给定一个序列,能够选择k次每个部分的数量和在范围内+1,寻求操作后LIS最大值
我的做法是不是一个标准的解决方案。
。。5E为什么跑飞的复杂性。
。
。
首先,显而易见的结论是,我们选择k右端点都是n时才干保证最优
知道这个我们就能够DP了- -
令f[i][j]表示前i个数上升j次的最大LIS
那么有f[i][j]=max{f[k][l]|k<i,l<=j,a[k]+l<=a[i]+j}+1
看到三维偏序就能够用二维树状数组了- -
时间复杂度O(nklog(max(ai)+k)logk)
这复杂度跑的飞起真是醉了。。。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 10100
using namespace std;
int n,k,max_num,ans,a[M];
namespace BIT{
int c[6060][550];
void Update(int x,int y,int val)
{
int i,j;
for(i=x;i<=max_num+k;i+=i&-i)
for(j=y;j<=k+1;j+=j&-j)
c[i][j]=max(c[i][j],val);
}
int Get_Ans(int x,int y)
{
int i,j,re=0;
for(i=x;i;i-=i&-i)
for(j=y;j;j-=j&-j)
re=max(re,c[i][j]);
return re;
}
}
int main()
{
using namespace BIT;
int i,j;
for(cin>>n>>k,i=1;i<=n;i++)
{
scanf("%d",&a[i]);
max_num=max(max_num,a[i]);
}
for(i=1;i<=n;i++)
for(j=k;~j;j--)
{
int temp=Get_Ans(a[i]+j,j+1)+1;
ans=max(ans,temp);
Update(a[i]+j,j+1,temp);
}
cout<<ans<<endl;
return 0;
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
BZOJ 3594 Scoi2014 方波波麦田 树阵的更多相关文章
- bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化
3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 314 Solved: 132[Submit][Sta ...
- bzoj 3594: [Scoi2014]方伯伯的玉米田
3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec Memory Limit: 128 MB Submit: 1399 Solved: 627 [Submit][ ...
- BZOJ 3594 [Scoi2014]方伯伯的玉米田(二维树状数组)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3594 [题目大意] 给出一个数列,选出k个区间使得区间内数全部加1, 求k次操作之后最 ...
- bzoj 3594: [Scoi2014]方伯伯的玉米田【二维树状数组+dp】
设f[i][j]为前i棵玉米被拔高了j(因为是单调不降所以前面越高越好,所以每次拔一个前缀),转移是f[i][j]=f[k][l]+1,l<=j,a[k]+l<=a[i]+j,然后用二维树 ...
- BZOJ 3594: [Scoi2014]方伯伯的玉米田 (二维树状数组优化DP)
分析 首先每次增加的区间一定是[i,n][i,n][i,n]的形式.因为如果选择[i,j](j<n)[i,j](j<n)[i,j](j<n)肯定不如把后面的全部一起加111更优. 那 ...
- bzoj 3594 [Scoi2014]方伯伯的玉米田(DP+二维BIT)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3594 [题意] 给定一个n个数的序列,有K次将一个区间内的数加1的机会,问最长不下降子 ...
- bzoj 3597: [Scoi2014]方伯伯运椰子 0/1分数规划
3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 144 Solved: 78[Submit][Status ...
- BZOJ 3595: [Scoi2014]方伯伯的Oj SBT+可持久化Treap
3595: [Scoi2014]方伯伯的Oj Time Limit: 6 Sec Memory Limit: 256 MBSubmit: 102 Solved: 54[Submit][Status ...
- bzoj 3597: [Scoi2014]方伯伯运椰子 [01分数规划 消圈定理 spfa负环]
3597: [Scoi2014]方伯伯运椰子 题意: from mhy12345 给你一个满流网络,对于每一条边,压缩容量1 需要费用ai,扩展容量1 需要bi, 当前容量上限ci,每单位通过该边花费 ...
随机推荐
- java数组10大技巧
0. 声明一个数组(Declare an array) String[] aArray = new String[5]; String[] bArray = {"a"," ...
- Qt元类型(MetaType)注册门(使用qRegisterMetaType注册错误等级)
昨天调试项目时,突然发现如下消息: QObject::connect: Cannot queue arguments of type 'ERROR_LEVEL' (Make sure 'ERROR_L ...
- ios开发事件处理之 :二:事件的产生与传递
1.事件是怎么样产生与传递的? 当发生一个触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中.(队列是先进先出,而栈是先进后出) UIApplication会从事件队列中 ...
- html5-8 如何控制html5中的视频标签和音频标签
html5-8 如何控制html5中的视频标签和音频标签 一.总结 一句话总结:找到视频或者音频的element对象,然后查手册看对应的方法或者属性就可以,里面有控制的. 1.如何控制html5中的视 ...
- Powerful Bash-style command line editing for cmd.exe
https://mridgers.github.io/clink/ Clink Powerful Bash-style command line editing for cmd.exe Downloa ...
- 【u120】红牌
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤 ...
- [Ramda] Get a List of Unique Values From Nested Arrays with Ramda (flatMap --> Chain)
In this lesson, we'll grab arrays of values from other arrays, resulting in a nested array. From the ...
- #781 – 多个变换执行的顺序问题(Transform Order Matters)
原文:#781 – 多个变换执行的顺序问题(Transform Order Matters) 原文地址: https://wpf.2000things.com/2013/03/21/781-tr ...
- Expression Blend 的点滴(3)--Templating的妙用,制作自己的ScrollBar控件
原文:Expression Blend 的点滴(3)--Templating的妙用,制作自己的ScrollBar控件 在Blend中,有一个功能,Make into control---通过它可以方便 ...
- 【Python 安装】安装第三方库时 PermissionError: [WinError 5] Access is denied
对于 windows 用户,在开始菜单中输入 cmd,右键以 run as administrator(以管理员身份运行). Python - PIP install trouble shooting ...