P4224 [清华集训2017]简单数据结构 题解

科技中介服务机构如何高效完成技术成果的筛选与匹配服务?.docx 科技中介服务机构如何高效完成技术成果的筛选与匹配服务? 立即下载

(本文是基于队爷 @s_r_f 所写题解的完善和补充)

可以发现,如果我们暴力地枚举一个数的因数或倍数,时间复杂度是可接受的。

对于前者,单次复杂度为 O(n)O(\sqrt n)O(n​);对于后者,由于题目保证了 C≤10C \leq 10C≤10,所以单次的均摊复杂度应为调和级数 O(ln⁡n)O(\ln n)O(lnn)。

所以,我们可以考虑直接模拟题意中的操作。


首先,我们设 fif_ifi​ 为以 iii 开头的最长上升倍数子序列的长度。同时,为了方便统计答案的第二项,我们再设一个 fcntifcnt_ifcnti​,表示有多少个 jjj 满足 fj=if_j = ifj​=i。

有了以上两个数组,我们就可以从小到大枚举 iii,当 fcntifcnt_ifcnti​ 不为 000 时,我们就同时找到了答案的第一项和第二项,一举两得。

没错!这样做的理论复杂度是 O(nq)O(nq)O(nq) 的,会超时。但这真的是实际的复杂度吗?

注意题目中有这样一句话:保证在任意时刻序列 AAA 非空,其中的元素互不相等。

也就是说,就算是最坏的情况,这个子序列的长度也是不超过 O(log⁡2m)O(\log_2 m)O(log2​m) 的,所以上述做法的实际复杂度为:O(qlog⁡2m)O(q\log_2m)O(qlog2​m)。


解决完了询问,我们再看看四个操作中哪个最好想。

显然是在序列左端进行的两个操作。究其原因,我们先来推推 fif_ifi​ 的转移方程式:

考虑枚举 iii 的倍数 jjj,如果 jjj 存在,设 jjj 的位置为 posjpos_jposj​,则有:
fi=max⁡i∣j,posj>0{fj+1} f_i = \max_{i | j, pos_j > 0}\{f_j + 1\} fi​=i∣j,posj​>0max​{fj​+1}
所以,在左端插入一个数,我们只需要枚举它的倍数转移即可。前面提到了,单次均摊复杂度为 O(ln⁡n)O(\ln n)O(lnn)。

而在左端删除一个数则更加简单,因为最左端的数不会对右侧的任何位置造成任何贡献,所以让它平静地离队即可。单次复杂度 O(1)O(1)O(1)。


我们再来考虑序列右端的两个操作。实际上,它们应当是大同小异的,都是枚举因数计算贡献,如果插入则把贡献也加入进去,否则把贡献删除。

现在我们需要完成的操作是:加入或者删除一个位置的贡献。

先放上代码:(valvalval 表示需要加入或者删除贡献的数,tmpftmpftmpf 表示的是需要加入或删除的贡献)

inline void Modify(int val, int tmpf)
{
	++fcnt[tmpf];
	for(register int i = 1; i <= Sqrt[val]; i++) if(val % i == 0)
	{
		if(pos[i] && pos[i] < pos[val]) ++g[pos[i]][tmpf + 1];
		if(i * i != val && pos[val / i] && pos[val / i] < pos[val]) ++g[pos[val / i]][tmpf + 1];
	}
	return;
}

inline void Delete(int val, int tmpf)
{
	--fcnt[tmpf];
	for(register int i = 1; i <= Sqrt[val]; i++) if(val % i == 0)
	{
		if(pos[i] && pos[i] < pos[val]) --g[pos[i]][tmpf + 1];
		if(i * i != val && pos[val / i] && pos[val / i] < pos[val]) --g[pos[val / i]][tmpf + 1];
	}
	return;
}

我们发现,为了方便维护,代码中加设了 gi,leng_{i, len}gi,len​ 表示以 iii 开头,长度为 jjj 的最长上升倍数子序列有多个。(这个在前面左端插入的操作中也需要维护)

这个数组的作用类似 fcntfcntfcnt,是为了方便我们在修改贡献后,找到 fff 数组最终被修改成了什么样子。

有了这两个函数,我们就可以先把 valvalval 的贡献加入,然后枚举所有 valvalval 的因数,把所有修改过的位置更新即可。

具体实现的时候,对于没有修改过的位置可以选择不修改,可以节省一点常数。

右侧的删除与加入几乎一样,不过应当先删去而非加上 valvalval 的贡献。

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>

#define MAXN 300005
#define MAXM 1000001
#define MAXLOG 21

using namespace std;

int n, m, q, a[MAXN], pos[MAXM], f[MAXN], oldf[MAXN], fcnt[MAXLOG], g[MAXN][MAXLOG], Sqrt[MAXM], len, seq[MAXM];

namespace Deque
{
	int l, r, a[MAXN];
		
	inline void Prework() { return r = n + q, l = n + q + 1, void(); } 
	
	inline void Modify(int val, int tmpf)	//加入贡献
	{
		++fcnt[tmpf];
		for(register int i = 1; i <= Sqrt[val]; i++) if(val % i == 0)
		{
			if(pos[i] && pos[i] < pos[val]) ++g[pos[i]][tmpf + 1];
			if(i * i != val && pos[val / i] && pos[val / i] < pos[val]) ++g[pos[val / i]][tmpf + 1];
		}
		return;
	}

	inline void Delete(int val, int tmpf)	//删除贡献
	{
		--fcnt[tmpf];
		for(register int i = 1; i <= Sqrt[val]; i++) if(val % i == 0)
		{
			if(pos[i] && pos[i] < pos[val]) --g[pos[i]][tmpf + 1];
			if(i * i != val && pos[val / i] && pos[val / i] < pos[val]) --g[pos[val / i]][tmpf + 1];
		}
		return;
	}

	inline void Push_Front(int val)
	{
		a[--l] = val, pos[val] = l;
		memset(g[l], 0, sizeof g[l]);
		f[l] = g[l][1] = 1;
		for(register int i = val * 2; i < MAXM; i += val) if(pos[i]) ++g[l][f[pos[i]] + 1];
		for(register int i = MAXLOG - 1; i >= 0; i--) if(g[l][i]) { ++fcnt[f[l] = i]; break; }
		return;
	}

	inline void Push_Back(int val)
	{
		a[++r] = val, pos[val] = r;
		memset(g[r], 0, sizeof g[r]);
		f[r] = g[r][1] = 1;
		Modify(val, f[r]);
		len = 0;
		for(register int i = 1; i <= Sqrt[val]; i++) if(val % i == 0) seq[++len] = i, oldf[pos[i]] = f[pos[i]];
		for(register int i = Sqrt[val]; i >= 1; i--) if(i * i != val && val % i == 0) seq[++len] = val / i, oldf[pos[val / i]] = f[pos[val / i]];
		int id;
		for(register int i = len; i >= 1; i--) if(id = pos[seq[i]])
		{
			for(register int j = MAXLOG - 1; j >= 1; j--) if(g[id][j]) { f[id] = j; break; }
			if(f[id] != oldf[id]) Delete(seq[i], oldf[id]), Modify(seq[i], f[id]);
		}
		return;
	}
	
	inline void Pop_Front()
	{
		--fcnt[f[l]], f[l] = 0, pos[a[l++]] = 0;
		return;
	}
	
	inline void Pop_Back()
	{
		int val = a[r];
		Delete(val, f[r]);
		len = 0;
		for(register int i = 1; i <= Sqrt[val]; i++) if(val % i == 0) seq[++len] = i, oldf[pos[i]] = f[pos[i]];
		for(register int i = Sqrt[val]; i >= 1; i--) if(i * i != val && val % i == 0) seq[++len] = val / i, oldf[pos[val / i]] = f[pos[val / i]];
		int id;
		for(register int i = len; i >= 1; i--) if(id = pos[seq[i]])
		{
			for(register int j = MAXLOG - 1; j >= 1; j--) if(g[id][j]) { f[id] = j; break; }
			if(f[id] != oldf[id]) Delete(seq[i], oldf[id]), Modify(seq[i], f[id]);
		}
		f[r] = 0, pos[val] = 0, --r;
		return;
	}

	inline void Solve()	//求解答案
	{
		int ans = 0;
		for(register int i = MAXLOG - 1; i >= 1; i--) if(fcnt[i]) { ans = i; break; }
		printf("%d %d\n", ans, fcnt[ans]);
		return;		
	}
}

namespace dq = Deque;

int main()
{
	#ifdef FILE
		freopen("Input.in", "r", stdin);
	#endif
	scanf("%d%d%d", &n, &m, &q);
	dq :: Prework();
	for(register int i = 1; i <= n; i++) scanf("%d", a + i);
	for(register int i = n; i >= 1; i--) dq :: Push_Front(a[i]);	//当然也可以用 Push_Back,不过这里会省下一些常数
	for(register int i = 1; i <= m; i++) { Sqrt[i] = min(i, (int)sqrt(i) + 1); if(Sqrt[i] * Sqrt[i] > i) --Sqrt[i]; }
	dq :: Solve();
	while(q--)
	{
		int opt; scanf("%d", &opt);
		if(opt == 0) { int val; scanf("%d", &val); dq :: Push_Front(val); }
		if(opt == 1) { int val; scanf("%d", &val); dq :: Push_Back(val);}
		if(opt == 2) dq :: Pop_Front();
		if(opt == 3) dq :: Pop_Back();
		dq :: Solve();
	}
	return 0;
}

END\mathit{END}END

coppeliasim+gym+sac机械臂到位实验 urdf文件 立即下载

相关推荐

产业园区如何通过数智工具精准识别企业技术需求,提高服务匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【LOJ2326】「清华集训 2017」简单数据结构

【题目链接】 点击打开链接 【思路要点】 注意到答案是 O(LogM)O(LogM)O(LogM) 级别的。 对于每一个点 iii 我们暴力维护其 dpdpdp 值 dpidp_idpi​ 以及能够转移到 iii 的各个位置的中 dpdpdp 值为 jjj 的位置数 cnti,jcnt_{i,j}cnti,j​ 。 令 f(x)f(x)f(x) 表示 xxx 的因子个数。 对于操作 0...

cz_xuyixuan的博客 773

产业园区运营负责人怎样利用数智工具提升企业技术需求对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

P4224 [清华集训 2017] 简单数据结构

本文提出了一种动态维护最长上升倍数子序列的高效算法。该算法基于双端队列结构,在队列两端进行插入/删除操作时,通过增量更新关键状态数组来避免重新计算整个序列。核心数据结构包括记录元素位置、序列长度和数量的数组,以及全局统计表。算法针对四种操作分别设计了处理逻辑:前端插入只需处理倍数关系,后端插入需处理因子关系并重新计算受影响元素的状态。通过因子遍历优化和状态递推更新,算法在O(√val)或O(m/val)时间内完成每次操作。该方案适用于元素互不相同的序列,能高效维护最长子序列长度及其不同开头数。

eniver的博客 2722

搜素引擎+p2p+电脑全域搜素+快速检索文件

快速搜索电脑内一切文件,反应超快

三相电压型PWM整流器PI双闭环控制Matlab仿真

内容概要:本文系统介绍了三相电压型PWM整流器的PI双闭环控制系统在Matlab/Simulink环境下的建模与仿真方法,重点阐述电压外环与电流内环的协同控制机制,通过PI调节器实现直流侧电压稳定控制及交流侧单位功率因数运行。内容涵盖电压定向控制(VOC)、空间矢量PWM(SVPWM)调制策略、电网不平衡条件下的功率平衡控制等关键技术,并延伸至维也纳(Vienna)整流器、中点电压平衡、滞环电流控制等多种先进拓扑与控制方法。配套提供Mathcad计算书,支持不同功率等级下的参数设计、闭环建模与工程化实现,形成从理论分析到仿真验证的完整技术链条,适用于电力电子系统科研与教学实践。; 适合人群:电气工程、电力电子及相关专业的研究生、科研人员,以及具备Matlab/Simulink仿真基础的工程技术人员。; 使用场景及目标:① 掌握三相PWM整流器双闭环PI控制系统的建模、仿真与动态性能分析;② 深入理解电压定向控制、SVPWM调制及电网不平衡工况下的先进控制策略;③ 利用Mathcad计算工具完成实际工程中整流器的参数设计与优化。; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,重点关注控制架构搭建、PI参数整定方法、系统稳定性分析及不同工况下的仿真验证,通过反复调试提升对控制性能的理解与工程应用能力。

loj#2326. 「清华集训 2017」简单数据结构【动态规划+set】

传送门 解题思路: 感觉复杂度是证不来的……不过跑得挺快…… 注意序列长度不超过20,所以也比较暴力,就是记录每个值的位置,以每个点开头的最长长度和每个长度对应的最小结尾位置,用set维护以每个点为结尾的最长序列开头位置,用桶维护答案……向左加就枚举倍数更新,向右加就枚举约数更新…… #include&amp;lt;bits/stdc++.h&amp;gt; using namespace std; in...

cdsszjj的博客 971

告别Keil?在Mac上配置STM32CubeIDE + CMSIS-DAP调试器全攻略(含常见报错解决)

本文详细介绍了在Mac平台上配置STM32CubeIDE与CMSIS-DAP调试器的全流程,包括硬件准备、软件安装、工程创建及调试优化。通过实战指南,帮助开发者高效完成STM32开发,解决常见报错问题,提升开发效率。

weixin_30485379的博客 431

[2017集训队作业自选题#154]简单数据结构题

题目大意一颗点权树,初始点权均为0。 每次操作将所有距离x为1的点点权+1,然后希望你求出距离x为1的点点权异或和。一个转化把修改分成儿子修改和单点修改,把询问分成儿子询问和单点询问。 每次相当于x的儿子修改+x的父亲单点修改,询问类似。根号算法发现一个点儿子的点权种类数最多根号种。 不妨用链表(动态桶)维护每种点权出现次数。正解注意到x^(x+1)=2*lowbit(~x)-1。 我们不妨

不来也不去的一只失忆蝴蝶 1268

【人工智能】全面盘点国内AI九大模型:各擅胜场的智能先锋(豆包、文心一言、讯飞星火、通义千问、Kimi、智谱清言、腾讯元宝、秘塔、天工AI)

追求性价比与全能:选豆包,适合个人与中小企业日常使用;侧重中文创作与理解:选文心一言,文学与商业文案创作首选;需要专业语音交互:选讯飞星火,智能客服、车载场景必备;看重生态与多场景:选通义千问,适配电商、办公等企业需求;处理超长文本任务:选Kimi,文档分析、学术研究的利器;专注深度推理创作:选智谱清言,学术与创意写作的伙伴;依赖腾讯生态协同:选腾讯元宝,日常轻量需求的便捷之选;深耕法律学术领域:选秘塔,专业文本处理的权威工具;布局前沿技术体验:选天工AI,享受接近国际顶尖的智能服务。

奶爸的编程之路,也就一周冷个三天 1121

电子电气架构 --- 整车电源管理

保证启动能力:防止因电池电量耗尽而导致的车辆无法启动,这对于确保车辆在任何时候都能可靠运行至关重要。 延长电池寿命:通过避免电池深度放电,有助于延长其使用寿命,减少更换电池的需求和成本。 提升用户体验:虽然负载被关闭可能会暂时影响舒适度,但通过在必要时自动采取行动,可以减少驾驶员的焦虑和不确定性,提高整体的用户满意度。

Soly_kun的博客 1083

[LOJ#2326]「清华集训 2017」简单数据结构

[LOJ#2326]「清华集训 2017」简单数据结构 试题描述 参加完IOI2018之后就是姚班面试。而你,由于讨厌物理、并且想成为乔布斯一样的创业家,被成功踢回贵系。 转眼,时间的指针被指向2019,大二,12月初,考试周。 你早听学长说,数据结构期中考很难,对竞赛生不友好,集训队选手做不完卷子。 你冷笑。哼,堂堂国际金,这点难度的考试算什么。 两小时,你看完习题解析前五章所有内容,并且倒背如...

weixin_30783629的博客 228

6-Halcon-- var_threshold 函数功能(用于基于局部统计特性的动态阈值分割的算子)

var_threshold 是 HALCON 中用于基于局部统计特性的动态阈值分割的算子,特别适用于处理低对比度图像或纹理均匀但包含细微差异的场景。与 dyn_threshold 不同,它不依赖预处理生成的参考图像,而是直接在局部区域内计算灰度值的统计特性(均值和标准差),从而自适应调整阈值。

weixin_45590420的博客 1326

清华集训2017题解

ioi赛制好评QAQ 好像啥都记不得了就不写游记了 Day 1 1.1 生成树计数(tree.cpp) 1.1.1. 题意 ​ 有 n≤30000n≤30000 n \le 30000 个点,第 ii i 个点有点权 aiai a_i ,设第 ii i 个点的点度为 didi d_i ,那么求求所有生成树的权值和。一个生成树的权值 w(T)w(T) w(T)...

whzzt的博客 2469

华为面试手撕真题【求1-n的最小公倍数】

求1-n的最小公倍数

MISAYAONE的博客 2万+

9.9华为OD机试真题 新系统 - 受限任务分配 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【受限任务分配】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【受限任务分配】多语言题解。

qq_45776114的博客 725

【清华集训2017】【LOJ2326】【洛谷P4224】简单数据结构(线筛处理因数表)(DP)(set维护)

LOJ传送门 洛谷传送门 解析: 其实题目中说了这么多,有一句话 同一个数字最多只会被插入C次。C=10 也就是说,我们可以将这个序列近似看作随机。 那么直接考虑乱搞。我们发现还有一个条件: 保证在任意时刻序列A非空,其中的元素互不相等 直接告诉我们可以为每个数记录出现位置,并且答案大小直接降低到了logloglog级别。 记dp[i]dp[i]dp[i]表示以iii开头的数列最长长度,...

zxyoi_dreamer的博客(不定期诈尸) 353

在 ABAP Cloud 中玩转 CL_ABAP_PARALLEL 并行处理:从原理到实战

ABAP并行处理框架CL_ABAP_PARALLEL解析 本文系统介绍了SAP ABAP环境中实现并行处理的CL_ABAP_PARALLEL框架。该框架通过封装异步RFC和对话进程,为开发者提供了面向对象的API,显著提升大批量数据处理的效率。 文章首先分析了ABAP环境需要并行处理的原因:传统的串行处理在面对百万级数据时效率低下。然后详细介绍了CL_ABAP_PARALLEL的设计思路,它是一个"小型线程池"式的同步并行框架,适用于批量计算场景。此外,文章重点讲解了控制并行任务的关键参

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 339

【JZOJ5295】【清华集训2017模拟】Create

DescriptionData ConstraintSolution这道题很经典。 我们发现一次操作最多使序列多出1段新的连续序列。所以我们考虑维护这个序列。我们将询问按x大小排序后建一棵主席树,那么对于一个修改(l,r,v),我们可以算出修改后(l,r)对答案的贡献。现在问题是怎样取消修改前的贡献。我们用线段树维护每一段连续的颜色的起点和终点。每一次修改暴力跳一下每个颜色段,查询他们原来的贡献。

dance in th dark的博客 532

【AI 赋能:Python 人工智能应用实战】16. BERT微调实战:中文新闻分类全流程(附模型蒸馏+ONNX部署完整代码)

中文新闻分类是NLP领域的经典实用任务,BERT模型凭借双向上下文建模能力,能有效解决中文歧义与长文本依赖问题,但存在推理速度慢、资源占用高的痛点。本文以THUCNews中文新闻数据集为核心,提供从数据预处理、BERT微调、模型蒸馏到生产部署的全流程实操指南。首先详解THUCNews的多编码读取与清洗(解决gbk/utf-8兼容问题);然后实现BERT微调,加入早停机制与混淆矩阵可视化,验证准确率达93.8%;接着用DistilBERT完成模型蒸馏,在仅损失0.6%准确率的前提下,将推理速度提升2.7倍。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1098

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LOJ#2331. 「清华集训 2017」某位歌姬的故事

将序列离散化后,可以给每个点确定一个取值的上界wiwiw_i 对于限制(lj,rj,cj)(lj,rj,cj)(l_j,r_j,c_j),只有[lj,rj][lj,rj][l_j,r_j]中wi=cjwi=cjw_i=c_j的点能贡献 对于一个cjcjc_j,将所有wi=cjwi=cjw_i=c_j的点拿出来,令f[i][j]f[i][j]f[i][j]表示满足了前i个区间,最后一个权值取到了...

L_0_Forever_LF的专栏 1102

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【loj2325】「清华集训 2017」小Y和恐怖的奴隶主 概率dp+倍增+矩阵乘法

题目描述 你有一个m点生命值的奴隶主,奴隶主受伤未死且当前随从数目不超过k则再召唤一个m点生命值的奴隶主。 T次询问,每次询问如果如果对面下出一个n点攻击力的克苏恩,你的英雄期望会受到到多少伤害。 输入 输入第一行包含三个正整数 T,m,k ,T 表示询问组数,m,k 的含义见题目描述。 接下来 T 行,每行包含一个正整数 n ,表示询问进行 n 次攻击后扣减Boss的生命值点...

weixin_30896763的博客 241

Camera2Demo

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

OV9734 DATASHEET,完整规格书

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

清华集训2017给修记

day -1开启懵逼之旅。 高铁上和__debug,h10,dy0607打扑克牌,每一局规则都不一样。1h后各自颓。samjia又打通了一次以撒。 来到西郊后跟着h10和__debug颓,虽然最后莫名奇妙的变成了看电影。h10掘地求升居然过灯了。 今天没给到修修。day 0早上睡得舒服,吃的舒服,报道完颓的舒服。 中午富榄请去thu吃饭,舒服。 下午回来给到修修,舒服。 晚上连赢AK杀,

不来也不去的一只失忆蝴蝶 1945

【清华集训2017模拟】Sequence

Description : 1<=n<=3e4,1<=m<=1e5题解:做的第一道整体二分题。整体二分的套路: 二分一个答案,对于每个询问求出答案,再把询问分成两部分,第一个部分是答案< mid的,第二个部分是答案大于mid的,至于=mid的,这个询问不一定是mid,先把答案记一下,根据实际情况而决定分到哪个部分。这题首先得把[x, y]的限制具体化,用一棵主席树预处理[x..y]限制对应的a值

Cold_Chair的博客 767

【清华集训2017模拟】ces

Description: 1<=n<=1e5,1<=q<=m<=2e5题解:首先把用tajan把桥边全部找出来,桥边会把图分成若干个双联通分量。 把每个双联通分量并成一个点,桥边作为边,这会构成一棵树。显然,对于每个询问加k条边最多能去掉多少条桥边,就是用k条简单路径去覆盖这棵树,最多能覆盖多少条边。有一个很优的贪心,把k按1-q做,每次找到树的直径,答案加上直径的长度,把直径压成一个点,继续做

Cold_Chair的博客 687

清华集训2017滚粗记

Day 0很早就到了,然后就被众人教育,晚上连营AK杀被wzd、yql教育,去找wyy换衣服又被wyy和dwj教育。虚心接受教育之后就回去了。Day 1考得最崩的一天。开场看完题发现T1是个原题加强,T2只会状压的部分分,T3是个裸分块但是要写挺久的,于是决定先开T1。开了T1半个小时之后发现毫无思路,式子并不能像原题做法那么化简,就扔掉去写T3。写完T3已经过了挺久了,改了一堆bug之后终于过了第

wxh010910 3152
上一篇: 动态DP 学习笔记
下一篇: Segment Tree Beats 小记
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值