Jzoj5246 Trip

微信好友恢复全攻略(2025年3月更新) 适用于仅被拉黑场景(成功率100%)针对7天内误删场景(成功率78%) 阅读详情

温馨提示:本文附带bgm border="0" width="1" height="1" src="//music.163.com/outchain/player?type=2&id=475565584&auto=1&height=32">

  多年之后,worldwideD厌倦竞争,隐居山林。
  他的家乡开始发展起了旅游业,在一条很长的主干道上,有N个旅游景点,按顺序编号为1到N。根据游客们网上的评分,第i个景点有一个评估值a[i],为了区分开不同的景点,评估值是两两不同的。
  今天有M组游客前来旅游,第i组游客选择遍历景点Li到景点Ri这一段路。他们搜到Li到Ri的所有评估值,如果对于景点j(Li≤j≤Ri),不存在景点x(Li≤x<j)满足a[x]>a[j]或不存在景点y(j<y≤Ri)满足a[y]>a[j],那么他们会进入景点j
现在worldwideD想知道,每组游客会去多少个景点。


如果不想用在线的方法,我们考虑将这个询问拆成两个部分
 1.区间从小到大升序
 2.区间从大到小降序
最后答案要-1(因为最优美那个景点肯定要算两次)
考虑第一种情况(第二种将所有询问对称再将序列翻转按照第一问做即可)
对于一个询问,我们要求的是一个l开始的上升的子序列使得这个序列字典序最小的情况下让这个子序列尽可能长(注意不是LIS!对于[1 5 2 3 4]的答案是2而不是4)
那我们可以采用倍增的思想(这题正解是dsu+笛卡尔树,并不会)
我们考虑对每一个位置i求出一个f[i]表示满足a[i]<a[f[i]]且最小的位置
没错,是不是和建树有点像?
我们对这个东西直接做和倍增一样的预处理
每次对于询问[l,r]我们可以从l开始跳,一直到f[l][j]大于了r,我们就让l跳到f[l][j-1]直到j为0为止,沿途统计答案
什么?怎么求f数组?
可以用一个map或者堆(雾)
当然最好的肯定是用一个单调栈,每次都将堆顶的元素x与当前的i比较,如果a[x]<a[i]就弹掉x让后连一条边直到a[x]>a[i],将i推入栈里继续
当然这个方法可以应用于在线,只要同时维护一正一反两个f数组就可以了
(code写的有点不好,常数大而且和上面讲解有些出入,代码实际上是从右往左跳的)

#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stack>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1000010
using namespace std;
int n,m,f[20][N],s[N],w[N][2],A[N];
stack<int> q;
inline int rd(int& x){
    char c=getchar(),g=0; x=0;
    for(;c<'0' || c>'9';c=getchar()) if(c=='-') g=1;
    for(;c>='0' && c<='9';c=getchar()) x=(x<<1)+(x<<3)+c-48;
    return g?x=-x:x;
}
inline int wr(int x){
    x>=10?wr(x/10):0; putchar(x%10+48);
}
void _18520(){
    for(int i=n;i;q.push(i--))
        for(;!q.empty()&&s[i]>s[q.top()];q.pop()) f[0][q.top()]=i;
    for(;!q.empty();q.pop()) f[0][q.top()]=0;
    for(int i=1;i<20;++i)
        for(int j=1;j<=n;++j) f[i][j]=f[i-1][f[i-1][j]];
    for(int x,y,i=1,j;i<=m;++i)
        for(j=19,x=w[i][0],y=w[i][1];;){
            for(;~j&&f[j][y]<x;--j);
            if(j<0) break;
            A[i]+=(1<<j); y=f[j][y];
        }
}
int main(){
    freopen("trip.in","r",stdin);
    freopen("trip.out","w",stdout);
    rd(n); rd(m);
    for(int i=1;i<=n;++i) rd(s[i]);
    for(int i=1;i<=m;++i) rd(w[i][0]),rd(w[i][1]);
    _18520(); 
    reverse(s+1,s+1+n);
    for(int i=1;i<=m;++i){ 
        w[i][0]=n-w[i][0]+1;
        w[i][1]=n-w[i][1]+1;
        swap(w[i][0],w[i][1]);
    }
    _18520();
    for(int i=1;i<=m;putchar(10)) wr(++A[i++]);
}
opencv案例实战——银行卡模式匹配识别 在之前的几篇文章中我们已经介绍了opencv的一些基础知识,本篇文章我们将结合一个案例运用之前的知识并且学习opencv中模式匹配的应用,用到的知识点如果有不清楚的可以查看上面列出来的系列文章。具体代码会放在最后。 阅读详情

相关推荐

2025年一篇解决Windows11安装医学图像处理工具-FSL(各种问题解决,过程详细,小白轻松安装)

2025年一篇帮你解决FSl安装所有问题,包括环境安装、使用说明、常见问题,过程简单易懂,小白轻松安装。

weixin_52145255的博客 2518

【JZOJ5246】【NOIP2017模拟8.8A组】Trip

Description多年之后,worldwideD厌倦竞争,隐居山林。 他的家乡开始发展起了旅游业,在一条很长的主干道上,有N个旅游景点,按顺序编号为1到N。根据游客们网上的评分,第i个景点有一个评估值a[i],为了区分开不同的景点,评估值是两两不同的。 今天有M组游客前来旅游,第i组游客选择遍历景点Li到景点Ri这一段路。他们搜到Li到Ri的所有评估值,如果对于景点j(Li≤j≤Ri),不存

dance in th dark的博客 424

TCN实战:用Python手把手搭建时序预测模型(附完整代码)

本文详细介绍了如何使用Python搭建TCN(Temporal Convolutional Network)时序预测模型,包括数据预处理、模型架构实现、训练调优及预测评估。通过完整的代码示例和实用技巧,帮助开发者快速掌握TCN在时间序列预测中的应用,特别适合处理长期依赖问题。

weixin_29041195的博客 371

【jzoj5246】【NOIP2017模拟8.8A组】【Trip】【笛卡尔树】【tarjan-lca】

题目大意多年之后,worldwideD厌倦竞争,隐居山林。他的家乡开始发展起了旅游业,在一条很长的主干道上,有N个旅游景点,按顺序编号为1到N。根据游客们网上的评分,第i个景点有一个评估值a[i],为了区分开不同的景点,评估值是两两不同的。今天有M组游客前来旅游,第i组游客选择遍历景点Li到景点Ri这一段路。他们搜到Li到Ri的所有评估值,如果对于景点j(Li≤j≤Ri),不存在景点x(Li≤x<j

inklutcuah’s blog 610

用Cursor+Node.js零代码搭建健康数据仪表盘:从数据录入到可视化全流程

本文详细介绍了如何利用Cursor AI编程助手和Node.js,无需手动编写代码,即可构建个人健康数据仪表盘的全流程。通过自然语言指令,实现从数据录入、存储到动态图表可视化的完整系统,展示了AI驱动开发在降低技术门槛、提升开发效率方面的强大能力。

gitlab7runner的博客 698

jzoj5246. 【NOIP2017模拟8.8A组】Trip(trip) 笛卡尔数/二维偏序

Description 多年之后,worldwideD厌倦竞争,隐居山林。 他的家乡开始发展起了旅游业,在一条很长的主干道上,有N个旅游景点,按顺序编号为1到N。根据游客们网上的评分,第i个景点有一个评估值a[i],为了区分开不同的景点,评估值是两两不同的。 今天有M组游客前来旅游,第i组游客选择遍历景点Li到景点Ri这一段路。他们搜到Li到Ri的所有评估值,

老臣 451

【数据分析与挖掘实战】金融风控之贷款违约预测详解1(有代码和数据集)

金融风控一.题目理解1.1.题目概况1.2数据概况1.3预测指标二.数据来源三.查看数据四.分类指标计算示例4.1混淆矩阵4.2准确度4.3precision(精确度),recall(召回率),f1-score4.4P-R曲线4.5ROC曲线4.6AUC曲线4.7KS值五.数据分析5.1基本信息5.2查看数据集中特征缺失值,唯一值等5.3查看特征的数值类型有哪些,对象类型有哪些5.3.1数值连续型变量分析5.3.2非数值类别型变量分析5.3.3总结:5.4变量分布可视化5.4.1单一变量分布可视化 更新中~

m0_49263811的博客 1万+

JZOJ.5246【NOIP2017模拟8.8】Trip

Description 多年之后,worldwideD厌倦竞争,隐居山林。 他的家乡开始发展起了旅游业,在一条很长的主干道上,有N个旅游景点,按顺序编号为1到N。根据游客们网上的评分,第i个景点有一个评估值a[i],为了区分开不同的景点,评估值是两两不同的。 今天有M组游客前来旅游,第i组游客选择遍历景点Li到景点Ri这一段路。他们搜到Li到R...

dawzski22234的博客 204

PLC期末速成——顺序功能图转梯形图

一、根据顺序功能图写出梯形图程序 顺序功能图: 梯形图: 1、程序段1,系统运行标志M0.0的启-保-停控制电路。 2、程序段2,PLC上电与逆行,初始化脉冲M1.0激活初始化步M2.0。 3、程序段3,当M2.0初始化步为活动步,并且M0.0系统运行标志位为1时,置位M2.1步,复位M2.0步。 4、当M2.1为活动步,并且I0.3中液位传感器为1时,置位M2.2步,复位M2.1步。 5、程序段5,当M2.2为活动步,并且I0.2高液位传感器为1时,置位M2.3步,复位M2.2步。 6、程序段

qq_52251819的博客 1万+

【WRF数据准备】制备月尺度静态地理数据:LAI、Fpar、LUCC

【WRF数据准备】制备月尺度静态地理数据:LAI、Fpar、LUCC

WW、forever的博客 800

JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器

5329. 【NOIP2017提高A组模拟8.22】时间机器(File IO): input:machine.in output:machine.out Time Limits: 2000 ms Memory Limits: 262144 KBDescriptionInputOutputSample Input3 2 2 1 4 2 3 5 1 1 4 2 2 5 1 3 2 1

py_2017的博客 482

Python爬虫-爬取猫眼演出数据

本文是该专栏的第53篇,后面会持续分享python爬虫干货知识。猫眼平台除了有影院信息之外,它还涵盖了演出信息,比如说“演唱会,音乐节,话剧音乐剧,脱口秀,音乐会,戏曲艺术,相声”等等各种演出相关信息。而本文,笔者将以猫眼平台为例,基于Python爬虫实现获取各种演出信息的数据。废话不多说,具体细节部分以及详细思路逻辑,笔者将在正文结合完整代码进行详细说明。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 568

JZOJ 5246. 【NOIP2017模拟8.8A组】Trip(trip)

5246. 【NOIP2017模拟8.8A组】Trip(trip)(File IO): input:trip.in output:trip.out Time Limits: 1500 ms Memory Limits: 262144 KB Detailed Limits Description多年之后,worldwideD厌倦竞争,隐居山林。 他的家乡开始发展起了旅游业,在一条很长的主干道

py_2017的博客 352

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

jzoj5342 赤壁情 (序列插入型dp,笛卡尔树新奇姿势dp)

题面很玄幻的一题dp. 现在有一块一块的子串,他们的相对顺序是已知的但最终一定不相邻 (也就是说中间至少有一个数)考虑从小到大插入数字,每一个数字有3种基本转移 1. 在某个空隙新建一块, 2. 并入某块(放最左或最右)。 3. 合并相邻两块贡献系数好算,比如说并入一块那么系数就是0,假如新开系数就是-2 (因为可以知道旁边是比他大的还是比他小的)但是有一个问题,边界怎么办? 所以要开两个特

一位蒟蒻的小博客 1109

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JZOJ6816. 【2020.10.06提高组模拟】随机的排列

Description 给你一个长度为nnn且完全随机的排列ppp,iii(下标)可以被右边或左边第一个大于它的支配。 现在需要选择最少的点,使得每一个点要么被选择,要么被一个选择的点支配。 还需要支持qqq次修改:交换相邻的两个随机位置的值。 对于未修改时和每一次修改后输出最少的选择数。 n≤1e5,q≤2e4n\le1e5,q\le2e4n≤1e5,q≤2e4 Solution 首先建出笛卡尔树,可以发现一个点支配的点是左儿子的所有右儿子链,和右儿子的所有左儿子链。 所以可以记

Deep_Thinking的博客 248

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Trip(trip) 【NOIP2017模拟8.8A组】

Description 多年之后,worldwideD厌倦竞争,隐居山林。 他的家乡开始发展起了旅游业,在一条很长的主干道上,有N个旅游景点,按顺序编号为1到N。根据游客们网上的评分,第i个景点有一个评估值a[i],为了区分开不同的景点,评估值是两两不同的。 今天有M组游客前来旅游,第i组游客选择遍历景点Li到景点Ri这一段路。他们搜到Li到Ri的所有评估值,如果对于景点j(Li≤j

Last_Freezen_yue的博客 398

[Codeforces 487E]Tourists/[JZOJ4691]旅行/[UOJ#30]Tourists

题目大意给定一个有nn个点mm条边的无向图,每个点有点权wiw_i。 有qq个操作,每次询问所有点xx到点yy的简单路径上最小点权是多少或者将点xx权值改为yy。 1≤n,m,q≤1×105,1≤wi≤1091\le n,m,q\le 1\times 10^5,1\le w_i\le10^9题目分析第一眼看见这题应该有个很显然的想法,就是点双连通分量缩点然后树链剖分。 但是实际想一想,细节还是

待成熟的葡萄 1523

POJ-2201-Cartesian Tree(笛卡尔树)

Description Let us consider a special type of a binary search tree, called a cartesian tree. Recall that a binary search tree is a rooted ordered binary tree, such that for its every node x the fol

青春无悔 1962

一些基础算法的模板(持续更新)

更新中 //Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft //To be continued... //Suffix Automation char str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin

扩展の灰(Extended Ash/Cooevjnz) 3865

Jzoj4210 我才不是萝莉控呢

小Y:“小R你是萝莉控吗。”小R:“...”  为了避免这个尴尬的话题,小R决定给小Y做一道题。 有一个长度为n的正整数数组A,满足艾> =艾+ 1,现在构造一个数组B,令的Bi = ΣA[j] (j∈[i,n])。 现在,有一个N * N的网格图,左下角坐标是(1,1),右上角坐标是(N,N)。有一个小SB正在坐标为(n,1)的位置,每一时刻,如果他现在在(x,y),他可以选择走到(x?-

扩展の灰(Extended Ash/Cooevjnz) 1772

Jzoj4835 量化交易

一眼就可以看出是贪心,问题就是怎么去操作 首先一个很显然的思路就是,开一个小根堆,每次对于一个价格x,如果低于堆顶我们就将其丢进去,否则将堆顶y取出,获得x-y的贡献 但是这样是有问题的,我们会发现有反例: 1 4 2 3 用这种方法求出的答案是1但是正确答案应该是2 所以我们需要增加一种“撤销操作” 类似于种花那道题,我们每次将答案加上了x-y时候,我们也将x丢入堆中,而且要丢入两次,为

扩展の灰(Extended Ash/Cooevjnz) 684

配对堆模板

配对堆是一种可并堆 题意:两种操作,合并两个堆或者查询一个堆的最小值,n≤106n\leq 10^6n≤106 Pairing−HeapPairing-HeapPairing−Heap还挺好写的,不过并没有传说中那么快 这里没有Decrease−KeyDecrease-KeyDecrease−Key的代码,说一下大概怎么实现 额外记录一个FatherFatherFather域,执行Decrease...

扩展の灰(Extended Ash/Cooevjnz) 611

51Nod 1052/1053/1115 最大M子段和V1/V2/V3

V1 N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的。如果M >= N个数中正数的个数,那么输出所有正数的和。N,M 例如:-2 11 -4 13 -5 6 -2,分为2段,11 -4 13一段,6一段,和为26。 V2 N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数

扩展の灰(Extended Ash/Cooevjnz) 490

Jzoj4726 种花

相信大家都猜到题意了,简单说一下 圆形广场共有 N 个种花的位置,顺时针编号1到N。并且每个位置都有一个美观度ai ,两株花不能种在相邻的位置(1号和N号也算相邻位置)一共有 M 株花,现在小D也想知道应该如何摆这 N 株花才能使美观度最大 这道题显然可以用堆,每次将堆顶最大的元素取出并删除两边的元素 但是正确性显然有问题,比如10,11,10,1显然答案是20而不是12 那么每次,我

扩展の灰(Extended Ash/Cooevjnz) 487
上一篇: Jzoj5245 Competing Souls
下一篇: Jzoj4746 树塔狂想曲
扩展的灰
博客等级 码龄12年 60粉丝 342原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值