多校1010 Taotao Picks Apples
》》点击进入原题《《
思路:题解很有意思,适合线段树进阶
#include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<algorithm> using namespace std;#define lson l,m,o<<1 #define rson m+1,r,o<<1|1const int maxn = 1e5 + 10; int a[maxn], d1[maxn], d2[maxn]; int tree[maxn << 2], vis[maxn << 2]; int ans, cur;void build(int l, int r, int o){if (l == r){tree[o] = a[l];vis[o] = l;return;}int m = (l + r) >> 1;build(lson);build(rson);tree[o] = max(tree[o << 1], tree[o << 1 | 1]);if (tree[o << 1] >= tree[o << 1 | 1])vis[o] = vis[o << 1];else vis[o] = vis[o << 1 | 1];} void query(int l, int r, int o, int ql, int qr, int k){if (l == r){if (tree[o]>k)cur = min(cur, l);return;}int m = (l + r) >> 1;if (l >= ql&&r <= qr){if (tree[o << 1] > k)query(lson, ql, qr, k);else if (tree[o << 1 | 1] > k)query(rson, ql, qr, k);return;}if (ql <= m)query(lson, ql, qr, k);if (qr > m)query(rson, ql, qr, k); } void query1(int l, int r, int o, int ql, int qr){if (l >= ql&&r <= qr){if (tree[o] > a[cur])cur = vis[o];return;}int m = (l + r) >> 1;if (ql <= m)query1(lson, ql, qr);if (qr > m)query1(rson, ql, qr); } int main(){ios::sync_with_stdio(false);int t; cin >> t;while (t--){int n, m, p, q, Max = 0;cin >> n >> m;for (int i = 1; i <= n; i++){cin >> a[i];if (a[i] > Max)d1[i] = d1[i - 1] + 1, Max = a[i];else d1[i] = d1[i - 1];}build(1, n, 1);for (int i = n; i; i--){cur = n + 1;query(1, n, 1, i, n, a[i]);if (cur > n)cur = 0;d2[i] = d2[cur] + 1;}while (m--){cin >> p >> q;ans = cur = 0;if (p != 1){query1(1, n, 1, 1, p - 1);}ans += d1[cur];if (q > a[cur])ans++;else q = a[cur];cur = n + 1;if (p != n)query(1, n, 1, p + 1, n, q);if (cur <= n)ans += d2[cur];cout << ans << endl;}} }
转载于:https://www.cnblogs.com/zengguoqiang/p/9506598.html
多校1010 Taotao Picks Apples相关推荐
- 2018 Multi-University Training Contest 8 1010 Taotao Picks Apples【二分】
http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1010&cid=809 题意:求上升序列(能上升则上升无需最长),有修改 ...
- 【杂题总汇】HDU-6406 Taotao Picks Apples
[HDU 6406]Taotao Picks Apples 多校赛的时候多写了一行代码就WA了--找了正解对拍,在比赛结束后17分钟AC了? ◇ 题目 +传送门+ <手写翻译> 有n个苹果 ...
- Taotao Picks Apples HDU - 6406
K - Taotao Picks Apples 题目链接:HDU - 6406 题意:树上有一排苹果,每个苹果又同的高度,taotao要摘苹果,而且必须从第一个苹果开始摘,然后没遇到一个高度比之前摘得 ...
- HDU 6406 Taotao Picks Apples(前缀和+二分)
HDU 6406 Taotao Picks Apples(前缀和+二分) Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 131072/131 ...
- hdu - 6406 Taotao Picks Apples(离线+离散+技巧)
题目链接:Taotao Picks Apples 题目大意:有n个数,m个操作,每个操作x,q,将x位的数字改为q,输出改完数后数组的递增序列有多长(只能从第一个数开始找,并且必须依次找更大的数). ...
- 多校 hdu 6406 Taotao Picks Apples(线段树)
设d1[ i ]为从a1开始到 ai 的最长递增子序列长度,设d2[ i ]为从ai开始到an的最长递增子序列长度,假设要把ap改为q,可以把序列分为1到p-1和p+1到n两段,可以用线段树找到1到p ...
- hdu 6406 Taotao Picks Apples 线段树
hdu 6406 多校八第十题,设d1[ i ]为从a1开始到 ai 的最长递增子序列长度,设d2[ i ]为从ai开始到an的最长递增子序列长度,假设要把ap改为q,可以把序列分为1到p-1和p+1 ...
- 【hdu 6406】Taotao Picks Apples
[链接] 我是链接,点我呀:) [题意] 题意相当于问你改变一个位置之后. 从左往右扫描最大值.这个最大值会改变多少次. [题解] 假设我们改变的是i这个位置,下面说的a[i]都是改成q之后的a[i] ...
- HDU - 6406 Taotao Picks Apples(线段树区间合并)
题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a,再给出 m 次询问,每次询问假设如果设置 a[ pos ] = val 的话,那么此时序列中的最长上升子序列是多少,此时的上升子序列指的是 ...
最新文章
- asyncdata 获取参数_载入页面初始数据(asyncData)《 Nuxt.js:异步数据 》
- 敏捷开发的角色和职责阐述
- Deepin、Debian、Ubuntu恢复误删除的/var/lib/dpkg
- python unit test 访问开发代码_python unittest 源码分析
- Java写入磁盘阵列_月光软件站 - 编程文档 - Java - 利用Linux创建磁盘阵列
- git仓库的基本用法
- 【Pytorch神经网络理论篇】 16 过拟合问题的优化技巧(三):批量归一化
- Can’t Activate Reporting Services Service in SharePoint
- 【仿59store校园o2o系统 v6.8】夜猫店+校园超市+学生街+微信公众号绑定+校园跑腿插件
- HTML5文档查看器PrizmDoc发布v13.0,新增文档比较功能
- 金融销售关键在于客户感受
- 你可以对计算机进行设置 这样用户,win10登陆界面设置 win10登陆界面壁纸
- .NET in China - What's New in .NET
- 文件正在使用,操作无法完成,因为文件已在...中打开
- 计算机科学 院士 高校,快报!第5轮学科评估计算机科学与技术评委会名单,看有谁上榜了...
- 汇编——Masm使用及程序结构
- fluent里常见基础问题(转)
- [最小割最大流 || 最短路] roadblock Dinic SPFA + SLE
- Python数据可视化 Pyecharts 制作 Sunburst 旭日图
- h5中performance.timing轻松获取网页各个数据 如dom加载时间 渲染时长 加载完触发时间...