03 2020 档案
摘要:题面传送门 直接暴力,判断当前点和下一个单位时间有没有石头,并且当时间时就跳出。 为什么是呢? 考虑极端情况,一块石头在的位置,如果这块石头掉到底部要单位时间,然后如果现在再开始走,走到终点要个单位时间。 代码实现: #include<cstdio
阅读全文
摘要:题面传送门 显然这是一道水题,难点在建边。 题目中给三个点求另一个点,那么只要找到对角线,然后把另一个点对称过去就好了。 代码实现: #include<cstdio> #include<queue> #include<cmath> #include<cstring> #define mi
阅读全文
摘要:题面传送门 这次重考的题目也太水了点吧,完全比不上原来的。 题目要求拆除的边数最多,那么要留下的边数最少。 那么这样的话到和的路程中最好有一部分是重叠的。 而到和的路程均为一条链,这两条链可能有一部分是重叠的。无论重叠也好,不重叠也好,总会
阅读全文
摘要:题面传送门 运用集合思想,用总集减去补集得到所求集合。 总共的点个数减去平行于坐标系的三点共线减去斜边三点共线。 斜边三点共线:枚举一个点,算出他与原点中间点的个数,再把这条线分别向上向右平移, 分别减去。 代码实现: #include<cstdio> using namespace std; in
阅读全文
摘要:题面传送门 排列组合题。 总共有 个点, 条边,所以要删 条边。每个五边形要删一条,中间的还要删一条, 所以是 。 可以用快速幂实现。 代码实现: #include<cstdio> using names
阅读全文
摘要:题面传送门 对于这道题,用递推的思想。 设表示这个数的拆分的值,那么考虑一下,除了自身的拆分,其他拆分一定是,其中是一个多数组成的集合,而是一个单个的数,然后问题就变成了怎么求这个集合的拆分的答案。因为这是递推
阅读全文
摘要:题面传送门 既然是算期望,所以可以用来求得。 把这道题抽象成一个模型,个节点是在个节点的树上再挂一个节点,那么就会有两种情况:加一个点与不加点,这就是卡特兰数模型,所以可以用通项公式。 所以带进去可得 \(ans
阅读全文
摘要:题面传送门 首先一段告诉我们这条线任意三线不共点,任意两线不平行。 所以这个图像可以反过来。 那么第一层一定是段,一个焦点。 第二层那一个焦点可以延伸出个焦点,所以有四段。 以此类推。 而又因为它可以反过来,所以应该考虑两种情况。 代码实现: #include<cstdio> #d
阅读全文
摘要:题面传送门 这题因为他只能对头尾两个进行操作,所以根据分治思想,只要考虑头尾两个就好了 代码实现: #include<cstdio> #define abs(x) ((x)>0?(x):-(x)) using namespace std; int t,n,a[100039],flag,tot,ans
阅读全文
摘要:题面传送门 也很简单,统计二进制下有几位就好了(即) 代码实现: #include<cstdio> using namespace std; int m; int ans; int main(){ scanf("%d",&m); while(m){ m>>=1; ans++; } p
阅读全文
摘要:题面传送门 简单博弈论,直接判奇偶就行了 代码实现: #include<cstdio> using namespace std; int n; int main(){ scanf("%d",&n); while(n){ if(n&1) printf("Bob\n"); else printf("Al
阅读全文
摘要:题面传送门 对于这道题,明显可以,将一张表预处理出来。 我们可以设表示左下角为右上角为,切大小为的,转移时横竖各枚举切分点与的分配转移,时间复杂度 不过我们发现,实际上这道题任意大小一
阅读全文
摘要:题面传送门 这道题一眼就是二分,重点是函数怎么写。 分思路:把所有点按权值排序,每次枚举大于的点,枚举对角线并进行判断,一有满足条件的就退出,期望复杂度,咋一看复杂度比暴力还高,但在随机数据下摊还分析一下只有$O(nm\s
阅读全文
摘要:题面传送门 这道题到现在为止还只有我一个人做出来,还是蛮高兴的 算了不说了,再说分的会把我用唾沫星子淹死我的 想法:暴力枚举:枚举四个点,求这四个点之间的欧几里得距离,看是否相等,相等即构成一个正方形。大概分。 想法:构造:枚举三个点,构造出第四个点,看
阅读全文
摘要:题面传送门 链表,顾名思义,就是一根链,由许多节点构成,每个节点分为两个部分:数据域和指针域,其中数据域可以包含很多数据,指针域只能包含一个指向对象,不然就成图了。链表可以插入和删除数据,但不能随机访问元素。 链表实现就不再乱说了。毕竟是个人都会。主要讲一些链表的应用。 这道题很简单,只
阅读全文
摘要:题面传送门 题目描述:给定一个标准串,再给出很多串,问是不是的子序列。 方法一:最长公共子序列(太无脑了) 方法二:首尾一个一个对过去比较 方法三:链表 对于每个,令指向下一个与值相同的位置。 我们在匹配子序列时,对于一个,原本我们要一
阅读全文
摘要:题面传送门 话说这不是一张真正的图啊,只是一根链表后面挂着一个可有可无的环儿。 一眼扫去,这道题如果没有环,那么就是记忆化搜索或,但有环,就不好办。 根据亡羊补牢原则,我们把这个环拆了不就好了。 接下来就可以缩点。即把一个环变成一个权值为这个环的权值之和的点。 我们可以把那些绕在环上的链
阅读全文
摘要:题面传送门 按照题目要求递推即可 代码实现: #include<cstdio> #define min(a,b) ((a)<(b)?(a):(b)) using namespace std; int n,f[10039],a[10039]; int main(){ register int i,j;
阅读全文
摘要:题面传送门 一看到最大最小值,而且是区间,立马想到两个东西:和单调队列。这里介绍一种表的做法。 但这可是二维,我们只学过一维的。 回想一下之前的前缀和和差分,我们是怎么一维转多维的。 维恩图! 首先是建表,肯定还是拿来拼,四个小正方形拼一个大正方形。 设
阅读全文
摘要:题面传送门 题意简述:给定,且,,各不相等且都为正整数,求任意一组,,。 暴力即可,将分解质因数后再分解一次就可以了,注意两次分解不能重复。 代码实现: #include<cstdio> #incl
阅读全文
摘要:题面传送门 给出与 个特殊点的坐标 。 从 出发, 只能向上和向右移动,求最优路径,或告知无解 首先最优化排序,使得其按升序,相同以升序。排好后检查是否全部升序,如果全部升序那么机器人一定可以到达,反之则不能。 那么从
阅读全文
摘要:题面传送门 简单题哈,简单题。 我们二分能组成的套数,再遍历一遍找到答案。若答案大于,那么收拢右边界。如果答案小于,那么收拢左边界。 代码实现: #include<cstdio> using namespace std; int n,m,a[139],l,r,mid,b[139]; lo
阅读全文
摘要:题面传送门 看到这道题,想到。 但这道题好像故意的,偏偏又路牌被拆的道路(在衢州的话负责那一段路的交警就该下台了), 所以我们不能只以为的唯一标准。 想象一下:如果下一条路是没有路牌的,而这时过来一条路,比大,但如果下一条路可以走得通怎么办?而
阅读全文
摘要:题面传送门 这道题似乎是板子,就是裸的,然后我就打了个暴力过掉了。 思路:先把两个点提到同一层,然后一起向上提,直到提到同一个节点停止,计算答案。 因为是满二叉树,所以时间复杂度 代码实现: #include<cstdio> #define abs(x)
阅读全文
摘要:题面传送门 这道还是比较水的 首先考虑设为以结尾的最长长度,则向前循环枚举找到适合的转移就可以了,时间复杂度,估计分 正解也不是很难想,因为这是位运算,所以我们要找到位运算的性质,的性质就是两个数至少有一个相同位置同为,那么只要枚举位置
阅读全文
摘要:题面传送门 三十分...... 于是我只能重新想思路。然后就只得了分。 考试结束后老师叫我们自己去网上找题解,然而我发现,居然没有任何一篇题解是正解。于是我准备发一篇题解来掉所有题解。 正解: 我们先把这个峡谷想象成一个时间轴,每个时间我们最多能带c个糖果。
阅读全文
摘要:题面传送门 平生第一次切题祭 其实这道题主席树也可以做,但是我不会,所以只好用莫队水过 对于这道题,维护一个栈,栈中表示的是当前区间内个数为的元素,再设表示这个元素在栈中的位置,来了一个数时,若是第一次出现,加入栈中,若是第二次出现,把栈中的这个元素与栈顶互换位置
阅读全文
摘要:题面传送门 这道题可以说是这几天来的最简单的一道题了。 首先,我们根据题目有一个最简单的结论:当一个女的前面的女的全都配对完之后,这个女的一定和离她最近的男的配对。 那么直接开栈模拟不就好了! 代码实现: #include<cstdio> using namespace std; int n,m,a
阅读全文
摘要:题面传送门 这道题的是很好想的,只要从上一行的可以转移的位置转移就好了,时间复杂度,可以有分 接下来要优化,有两种思路 思路一:按照上面的状态,我们发现有一个区间求最值的复杂度,考虑用单调队列优化掉,因为这个区间向两边延伸,考虑用正反两次单调队列过去,每次
阅读全文
摘要:题面传送门 对于这道题,我们很容易想到分层图(大概是因为那道分层图优化成矩乘太出名了),则这道题只需要建两层就够了,一层表示横的,一层表示竖的。 首先思考两层图之间怎么连接,很明显,由本层的点向下一层的同一节点建一条双向的边权为的边 其次思考同一层图中怎么建边,我们可以用两个来
阅读全文
摘要:题面传送门 对于这道题,我们有一个显而易见的结论:当两条线分别为,,,时,且或时这两条线相交 从这之中又可以推出一个定理:若我们按照左边的顺序依次选了条线互不相交,其下标记为$s_1,s_2....
阅读全文
摘要:题面传送门 贪心一般和排序逃不开关系。这一道题目是普及组原题的弱化版。 首先我们列出答案的式子 乘法分配律,\(ans=\sum\limits_{i=1}^{n}{(a_i\times b_i+a_i\times
阅读全文
摘要:题面传送门 算法简介:二分查找(答案),时间复杂度.可以在一个有序表中快速查找某个数。可以利用这个性质来二分答案来做到快速有效枚举。 算法实现:对于一个有序表,二分查找一个数是否存在。 首先定义边界值:,;然后取中值$mid=\
阅读全文
摘要:今天的模拟赛,最后一道题让我们抓耳挠腮了好长时间。这道题看似能贪心(分),又好像能搜索(分),其实就是,一道背包的变体,问题中一个人要么到一边,要么到另一边。这不就是背包嘛!不过还要控制人数。 下面有一个在上过的,但是被民间数据hank掉的
阅读全文
摘要:马拉车算法是一种计算最长回文子串的算法,以其优秀的线性复杂度闻名于世,相较于的算法和会被特殊数据卡到的暴力算法,马拉车算法无疑是求解最长回文子串的最优选择。 最长回文子串分为偶数串和奇数串,为了避免这些问题,马拉车算法将每个字符与字符间插入一个特殊字符,在两头插入
阅读全文
摘要:题面传送门 很明显,第一题的老套路:构造题,只可惜这道构造题不太好,连暴力都能 我们来尝试构造一下,题目要求构造出和使得,既然有了公约数,那我们就很容易往互质那方面想了,如果,互质,那么原式变为,只要解这
阅读全文
摘要:题面传送门 这道题一眼就是排序,但的复杂度过不去(:但有人卡过去了),所以我们要换一个思路 事实上这道题我有一个奇葩想法,居然拓展出了图论模型...... 好吧,既然这样,我就来讲讲。 题目中要我们求最长连续数列,那么这个最长连续数列一定是一条链的关系:扣着
阅读全文
摘要:题面传送门 这道题首先要有一个思维的转换:对于选择满足 的任意下标 ,并让数组里下标为处的值变为。把赋值的思维转化成选择一个下标,把除了这个下标的所有值加到它身上 这道题正着想很难想,俗话说得好,正难则反,所以我们不如倒着做 对于已经构造好的
阅读全文
摘要:题面传送门 其实个人感觉这道题如果能用莫队过评分偏高(如果您是主席树大佬当我没说) 这道题用莫队怎么过呢? 我们可以分析一下式子 我们以代表区间内颜色为的袜子有几双,那么答案是$\dfrac{\sum\limits_{\dfrac{a_i*(a_i-1)}{2}}}{\dfrac{(
阅读全文
摘要:作为一名从小学就开始为奋战的,看到这一段话时,老泪纵横 终于结束的起点 终于写下句点 终于我们告别 终于我们又回到原点 …… 一个个 的竞赛生涯总是从一场开始,大多也在一场中结束,好似一次次轮回在不断上演。 如果这次
阅读全文
摘要:题面传送门 看看像个图论,实际就是图论。仔细推几个样例就可以发现,这与奇偶数有关。而题目中又明显强调 编号。某些工人之间存在双向的零件传送带。保证每两名工人之间最多只存在一条传送带。 于是我们可以用求出点到其他点的奇偶最短路,然后当想生产时,首先
阅读全文
摘要:题面传送门 说实话,又抄袭原题惹。而且居然是这道题的弱化版。不应该像是这样的原题的稍微弱化版吗? 言归正传,这道题看似像模拟。又可以爆搜,不过复杂度太高。也太难打,所以略微思考一下,打了一个五重循环的。看看太恶心,再加上样例也没过,于是就放下了。打了一个贪心保底: #include
阅读全文
摘要:题面传送门 这道题是一道简单的模拟......首先我们要感谢可爱的的库,使得我们可以不用写循环队列。尽管这道题根本不用循环队列。我们开一个数组来表示这个队列,其中这是个双端队列。当我们碰到一张票时,我们就把他加入这个队列中,当我
阅读全文
摘要:题面传送门 这道题。。。。。。 对于的数据,保证输入的字符全部为。 我们可以正解骗分对不对?写一行;就有二十分对不对?那那些爆零的同学。。。。。。看一下骗分导论 不过我相信,真正的大佬是不用上面的做法的。 其实,直接模拟呗。 先走一遍数组,找到
阅读全文
摘要:题面传送门 对于这道题,我们很容易想到一个办法:搜索!你试试看 可是看到对于所有数据 应该就怂了。过不去! 细心观察 如果剪刀石头布三者都有,那么就会决不出胜负。 不不不不 还有一样我们没考虑 :每个人出的都一样! 那加个三不就好了! #include<bits/s
阅读全文
摘要:我在考试的时候看到了这道题,在一瞬间就蒙逼了,这是什么题?(请原谅我的智商)于是懵里懵懂的打了个(电)(风)(扇),结果连样例都没有过。(毕竟才学搜索没多久嘛,也就两年)。再一看,看出了田忌赛马的味道,原来是这样!立刻打了个贪心信心满满的交上去。 #includ
阅读全文
摘要:题面传送门 说实话,在做这道题的时候真的没想到(因为不怎么会),想到贪心,递推什么的。后来一看,差不多的复杂度,于是写了个。打了个板子,额......,居然了!不知道是板子错了还是打挂了!考试时只得了分。 #include<cstdio> using n
阅读全文
摘要:题面传送门 这道题真是个裸题呀,裸的加一点点小优化居然还是绿题,真不知道是怎么想的。 上代码: #include<bits/stdc++.h>//头文件不解释(那前面的是什么?) using namespace std; int n,m,k,z[
阅读全文
摘要:题面传送门 其实这道题是贪心+模拟。 如果这道题连搜索都没过的,看看江风扬的题解吧。 好!开始进入正题。 先给你们一段代码: #include<cstdio> #define maxn 30 using namespace std; int n, a[maxn], ans = 2147483647,
阅读全文
摘要:题面传送门 算法简介: 分块主要是一个修改,维护区间的东西,它可以做到一边修改一边查询,区间修改 , 区间查询 ,单点修改。 算法实现: 初始化:首先要把基本数组(以下简称 数组,长度为$n
阅读全文
摘要:题面传送门 看到这道题,暴力应该是很好打的,爆搜出放一件物品前要拿走多少,然后就记忆化出了:设为放到第个物品,锅内加上当前还有件物品的最大总和,那么状态转移方程应该是,其中表示没有拿走件物品时
阅读全文
摘要:题面传送门 首先,我们看到一个庞大的式子,好怕怕! 经解读,这就是所选的点权加上两个点都是自己的点围成的边的边权。 那么不就好做了,贪心!能拿点权大的点就拿大的点! 代码实现: #include<cstdio> #include<vector> #include<algorith
阅读全文
摘要:算法简介:是一个经典的动态规划问题,是可以时间求静态区间最大值的东西, 不过需要的预处理 算法实现:我们定义表示以为起点,向后个数中最大值。两重循环,一重枚举,一重枚举那么可以得到状态转移方程:$f_{i,j}=
阅读全文
摘要:第一次在家里打大型正规比赛(除外),慌得一批,看着家里的系统......八点半开赛,结果的阿里云卡崩了,等到九点钟才进去。第一题:这不是的原题改编吗,我刚做过这类的题目,啊等等,好像不太一样......跳了第二题:大模拟啊,$O(n^
阅读全文
摘要:题面传送门 莫队,由原国家集训队队员莫涛同学提出的一种优雅的暴力,在分块的基础上以的均摊复杂度维护大量的区间信息(这里的大量,意为每个节点有很多信息,并非多次询问)。因其思路清晰,代码简单,变化多样,维护区间信息多样化,成为数据结构题的骗分神器,也成为了各大数据结构比赛的一大考点
阅读全文
摘要:题面传送门 的题目好水啊...... 也许一眼就是个线段树吧......反正我一眼没看出来。 第一眼暴模,第二眼差分,第三眼才线段树,也许是我太菜了吧。 线段树倒不错,可是数据有点大,呢,线段树四个数组,每个范围
阅读全文
摘要:题面传送门 很容易看出这是一道线性规划(虽然感觉本质上线性规划不应该单独被列出来) 数据范围提示我们,这道题要用的算法 而状态转移是很容易发现要两个状态:当前所在的点(这是一般线性规划的套路)和这个等差数列的公差然后就可以很容易地得到单调不递减的等差数列的状态转移方程:\(f_{i,j
阅读全文
摘要:题面传送门 算法简介:树状数组是一颗类似于树的数组,他虽然画出来是一棵树,但在实现中还是一个数组,它可以维护具有传递性质的信息,比如区间和,区间乘积等。他可以查询的信息。他支持单点修改,单点查询与区间查询,区间修改较为繁琐,需要用到差分数组,他的复杂度是查询,修改$o(
阅读全文
摘要:题面传送门 线段树每个根节点管理下面的两个叶子节点,线段树的每一个节点都分管区间,其中若根节点分管区间是,,那么左儿子区间为,,右儿子分管区间是,. 我们定义数组,以表示这个节点所管理的区间统一
阅读全文
摘要:题面传送门 不想另外写题解了,就拿这一篇的解题报告代替吧。 哈希(顾名思义),是由英文音译过来的,主要用途是将数值很大的数存下来并在调用时实现数组下标查询,一般用一个哈希函数来实现,主要方法有运算。 哈希冲突:定义但,
阅读全文
摘要:题面传送门 对于这道题,其实题目很简单,暴力很好打。 想法:对于每组输入数据,暴力判断两重循环枚举,一重循环计算组合数。时间复杂度,大概分 想法:把每组数的组合存下来,直接调用。时间复杂度大概分。 想法:既然直接算组合数会爆精度,那么
阅读全文
摘要:题面传送门 首先明确,这是一道差分裸题,不要被它的蓝标签吓到。 算法简介:差分是一种和前缀和类似的数据结构,毕竟在差分过程中要进行前缀和,所以前缀和是差分的基础。差分能做到修改,但要查询,适用范围不如前缀和。差分适合查询极少,修改大大多于查询的题目。 算法实现: 首先我们定义
阅读全文
摘要:题面传送门 算法简介:前缀和是一种十分基础的数据结构,它与树状数组功能类似,可以维护可以区间相减的信息。预处理,并能做到查询复杂度。不支持修改,若修改须重构整个前缀和数组。 算法实现:我们需要一个前缀和数组与基本数组,定义为
阅读全文
摘要:题面传送门 这道题可真是一道模拟题。按照题目思路稍微做一点改动再用一个简单的数据结构优化就可以过了。。。。。。真的发现考试时脑抽了,居然连暴力都没打出来,只拿了十分。 暴力代码: #include<cstdio> #include<algorithm> #define max(a,b) ((a)>(
阅读全文
摘要:题面传送门 又是一道堆的题。最近几天快被数据结构逼疯了。 首先我们有一个定理: 解法一: 我们先来看一份的暴力代码: #include<cstdio> #include<algorithm> using namespace
阅读全文
摘要:题目传送门 //为啥题目名称叫最小环但题目要求最大环啊!! 作为一个在考场上差一点切掉这道题的蒟蒻,我还是来发个题解说一下 这道题考的东西还是蛮多的,有思维,前缀和,数论,找规律 暴力很好打,有分,爆搜即可 然后思考正解,对于一个,我们讲每个与建边
阅读全文