摘要:
这道题我调了好久......细节非常多。 首先,看完题目后,可以发现这是一道博弈问题。 那么接下来,我们假设最强蛇为 \(x\) ,最弱蛇为 \(y\) ,那么这里就有两个结论: 如果 \(x\) 吃了 \(y\) 不是最弱的蛇,则 \(x\) 必吃 \(y\) 。 证明:假设当前第二强的蛇为 \( 阅读全文
摘要:
这道题是一道构造题,很有 CF 的风格。 首先,观察 \(x,y \leq 10^6\) ,不难想到一个思路:排序, \(x\) 为第一关键字, \(y\) 为第二关键字。但显然这样是错的。因为我们只要构造一组跨度足够大的数据,就可以把这个做法卡掉。 但是,排序 的思路是值得我们探讨的,只是如何排序 阅读全文
摘要:
这道题可以说是一道树上带修莫队的板子题。虽然评级是黑的,但是树上带修莫队本身还是比较好想的。就是代码很难调。 update 2021/4/12:现在评级掉紫了。 树上莫队: 树上莫队的本质就是利用欧拉序将树上莫队问题变成序列莫队问题。 我们设 \(\{eular\}\) 表示欧拉序序列, \(fir 阅读全文
摘要:
1.概述 并查集是一种数据结构,用于图论之中(更多时候用于树),通常用来维护一张无向图内 \(O(1)\) 判断两个点是否在同一个连通块内,有很多的用法,扩展性也比较高。 2.模板 下面还是通过一道模板讲解并查集的用法。 link 我们假设这 4 个元素分别表示 4 个人。假设每个人都会在一个群内, 阅读全文
摘要:
这道题首先可以发现,宽度是完全没有用处的,所以可以忽略不计。 然后在贴海报时,可以发现:如果某一个点与前面某一个点相同,而且这两个点中间没有比他们低的点,那么可以节省一张海报。 啥意思?比如说: 1 4 2 1 2 3 处理时,由于两个 1 中间没有比 1 低的,那么他们可以共享一张海报(使用公共边 阅读全文
摘要:
1.概述 单调栈,是一种数据结构,与单调队列相似。 单调队列使用双端队列维护,队列内元素单调递增或单调递减。 单调栈则使用普通的栈维护,栈内元素单调递增或单调递减。 接下来,通过一道例题,来看一下单调栈的基本操作。 2.模板 link 作为模板题,我将会详细讲解单调栈的用法。 单调栈其实类似于单调队 阅读全文
摘要:
题目链接:link 初步分析: 这道题首先不会是贪心 (其实是我不会) ,看到“最大”二字,又看了眼数据范围,基本上可以定下来是 dp 题了。 首先设状态: \(f[i][j]\) 表示第 \(i\) 个烟花放出时当前人在 \(j\) 位置可以得到的最大开心值。 然后推方程:\(f[i][j]=\m 阅读全文
摘要:
本题题意简单明了。 首先,题目当中 最小 二字,就是在提示我们使用二分。 然后,要求最大值与最小值的差,并且区间长度固定,各位能想到什么?我想到的是使用单调队列维护。 做法: 首先对输入数组按照 \(x\) 坐标升序排序。 然后二分花盆长度,跑一次单调队列即可。 所以结束了?代码: #include 阅读全文
摘要:
一些 update update 2021/2/28:修改了『概述』部分。 1.概述 单调队列是一种特殊的队列,其保证队列内的元素单调递增。 而单调队列通常解决的是这样一类问题: 有 \(n\) 个数,给定长度 \(len\),求所有区间 \([k,k+len](k+len \leq n,k \in 阅读全文
摘要:
为什么大家都是dp啊,我只会写记忆化搜索。。。 题目简洁明了,考场上看完这道题后我想到了这道题: \(n * m\) 的网格中,小熊从左上角走到右下角,只能向右或向下走,每个格子有权值 \(a_{i,j}\),求出一条路径使路上权值和最大。(大家应该都做过) 转移方程 (我竟然用了dp) :\(f_ 阅读全文
摘要:
这道题题意简单明了,很明显 Marmot 只有两种吃法: 一次吃 1 个 一次吃 \(k\) 个 因此,这道题是一道序列性动态规划。 到这里,我们有两种方法:记忆化搜索与动态规划。 这两种方法的计算式子是一样的:令 \(f_i\) 表示吃 \(i\) 块蛋糕所用的方案数,则: \(f_i=f_{i- 阅读全文
摘要:
1. 前言 树上最近公共祖先(LCA),是一种图论算法,可以快速得到 有根树 中任意两个节点的最近公共祖先。 目前作者已经了解并且学会的有两种写法: 倍增写法求 LCA。 这种写法是最便于新手理解的,也是入门写法。 前置知识:树的基础知识(存储,DFS 遍历),然后只需要学过一小点递推思维即可。当然 阅读全文
摘要:
这道题有一点数学的味道,思路想清楚,代码其实并不难写。 由题意,满足条件的三元组 \((x,y,z)\) 必须满足 \(y-x=z-y\) ,变形可得 \(x+z=2y\) ,又因为 \(x,y,z\) 都是整数,所以 \(x,z\) 同奇偶。又因为 \(color_x=color_z\) ,统计答 阅读全文
摘要:
原题传送门 不愧是 2009 Noip tg T4 ,连续打了4天的代码,吸了口氧才通过。 前置知识: 对于一道数独题,我们可以先预处理出每一行0的个数,然后从个数最少的行开始做,这样可以节省大量的时间(因为这些格子可以填的数字少)。 对于本题,我一开始的思路是:仿照前置知识预处理,分数进行打表,存 阅读全文
摘要:
update 2021/1/19: 原题解部分 Markdown 和 Latex 炸了,现在已经修复。 对题解当中一些表述不明的句子做了进一步的阐述。 更换了码风。 首先,看到这道题在普及组 T3 的位置,我们知道只能是 搜索/图论/DP 三者之一。 再结合数据范围我们就可以 根据个人经验 分析出这 阅读全文
摘要:
前置知识:最小生成树算法(Kruskal/Prim) 例题 算法分析: 这一道题中给出一个无向图,求从任意一点开始经过每一点的最短路径。 既然要经过每一个点,还要求最短路径,算法就是最小生成树了。 我用的是 Kruskal 算法。 有一点需要注意:每条路的长度需要如何计算? 约翰需要经过每一条道路两 阅读全文
摘要:
或许是我太蒟了,想了好久的解法。 此题很明确,我们需要加上若干括号使得最后结果为整数。 明显的,我们在日常的数学计算中,可以发现:设任意分数 \(\dfrac{x}{y}\) ( \(x\) , \(y\) 均为正整数),如果 \(\gcd(x,y)=y\) ,那么 \(\dfrac{x}{y}=x 阅读全文
摘要:
题目大意: 给出 \(N\) 个数,分别为 \(a_1,a_2,...,a_n\) 。将其中任意两个数进行首尾相接组合,每个数只能使用一次,求最大能获得3的倍数的个数。 题解: 此题出现了“3的倍数”,根据数学知识,易得如果一个数的各位数字之和是3的倍数,那么这个数是3的倍数。反过来也成立。 那么, 阅读全文
摘要:
这道题是一道搜索题,一种思路是直接对每一个数做出选与不选的判断,时间复杂度 \(O(2^n)\) 。在这种时间复杂度下,只能通过 \(n \leq 30\) 的数据。 如何进行优化呢?以下是我的优化: 改变搜索顺序。这一道题的输入数据是一个不下降序列,如果我们把小的数放在前面,而 \(C\) 又比较 阅读全文
摘要:
这道题就是并查集的练手好题QAQ 如果对并查集不熟悉的同学可以做一下这道题 来看一下题目: 给出A地区的村庄数N,和公路数M,公路是双向的。并告诉你每条公路的连着哪两个村庄,并告诉你什么时候能修完这条公路。问最早什么时候任意两个村庄能够通车,即最早什么时候任意两条村庄都存在至少一条修复完成的道路(可 阅读全文