04 2020 档案
摘要:传送门:https://vjudge.net/contest/370208#problem/D 题意 给你一个有n个面的骰子,点数由1到n,可以投k次,不一定要k次,最终得分是最后一次的点数,求得分期望。 思路 例如n=20,k=3,在第一次的时候,得分期望为10.5(1到20的平均数),k=2的时
阅读全文
摘要:传送门:https://vjudge.net/contest/370208#problem/E 题意 n个点m条边的有向图,最多删除m/2条边,要求删边后的有向图没有环,求删边的个数和删第几条边。 思路 设u<v的边集为A,u>v为B,我们删去A和B中小的那个边集就行,为什么呢?我们来看环的形成比如
阅读全文
摘要:题意 有n个人编号从0到n-1,有m个小组,输入m行,每行一个k代表本组人数,后面k个数字为本组人员编号。0号人是感染者,通过组能和0号人接触的人都会被感染,求总感染人数。 思路 把每组人都用并查集合并起来,然后从0到n-1看每个人的老大是否和0号人的老大相同,相同证明在一颗树里面,即题意的接触,a
阅读全文
摘要:组员与分工 数据库构思:郭嘉鸿 游戏机制的构思:黄啸宇 代码:黄嘉骏 E-R图 数据的插入 角色: insert into 角色 values('12345','54321','潘森'); insert into 角色 values('00000','001122','伊泽瑞尔'); 角色属性: i
阅读全文
摘要:题意 给你一串长为n的序列,给你一个整数k代表窗口的长度为k,从序列左端到右端,你需要找到每个连续的长度为k的区间的最小值和最大值 思路 如果暴力来做,遍历n次k个数,那就是n方的复杂度;如果维护一个线段树那就是nlogn,每个数只被插入一次和删除一次。 我们可以维护两个单调队列,单调递增队列用于计
阅读全文
摘要:简述 单调队列顾名思义就是具有单调性的队列,分为单调递减队列和单调递增队列两种,单调队列是特别的队列,它可以在队尾入队,队头出队,还可以在队尾出队。 思路详解 以单调递增队列为例,当有一元素设为x要入队时,比较x和队尾元素的大小,若x大于队尾,则直接入队,否则队尾元素出队,直到x大于队尾元素。 代码
阅读全文
摘要:题意 给你n头牛的高度,每头牛朝向右方,只能看见小于自己高度的牛,当有一头牛的高度大于等于自己时包括这头牛之后的牛也看不见。求所以牛能看见牛数量的总和。 思路 问题可以转化为每头牛被看到的牛的数量的总和,我们可以维护一个单调递增栈,当一个元素x即将入栈时,栈内元素个数就是在左边比他高的牛的数量,且这
阅读全文
摘要:简述 单调栈指栈内元素具有单调性的一种栈结构,该结构和普通的栈类似是后进先出,但栈内元素严格单调(相等也不行)。 思想实现 我们用递增栈(指栈顶到栈底为递增)作为例子,设当前元素为x,栈顶为top,当x<top时,直接进栈,不影响栈的单调性。当x>=top时,让栈不断出栈元素直到满足x<top。 代
阅读全文
摘要:传送门:https://vjudge.net/contest/361562#problem/C 题意 多组样例,给你一个串s和串t还有一个空串x,要求往x里添加s的子序列,使x变为t,求添加次数。 思路 使用序列自动机狗仔串s的nxt数组,把整个t串进行匹配,当失配的时候,把前面已经匹配成功的部分当
阅读全文
摘要:简述 序列自动机是一个能快速判断一个串t是否为另一个串s的子序列的算法。对于串s构造序列自动机,本质上就是预处理出一个nxt[][]数组,nxt[i][j]代表从第i个位置开始,字符j出现的第一个位置的下一个位置。 代码详解 构造 复杂度O(lens) 对于nxt数组的构造本质上就是一个dp的过程,
阅读全文
摘要:简述 权值线段树是线段树的一种,可以实现平衡树的基本操作,权值线段树的节点维护的是这个区间的数的出现次数,例如区间序列为1 2 2 3 3 3,那么该节点的值为6。权值线段是可以在logn的时间内求出全局的k小值,某数在全局的rank,一个数的前驱或者后继。因为是线段树的一种所以思想也是二分,其本质
阅读全文
摘要:传送门:https://codeforces.ml/contest/1330/problem/B 题意 给出一个长为n的序列,要求把它分成两部分,两部分均为一个连续的自然数列,问能有几种分法,给出分出来的两部分序列长度。 思路 设这个序列最大值为ma,那么必定有一部分的长度为ma,因为是自然数列数应
阅读全文
摘要:前言 我们在初学matlab的时候经常会苦恼一个东西就是在命令窗口写代码时一旦按下回车键之后就不能更改了,之前写的if什么的如果粗心写错了就不能改,之所以不能改是因为matlab的语言是一种解释性语言,何为解释性语言,就是指代码一边输入一边执行的语言。所以之前敲过的代码已经被执行了不能修改。今天我们
阅读全文