题意:N个高度为hi的果子,摘果子的个数是从位置1开始从左到右的严格递增子序列的个数。有M次操作,每次操作对初始序列修改位置p的果子高度为q。每次操作后输出修改后能摘到得数目。

分析:将序列分为左、右两部分,每次修改之后的结果是p左部到p递增的子序列长度,加上右部第一个高度大于max(q,p位置之前最大的高度)位置开始的递增子序列长度。

左部的查询可以线性递推预处理得到,右部的查询需借助ST表预处理出区间最大值,并二分求得位置。

#include<bits/stdc++.h>
using namespace std;
const int MAXN = ;
int N, m, tot;
int h[];
int st[MAXN][-__builtin_clz(MAXN)];
int dp[];
int sel[], pre[], c[]; void init_st() {
int l = - __builtin_clz(N);
for(int i=;i<N;++i) st[i][] = h[i];
for(int j=;j<l;++j)
for (int i=;i<+N-(<<j);++i)
st[i][j+] = max(st[i][j], st[i+(<<j)][j]);
} int rmq(int l, int r) {
int k = - __builtin_clz(r - l + );
return max(st[l][k], st[r-(<<k)+][k]);
} int getbignext(int pos, int val) {
int l = pos + , r = N, mid;
while (r > l) {
mid = (l + r) / ;
if (rmq(pos+, mid) <= val) l = mid + ;
else r = mid;
}
return l;
}
void initdp() {
int cnt = ;
dp[N] = ;
for (int i = N - ; i >= ; i--) {
int pos = getbignext(i, h[i]);
dp[i] = dp[pos] + ;
}
sel[] = ; pre[] = -; c[] = ;
int last = , lasth = h[];
for (int i = ; i < N; i++) {
pre[i] = last;
if (h[i] > lasth){
sel[i] = ;
last = i;
lasth = h[i];
cnt++;
} else sel[i] = ;
c[i] = cnt;
}
tot = cnt;
} int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int T;scanf("%d",&T);
while(T--){
int Q;
scanf("%d%d",&N,&Q);
for(int i=;i<N;++i) scanf("%d",&h[i]);
init_st();
initdp();
int p,q;
while(Q--){
scanf("%d%d",&p,&q);
p--;
int res=;
if(sel[p]){ //这个位置保持递增
if(p==){
res = dp[getbignext(p,q)]+;
}
else{
if(q>h[pre[p]]){
res += c[p];
res += dp[getbignext(p,q)];
}
else{
res += c[pre[p]];
res += dp[getbignext(p,h[pre[p]])];
}
}
}
else{
if(q<=h[pre[p]]){
res= tot;
}
else{
res += c[pre[p]]+;
res += dp[getbignext(p,q)];
}
}
printf("%d\n",res);
}
}
return ;
}

HDU - 6406 Taotao Picks Apples (RMQ+dp+二分)的更多相关文章

  1. [乱搞]hdu 6406 Taotao picks apples 笛卡尔树+倍增

    题目链接 Problem Description There is an apple tree in front of Taotao's house. When autumn comes, n app ...

  2. hdu 6406 Taotao Picks Apples 线段树 单点更新

    Taotao Picks Apples Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Ot ...

  3. hdu 6406 Taotao Picks Apples (线段树)

    Problem Description There is an apple tree in front of Taotao's house. When autumn comes, n apples o ...

  4. hdu 6406 Taotao Picks Apples (2018 Multi-University Training Contest 8 1010)(二分,前缀和)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406 思路: 暴力,预处理三个前缀和:[1,n]桃子会被摘掉,1到当前点的最大值,1到当前点被摘掉的桃子的 ...

  5. HDU 6406 Taotao Picks Apples & FJUT3592 做完其他题后才能做的题(线段树)题解

    题意(FJUT翻译HDU): 钱陶陶家门前有一棵苹果树. 秋天来了,树上的n个苹果成熟了,淘淘会去采摘这些苹果. 到园子里摘苹果时,淘淘将这些苹果从第一个苹果扫到最后一个. 如果当前的苹果是第一个苹果 ...

  6. HDU 6406 Taotao Picks Apples 线段树维护

    题意:给个T,T组数据: 每组给个n,m:n个数,m个操作: (对序列的操作是,一开始假设你手上东西是-INF,到i=1时拿起1,之后遍历,遇到比手头上的数量大的数时替换(拿到手的算拿走),问最后拿走 ...

  7. 【杂题总汇】HDU-6406 Taotao Picks Apples

    [HDU 6406]Taotao Picks Apples 多校赛的时候多写了一行代码就WA了……找了正解对拍,在比赛结束后17分钟AC了

  8. hdu6406 Taotao Picks Apples(线段树)

    Taotao Picks Apples 题目传送门 解题思路 建立一颗线段树,维护当前区间内的最大值maxx和可摘取的苹果数num.最大值很容易维护,主要是可摘取的苹果数怎么合并.合并左右孩子时,左孩 ...

  9. 【hdu 6406】Taotao Picks Apples

    [链接] 我是链接,点我呀:) [题意] 题意相当于问你改变一个位置之后. 从左往右扫描最大值.这个最大值会改变多少次. [题解] 假设我们改变的是i这个位置,下面说的a[i]都是改成q之后的a[i] ...

随机推荐

  1. input取值

    ----------------------------1------------------------------ <span class="lv-a-right" id ...

  2. google pr值查询接口

    PR(全称PageRank)是Google衡量一个网站的重要标准之一,从而影响Google搜索结果排名.Google官方提供了查询PR的API,如本站PR值:http://toolbarqueries ...

  3. Photoshop脚本之eps转换成jpg

    function saveEPS( doc, saveFile ) { var saveOptions = new JPEGSaveOptions( ); saveOptions.encoding = ...

  4. Hadoop1的安装

    目前hadoop1的稳定版本是1.2.1,我们以版本1.2.1为例详细的介绍hadoop1的安装,此过程包括OS安装与配置,JDK的安装,用户和组的配置,这些过程在hadoop2也有可能用到. Had ...

  5. Java逍遥游记读书笔记<一>

    前言 必须先来一句,这是入门级别,高手勿喷~ 写Android的时候总有一些语句不是很理解,其实大部分是Java的内容,所以想系统的学下Java. 这本书——<Java逍遥游记>是在图书馆 ...

  6. ubuntu16.04主题美化和软件推荐(转载)

    从这里转载!转载!转载! http://blog.csdn.net/terence1212/article/details/52270210

  7. layoutSubviews何时调用的问题

    本文转载至 http://www.cnblogs.com/pengyingh/articles/2417211.html 今天跟旺才兄学习了一下UIView的setNeedsDisplay和setNe ...

  8. html5 canvas 详细使用教程 转

     分类: html5(9)  原文地址:http://www.cnblogs.com/tim-li/archive/2012/08/06/2580252.html 原作很强悍 导航 前言 基本知识 绘 ...

  9. Django - 环境搭建、url、视图、模板、标签、过滤器

    (一).简介 简介就不多说了,网上的内容一大堆.总结来说,django是走大而全的路线,写项目超级快,几乎什么都为你考虑到了,你就乖乖照着它的格式来写就行了. 这里来一些基本认知: web应用框架(w ...

  10. ural1297. Palindrome

    1297. Palindrome Time limit: 1.0 secondMemory limit: 64 MB The “U.S. Robots” HQ has just received a ...