[SCOI 2014] 方伯伯的玉米田
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=3594
[算法]
首先有一个结论 : 每次选择的区间右端点一定是n
根据这个结论 , 设fi,j表示前i株玉米拔高j次的最长不下降子序列长度
则fi,j = max{fp,q + 1} (q <= j , ap + q <= ai + j)
二维树状数组优化即可
时间复杂度 : O(NKlogK ^ 2)
[代码]
#include<bits/stdc++.h>
using namespace std;
#define N 10010
#define K 510
#define M 5510
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull; #define rint register int int n , k , m;
int a[N];
int c[K][M]; template <typename T> inline void chkmin(T &x , T y) { x = min(x , y); }
template <typename T> inline void chkmax(T &x , T y) { x = max(x , y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
} inline int lowbit(int x)
{
return x & (-x);
}
inline void modify(int x , int y , int value)
{
for (rint i = x; i <= k + ; i += lowbit(i))
{
for (rint j = y; j <= m; j += lowbit(j))
{
chkmax(c[i][j] , value);
}
}
}
inline int query(int x , int y)
{
int ret = ;
for (rint i = x; i; i -= lowbit(i))
{
for (rint j = y; j; j -= lowbit(j))
{
chkmax(ret , c[i][j]);
}
}
return ret;
} int main()
{ // f(i , j) = max{ f(p , q) + 1 } ( q <= j , ap + q <= ai + j }
read(n); read(k);
int mx = ;
for (rint i = ; i <= n; i++)
{
read(a[i]);
chkmax(mx , a[i]);
}
m = k + mx + ;
int ans = ;
for (rint i = ; i <= n; i++)
{
for (rint j = k; ~j; j--)
{
int tmp = query(j + , a[i] + j) + ;
chkmax(ans , tmp);
modify(j + , a[i] + j , tmp);
}
}
printf("%d\n" , ans); return ;
}
[SCOI 2014] 方伯伯的玉米田的更多相关文章
- 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][ ...
- 「SCOI2014」方伯伯的玉米田 解题报告
#2211. 「SCOI2014」方伯伯的玉米田 发现是取一个最长不下降子序列 我们一定可以把一个区间加的右端点放在取出的子序列的最右边,然后就可以dp了 \(dp_{i,j}\)代表前\(i\)个玉 ...
- SCOI2014 bzoj3594 方伯伯的玉米田(二维树状数组+dp)
3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1971 Solved: 961[Submit][St ...
- 【ybt金牌导航1-2-5】【luogu P3287】优美玉米 / 方伯伯的玉米田
优美玉米 / 方伯伯的玉米田 题目链接:ybt金牌导航1-2-5 / luogu P3287 题目大意 有一个数组,你可以每次给一个区间里面的值加一,要你使得最后剩下的最长单调不下降子序列最长. 思路 ...
- 方伯伯的玉米田[SCOI2014]
题目描述 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得 ...
- [SCOI2014]方伯伯的玉米田
Description 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美. 这排玉米一共有N株,它们的高度参差不齐. 方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感 ...
- BZOJ3594: [Scoi2014]方伯伯的玉米田【二维树状数组优化DP】
Description 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美. 这排玉米一共有N株,它们的高度参差不齐. 方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感 ...
- [SCOI2014]方伯伯的玉米田 题解(树状数组优化dp)
Description 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美. 这排玉米一共有N株,它们的高度参差不齐. 方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感 ...
随机推荐
- libevent和libev的区别对比
参考了这篇文章: http://www.cnblogs.com/Lifehacker/p/whats_the_difference_between_libevent_and_libev_chinese ...
- react 调用 function 的写法 及 解决 react onClick 方法自动执行
1.react 调用方法的写法 (1)方式一 onClick={this.getFetchData.bind(this,item.id)} (2)方式二 getFetchData(e){ this.s ...
- Kick the ball!(dfs)湖南省赛第十届
Problem K: Kick the ball! Time Limit: 1 Sec Memory Limit: 128 MB Special Judge Submit: 109 Solved ...
- Solaris服务管理
远程登录协议 telnet \ssh 等.当然我们可以查看谁登录过我的系统,以及可以利用ftp记录日志. 一.SMF: 服务管理工具 优点:自动恢复意外终止的服务,支持服务的依赖关系,一个服务可以有多 ...
- Linux 中如何查询和卸载已安装的软件
Linux 中如何查询和卸载已安装的软件 Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序” 来实现.与其相 ...
- 2016最新手机号码正则、身份证JS正则表达式
js最新手机号码.身份证正则表达式 身份证正则: //身份证正则表达式(15位) isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1] ...
- ANDROID STUDIO 2.2.3 DOWNLOAD FROM DL.GOOGLE.COM
立即开始使用 Android Studio Android Studio 包含用于构建 Android 应用所需的所有工具. 下载 ANDROID STUDIO2.2.3 FOR WINDOWS (1 ...
- 从头认识java-15.1 填充容器(2)-利用Collection的addAll方式
接着上一章节,我们继续介绍填充容器. 这一章节我们结束还有一种填充容器的方式:addAll 样例: package com.ray.ch15; import java.util.ArrayList; ...
- 【重磅干货】看了此文,Oracle SQL优化文章不必再看!
目录 SQL优化的本质 SQL优化Road Map 2.1 制定SQL优化目标 2.2 检查执行计划 2.3 检查统计信息 2.4 检查高效访问结构 2.5 检查影响优化器的参数 2.6 SQL语句编 ...
- HDU 6166 Senior Pan 二进制分组 + 迪杰斯特拉算法
Senior Pan Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Probl ...