【ybt】【数据结构 倍增 课过 例2】开车旅行

Keil5实战:如何高效导出变量数据并实现可视化分析 本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。 阅读详情

开车旅行

题目链接:YbtOJ/Luogu


在这里插入图片描述

解题思路

我们可以先处理出 A A A 和 B B B 在每个城市会下一个前往的城市是哪个,这个可以用双向链表来处理。

然后我们就可以进行倍增,转移式如下:
{ f 0 , i , , j = f 0 , f 0 , i , j − 1 , j − 1 d i s 0 , i , j = d i s 0 , i , j − 1 + d i s 0 , f 0 , i , j − 1 , j − 1 d i s 1 , i , j = d i s 1 , i , j − 1 + d i s 1 , f 0 , i , j − 1 , j − 1 \begin{cases} f_{0,i,,j}=f_{0,f_{0,i,j-1},j-1} \\dis_{0,i,j}=dis_{0,i,j-1}+dis_{0,f_{0,i,j-1},j-1} \\ dis_{1,i,j}=dis_{1,i,j-1}+dis_{1,f_{0,i,j-1},j-1} \end{cases} ⎩⎪⎨⎪⎧​f0,i,,j​=f0,f0,i,j−1​,j−1​dis0,i,j​=dis0,i,j−1​+dis0,f0,i,j−1​,j−1​dis1,i,j​=dis1,i,j−1​+dis1,f0,i,j−1​,j−1​​
特别的,当 j = 1 j=1 j=1 时,有: { f 0 , i , , 1 = f 1 , f 0 , i , 0 , 0 d i s 0 , i , 1 = d i s 0 , i , 0 d i s 1 , i , 1 = d i s 1 , f 0 , i , 0 , 0 \begin{cases} f_{0,i,,1}=f_{1,f_{0,i,0},0} \\dis_{0,i,1}=dis_{0,i,0} \\ dis_{1,i,1}=dis_{1,f_{0,i,0},0} \end{cases} ⎩⎪⎨⎪⎧​f0,i,,1​=f1,f0,i,0​,0​dis0,i,1​=dis0,i,0​dis1,i,1​=dis1,f0,i,0​,0​​

code

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<cmath>
#define int long long
using namespace std;

int n,m;
int la,lb,t;
int ps[100010];
int gh[100010];
int gb[100010];
int f[25][100010][2];
int da[25][100010][2];
int db[25][100010][2];

struct abc{
	int id,h;
	int pre,nxt;
}h[100010];

bool cmp(abc a,abc b)
{
	return a.h<b.h;
}

void del(int pos)
{
	if(h[pos].nxt) h[h[pos].nxt].pre=h[pos].pre;
	if(h[pos].pre) h[h[pos].pre].nxt=h[pos].nxt;
}

int hh(int a,int b,int i)
{
	if(!a) return h[b].id;
	if(!b) return h[a].id;
	if(h[i].h-h[a].h<=h[b].h-h[i].h)
		return h[a].id;
	else
		return h[b].id;
}

void calc(int s,int x)
{
	la=lb=0;
	int k=0;
	for(int i=t;i>=0;i--)
		if(f[i][s][k]&&da[i][s][k]+db[i][s][k]<=x)
		{
			x-=da[i][s][k]+db[i][s][k];
			la+=da[i][s][k];
			lb+=db[i][s][k];
			if(!i) k^=1;
			s=f[i][s][k];
		}
}

signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&h[i].h);
		h[i].id=i;
	}
	sort(h+1,h+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		ps[h[i].id]=i;
		h[i].pre=i-1;
		h[i].nxt=i+1;
	}
	h[1].pre=h[n].nxt=0;
	for(int i=1;i<n;i++)
	{
		int p=ps[i],pre=h[p].pre,nxt=h[p].nxt;
		if(pre&&(h[p].h-h[pre].h<=h[nxt].h-h[p].h)||!nxt)
			gb[i]=h[pre].id,gh[i]=hh(h[pre].pre,nxt,p);
		else
			gb[i]=h[nxt].id,gh[i]=hh(pre,h[nxt].nxt,p);
		del(p);
	}
	for(int i=1;i<=n;i++)
	{
		if(gh[i])
		{
			f[0][i][0]=gh[i];
			da[0][i][0]=abs(h[ps[i]].h-h[ps[gh[i]]].h);
			db[0][i][0]=0;
		}
		if(gb[i])
		{
			f[0][i][1]=gb[i];
			da[0][i][1]=0;
			db[0][i][1]=abs(h[ps[i]].h-h[ps[gb[i]]].h);
		}
	}
	t=log(1.0*n)/log(2)+1;
	for(int i=1;i<=t;i++)
		for(int j=1;j<=n;j++)
			for(int k=0;k<=1;k++)
			{
				int l=(i==1)?k^1:k;
				if(f[i-1][j][k])
					f[i][j][k]=f[i-1][f[i-1][j][k]][l];
				if(f[i][j][k])
				{
					da[i][j][k]=da[i-1][j][k]+da[i-1][f[i-1][j][k]][l];
					db[i][j][k]=db[i-1][j][k]+db[i-1][f[i-1][j][k]][l];
				}
			}
	int x,s,p=0;
	int ansa=1,ansb=0;
	cin>>x;
	for(int i=1;i<=n;i++)
	{
		calc(i,x);
		if(!lb) la=1;
		if(la*ansb<lb*ansa||(la*ansb==lb*ansa&&h[ps[i]].h>h[ps[p]].h))
			ansa=la,ansb=lb,p=i;
	}
	cout<<p<<endl;
	cin>>m;
	while(m--)
	{
		scanf("%lld%lld",&s,&x);
		calc(s,x);
		cout<<la<<" "<<lb<<endl;
	}
}
【论文笔记】Beyond Low-frequency Information in Graph Convolutional Networks 文章目录1. Abstract2. Introduction低频和高频信号作用FAGCN怎么设计3. An Experimental Investigation4. Model4.1 filter定义4.2 Aggregation4.3 Problems of signal combination4.4 Spatial vision of FAGCN4.5 系数αijG\alpha_{i j}^{G}αijG​4.6 模型整体框架FAGCN的表达能力实验 本文发表在AAAI-21上 论文地址:https: 阅读详情

相关推荐

不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面

本文详细介绍了如何使用SpannableStringBuilder在Android平台上构建专业级AI对话界面,涵盖流式文本处理、富文本解析、交互优化等核心技术。通过实战代码示例,帮助开发者实现类似DeepSeek的AI产品交互效果,提升用户体验和应用专业度。

weixin_28358083的博客 198

【Ybt OJ】[数据结构 第5章] 倍增(LCA) [前半章]

「「「数据结构」」」第555章 倍增问题(((前333题))) 目录: A.查找编号 B.开车旅行 C.树上距离 A.A.A. 例题111 查找编号 洛谷linklinklink 分析: 直接lowerlowerlower_bound()bound()bound()就搞完了 也可以倍增 比它小就一直跳 最后输出倍增到的位置或−1-1−1 CODE: #include<iostream> #include<cstdio> #include<algorithm> #inc

绫 252

SBM与超效率SBM模型实战:从原始面板数据到MATLAB高效实现

本文详细介绍了SBM模型与超效率SBM模型的核心原理,并提供了从原始面板数据预处理到MATLAB高效实现的完整实战指南。通过具体代码解析,帮助研究者掌握如何利用MATLAB进行数据标准化、模型构建、效率求解及结果可视化,从而精准评估决策单元的相对效率,尤其适用于在高效单元中进一步精细排名的场景。

weixin_29100399的博客 480

【YBTOJ】开车旅行

思路: 先预处理出每个城市出发,小A小B开车到达的下一个城市。 然后倍增优化DP: {f0,i,,j=f0,f0,i,j−1,j−1dis0,i,j=dis0,i,j−1+dis0,f0,i,j−1,j−1dis1,i,j=dis1,i,j−1+dis1,f0,i,j−1,j−1\begin{cases} f_{0,i,,j}=f_{0,f_{0,i,j-1},j-1} \\dis_{0,i,j}=dis_{0,i,j-1}+dis_{0,f_{0,i,j-1},j-1} \\ dis_{1,i,j}..

ha 174

简化神经元模型6 -- Hindmarsh-Rose Model

简化神经元模型 6 Hindmarsh-Rose Model

weixin_73557167的博客 1427

ArcGIS基础:CAD数据转换为GIS数据(符号化显示、数据转换、线转面、空间连接)

1、符号化显示: CAD数据加载进来有很多列表,包含了点【point】、线【polyline】、面【polygon】、标注数据【Annotation】等数据,本次实验我们需要用到的是面数据,也就是.dwgPolygong格式的数据。如下图所示: 把数据加载进来,然后在2处打开属性表,查看CAD数据的属性表,打开后可以发现【layer】图层表示就是地块的用地性质,它就是符号化显示的依据。 我们在数据上右键【属性】,打开图层属性,找到【符号系统】,选择类别中的【唯一值】,然后在【值字段】下拉选择【layer】,

yuanYW7556的博客 2万+

YBT高效进阶 4.6.2 洛谷P1081 开车旅行(最详细)

YBT高效进阶 4.6.2 洛谷P1081 开车旅行 TITLE 题目描述 小A和小B决定利用假期外出旅行,他们将想去的城市从1到n编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市i的海拔高度为h_i城市i和城市j之间的距离d_{i,j},恰好是这两个城市海拔高度之差的绝对值,即 di,j=∣hi−hj∣d_{i,j}=|h_i-h_j|di,j​=∣hi​−hj​∣ 旅行过程中,小A和小B轮流开车,第一天小A开车,之后每天轮换一次。他们计划选择一个城市s作为起点,一直向

weixin_46975572的博客 368

MFC 利用soap 调用web service

MFC 利用soap 调用web service

congjiaoyan3682的博客 785

【ybt高效进阶4-5-2】【luogu P1081】开车旅行

有一些城市,城市间距离为它们的高度差。 然后要从一个城市一直往右走。 然后两个人小 A 小 B,小 A 选择第二近的城市作为目的地(相同距离选海拔低的),小 B 选择最近的城市作为目的地。 如果无法按意愿选或者要走的距离超过给定值 x,就结束。 然后问你两个问题。 给定 x,要你选一个位置,使得小 A 走的距离与小 B 走的距离的比最小。(如果小 B 距离为 0,则为无穷大)若比值相同就选海拔小的。 或者给出 x 和出发城市,求两人走过距离。

欢迎您的光顾awa 308

ubuntu linux虚拟机安装部署openclaw详细教程(安装、问题处理)

本文详细介绍了在Ubuntu系统下安装OpenClaw AI助手的完整流程及常见问题解决方案。主要内容包括:1) 通过GIT、Node.js等基础环境配置;2) 使用官方脚本或源码编译两种方式安装OpenClaw;3) 配置向导中的关键选项说明;4) 针对systemctl服务启动失败等常见错误的处理方法。文章特别强调了权限管理、网络依赖和访问配置等易错环节,提供了修改service文件等具体解决方案,帮助开发者顺利完成部署并实现Web UI访问。教程实操性强,适合本地和云服务器环境部署参考。

少说,多做 2032

哨兵1号回波数据(L0级)FDBAQ压缩算法详解

本文介绍哨兵1号用的FDBAQ算法,它实现非整数可变bit压缩,大部分数据仅需 3bit输出,少数高反射率数据需4bit输出,使得平均输出比特率刚超过3bit,比熵约束分块自适应量化 (ECBAQ)压缩算法所需的3.7bit更低。也就是说FDBAQ压缩完,除了要记录分块尺寸和各块的均值码(对应哨兵1号数据包里的THIDX)外,还需要记录霍夫曼码字的长度(对应哨兵1号数据包里的BRC)。唯一不同的就是量化后的编码规则使用了霍夫曼编码,相当于在传统的BAQ压缩流程的后面又加了一个步骤。

2303

开车旅行(NOIP2012提高组)

题目链接 这道题最基本的思路是用倍增,但是其实它的难点在预处理部分。 倍增的部分此次就不细说了,和之前的最近公共祖先的思想类似。 我们主要来探讨一下预处理的部分。 我们需要预处理出每个城市小A和小B的选择目标和对应的距离,接下来就可以处理出进行2k轮开车的目的地和距离了。所以前者才是重中之重,而前者如果要用暴力的方法会tle的。 有人可能会疑惑,我们找当前点的后面两三个不就可以了?为什么会tle呢? 实际上并不是序号相差很远距离就很远,实际上有可能第一个城市和最后一个城市最近,可以举个例子,城市海拔如下:

cggwz的信息飞船 594

在最新版eclipse中配置使用AI AIcoder _AIcoder配置GPUSTACK使用_配置OLLAMA本地AI模型利用_集合---AI场景应用工作笔记

本文介绍了三款实用的编程辅助工具:一款便捷的反编译插件,可直接在插件市场安装使用;GitHub Copilot提供每月2000次代码补全和50条聊天记录的免费额度,支持智能代码提示功能;aicoder支持配置本地模型运行。这些工具都能有效提升开发效率,其中GitHub Copilot的智能补全功能尤为突出。

添柴程序猿的专栏 1247

ybt 神(bian)奇(tai)题目总结合集(中)

ybt 题目总结&吐槽 合集(中)第三章 图论强连通分量T12 软件安装T13 宫室宝藏第四章 数据结构树状数组T14 区间修改区间查询RMQT15 与众不同T16 降雨量T17 超级钢琴倍增T18 开车旅行T19 运输方案T20 删边操作 第三章 图论 强连通分量 T12 软件安装 (洛谷P2515) 这题首先一定要注意到每一个软件最多依赖一个软件的性质,因为这意味着如果由依赖指向被依赖建图,缩点去掉环之后所得的是一棵树,这题就变成一个带权的选课方案 T13 宫室宝藏 第四章 数据结构 树状数组

eliyou的博客 590

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【ybt2021.11.12】T2 字典之序

T2 字典之序 link 解题思路 考虑贪心。 在选每个字母的时候要保证它的后面有所有没有出现过的字母。 每次从后往前找到直到每个未出现过字母都存在,记录下标。 在上一次操作的下标后一位到找到的下标之间取最小的字母。 可以保证这样找到的字符串字典序最小。 code #include<iostream> #include<cstring> #include<cstdio> #include<string> using namespace std; stri

你...你不要过来啊!!! 780

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【ybt】【树形DP】【例题2】结点覆盖

结点覆盖 LinkLinkLink 解题思路 这是一道树形DP。 设 fi,0f_{i,0}fi,0​ 表示以 iii 为根的子树全部被覆盖,iii 的父亲被选的最小值。 fi,1f_{i,1}fi,1​ 表示 iii 被选的最小值。 fi,2f_{i,2}fi,2​ 表示 iii 的儿子被选在最小值。 code #include<iostream> #include<cstdio> using namespace std; int n; int a[2010]; int f[

你...你不要过来啊!!! 543

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【ybt】【数据结构 RMQ 课过 例3】与众不同

与众不同 题目链接:YbtOJ 解题思路 设 lastilast_ilasti​ 表示 iii 上一次出现的位置。 设 preipre_iprei​ 表示以 iii 结尾的最长完美序列的启示位置,显然 prei=max⁡(prei−1,lastai)pre_i=\max(pre_{i-1},last_{a_i})prei​=max(prei−1​,lastai​​) 。 我们先处理出 lastlastlast 和 preprepre ,然后二分出一个 lenlenlen,lenlenlen 的左边可以直

你...你不要过来啊!!! 517

【冲刺 NOIP2022 模拟赛 B 组 Day5】B. 选择人员

【冲刺 NOIP2022 模拟赛 B 组 Day5】B. 选择人员

你...你不要过来啊!!! 461

【ybt】【状压DP】【例题4】炮兵阵地

炮兵阵地 LinkLinkLink 解题思路 设 fi,j,kf_{i,j,k}fi,j,k​ 表示第 iii 行,第 iii 行状态为 jjj ,第 i−1i-1i−1 行状态为 kkk 的情况最大值。 枚举 lll 表示第 n−2n-2n−2 行的状态,在这 333 行状态都不重叠的前提下,状态转移方程如下: fi,j,k=max⁡(fi,k,l)f_{i,j,k}=\max(f_{i,k,l})fi,j,k​=max(fi,k,l​) code #include<iostream> #

你...你不要过来啊!!! 443

【ybt】【状压DP】【例题1】种植方案

种植方案 LinkLinkLink 解题思路 状压 DPDPDP 模板题。 code #include<iostream> #include<cstdio> using namespace std; const int mod=1e8; int n,m; int a[20]; int q[1<<12],tot; int f[20][1<<12]; int main() { cin>>n>>m; for(int i=1;i&

你...你不要过来啊!!! 396

【冲刺 NOIP2022 模拟赛 B 组 Day5】A. 数字计数

【冲刺 NOIP2022 模拟赛 B 组 Day5】A. 数字计数

你...你不要过来啊!!! 371

【ybt】【数据结构 树状数组 课过 例3】严格上升子序列数

严格上升子序列数 题目链接:YbtOJ 解题思路 我们设 fi,jf_{i,j}fi,j​ 表示以 iii 结尾,长度为 jjj 的序列数。 如果直接暴力做,那是 O(n3)O(n^3)O(n3) 的时间复杂度。 我们可以离散化,然后用树状数组维护每一种方案数的情况。 其实和逆序对挺像的说(无端感受) code #include<algorithm> #include<iostream> #include<cstring> #include<cstdio>

你...你不要过来啊!!! 352

【ybt】【基算 深搜 课过 例3】虫食算

虫食算 题目链接:虫食算 感谢 @lzh@lzh@lzh 大佬的帮助 题目描述 解题思路 很明显这是一道深搜题 (不然它怎么会归到深搜专栏里呢) 。 可以搜索枚举每一个字母来寻找最佳答案。 但这样是 O(10n)O(10^n)O(10n) 的时间复杂度,肯定是过不了的,所以要加入剪枝。 如果当前情况已经不合法了,自然不能搜下去。 那么现在关键在于 check()check()check() 函数。 如果当前位三个数都被搜到过了,那么直接判断即可。但如果上一位有数未知,那么最多还可以对这一位贡献 111

你...你不要过来啊!!! 327

【ybt】【图论 强连通 课过 例1】有向图缩点

有向图缩点 题目链接:有向图缩点 题目描述 解题思路 强连通分量模板,用 TarjanTarjanTarjan 算法。 code #include<iostream> #include<cstdio> #include<queue> using namespace std; queue<int> q; int n,m; int ans; int tm,tt; int a[10010]; int v[10010]; int f[10010]; int d

你...你不要过来啊!!! 315

【ybt2021.11.12】T1 他的世界

T1 他的世界 link 解题思路 “暴力也能过” code #include<iostream> #include<cstdio> using namespace std; int T; int n,m; int main() { freopen("number.in","r",stdin); freopen("number.out","w",stdout); cin>>T; while(T--) { scanf("%d%d",&n,&

你...你不要过来啊!!! 314

【ybt】【数据结构 RMQ 课过 例4】矩阵最值

矩阵最值 题目链接:YbtOJ 解题思路 二维st表模板题。 code #pragma GCC optimize(2) #include<iostream> #include<cstdio> #include<cmath> #define int long long using namespace std; int n,m,T; int a[260][260]; int f[260][260][21][21]; signed main() { cin>&

你...你不要过来啊!!! 299
上一篇: 【ybt】【数据结构 倍增 课过 例1】查找编号
下一篇: 【ybt】【数据结构 倍增 课过 例3】树上距离
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值