2024年度第五届全国大学生算法设计与编程挑战赛(春季赛)
H 密码是多少?注意字符串长度都是7样例1
1asdfghj
110210310410697115100
样例2
1qazxcdf
11209910010211397122
按题意模拟即可
1234567void solve() { string s; cin>>s; string t = s.substr(3) + s.substr(0,3); for(auto c : t) cout<<(int)c;}
A 送个分吧样例
12aba4
1b
对于给定的样例,前 4 简单的套题分别为:a、ab、aba、b,故答案为 b。对于 100%的数据,1≤∣_s_∣≤5000,1≤_k_≤5,保证答案存在。
就是在问你字典序第k小的子串s的范围决定了这道题最多只能是$O(n^2)$的复杂度。可以这样考虑,比如对于样例而言,前几个子串一定是a开头的,可以是a,ab,aba。那么猜想前面几个一定是字符串中出现的字典序最小的那个字符的某个后缀,比如最小的是a,第二小的是ab(第一个a后面长度为2的后缀),第三小的是aba(第一个a后面长度为3的后缀)。且 ...
2023JSCPC
这个也是当年的湖南全国邀请赛
I Elevator 电梯里有 n 个人(你是其中一个),这些人想去 m 个楼层, 每个人只想去一个楼层。到达一个楼层,所有想去这个楼层 的人都会下电梯。问在你想去的楼层最多有多少人下电梯。
vp的时候题目根本没读懂,感觉就是输出 n − (m − 1) , 交了一发就过了……
J Similarity (Easy Version) 给定 n 个串,求两两之间最长公共子串的最大值。多测T不超过15,字符串长度不超过50,个数也不超过50。并保证n的总和不会超过300。直接暴力匹配即可。
12345678910111213141516171819202122232425262728map<string,int>f;void solve(){ int n; cin>>n; per(i,1,n){ string s; cin>>s; map<string,bool>vis; per(j,0,s.length()-1) ...
2022SHCPC
N Nine Is Greater Than Ten按字典序比较字符串
12345678910void solve(){ string a,b; cin>>a>>b; int res = a.compare(b); if(res == 0){ cout<<a<<'='<<b<<endl; }else if(res < 0){ cout<<a<<'<'<<b<<endl; }else cout<<a<<'>'<<b<<endl;}
G Gua!题意:给你四个参数B R D S,表示枪的一发子弹造成的最大伤害,射速为每分钟射击R次,玩家一共造成了D点伤害,用时S秒,问你这个人是不是挂。不是很懂为什么签到题出这么细节的模拟……vp爆wa心态都炸了三个细节,第一个是由于时间是从0开始算的, ...
整除分块
好像只能用来解决一个类似于$\sum^n_{i = 1}\left \lfloor \frac{n}{i} \right \rfloor$这样的整数求和问题,只要是带这个的,那么复杂度最低就能降到根号级别的。可以发现,比如n = 8这个求和的每一项是这样的
i
1
2
3
4
5
6
7
8
8/i
8
4
2
2
1
1
1
1
那么就可以优化,把结果一样的放在一起分块处理。分的块大概有$2\sqrt{n}$个,因为当i小于等于$\sqrt{n}$时,取值一共有$\sqrt{n}$种,大于也是一样的
12345for (int l = 1; l <= n; ++l) { int d = n / l, r = n/d; ans += (r-l+1)*d; l = r;}
l和r表示这个区间内的数x除n都是d,即n/x = d,累加即可,复杂度是根号的。
[CQOI2007] 余数求和给出正整数 $n$ 和 $k$,请计算$G(n, k) = \sum_{i = 1}^n k \bmod i$其中 $k\bmod i$ 表示 $k$ ...
13thSDCPC
vp打到后面打不动了,好在压线银牌。
[SDCPC2023] Matching给定长度为 $n$ 的整数序列 $a_1, a_2, \cdots, a_n$,我们将从该序列中构造出一张无向图 $G$。具体来说,对于所有 $1 \le i < j \le n$,若 $i - j = a_i - a_j$,则 $G$ 中将存在一条连接节点 $i$ 与 $j$ 的无向边,其边权为 $(a_i + a_j)$。求 $G$ 的一个匹配,使得该匹配中所有边的边权之和最大,并输出最大边权之和。请回忆:无向图的匹配,指的是从该无向图中选出一些边,使得任意两条边都没有公共的节点。特别地,不选任何边也是一个匹配。
考了个常见的转化:$i - j = a_i - a_j$改为$i - a_i = j - a_j$然后把权值一样的放在一起就行。可以开一个map<int,vector<int>>来存储,并且注意到后面压进去的一定是a比较大的,所以从后往前遍历如果两两配对就能找到最大的。
123456789101112131415void solve() { int n; ...
【LGR-174-Div.2】T2、T3
T2 陌路寻诗礼题目描述帆巨所在的家乡的地图是一张有 $n$ 个节点 $m$ 条有向道路的有向图,每个节点都是一个城市,而帆巨所在的城市是 $1$ 号城市,并且 $1$ 号城市总是可以通过若干道路到达其他任何城市。第 $i$ 条道路从 $x_i$ 号城市出发到达 $y_i$ 号城市,长度为 $z_i$。帆帆现在要从他的 $1$ 号城市前往各个城市面基。精通 spfa 算法的帆帆在面基的过程中自然会按照长度和最短的路径去其他城市。但是帆帆有选择困难症,他希望从 $1$ 号城市到达每一座城市的最短路径都是唯一的,所以他决定施加魔法,改变所有道路的长度,具体地:帆巨施加魔法后,对于每一条道路的长度,都可以 独立地 将其变成一个 $[1,k]$ 范围内的整数,其中 $k$ 是帆巨的魔法等级。但帆巨所在的世界的地图和他的魔法等级一直在变,总共会变 $T$ 次,所以他希望你对 $T$ 次询问都给出一种构造方法使得帆巨不会纠结或者报告无解。
输入格式第一行一个整数 $T$ 表示数据组数。接下来 $T$ 组,每组先是三个整数 $n,m,k$,接着 $m$ 行描述有向道路 $(x_i,y_i)$。不保证 ...
ICPC2023 HangZhou R 签到+铜牌题
The 2nd Universal Cup. Stage 22: Hangzhou结束了,所以可以把题解扔出来了。
题面:
V-Diagram长度为 $n$ 的 $1$ -索引整数序列 $a$ 是V-图,如果 $n \ge 3$ 且存在满足以下条件的索引 $i$ ( $1< i < n$ ):
$a_j > a_{j + 1}$ 用于 $1 \le j < i$
$a_j > a_{j - 1}$ 为 $i <j \le n$ 。
给定V-图 $a$ ,找出具有最大可能平均值的V-图 $b$ ,使得 $b$ 是 $a$ 的连续子序列。序列的连续子序列可以通过从序列的开头和结尾移除一些(可能为零)元素来获得。签到题,题解说二分答案也行,但我做的时候用的是贪心。因为对于一个V图来讲,首先一定要包含最小的那个点,然后就是向左右两边扩展取最大。要求在现行复杂度内通过,所以不能直接暴力解,那么观察性质,由于保证是V图所以这个序列对应的图像的每一段的斜率都大于1,换句话说就是i每次改变1(增加一个数),纵坐标ai变化量至少大于 ...
01字典树
用于接近线性的查询异或相关的问题,如异或前缀和,和别的数的最大异或和等。01字典树是按照二进制下每一位是0还是1将一些数进行分类,每一个结点的左孩子表示当前这一位是0的所有数,右孩子表示当前这一位是1的所有数,这样递归的分下去总可以把所有的数分类完。
如要求每次线性的回答一个数和一个数组中的所有元素的最大异或值,数组范围是2e5:将数组中的所有数类似于哈夫曼树一样·按位建成一棵树,如3(0011),8(1000),5(0101)那么就可以画出一个这样的树:
12345678910 root / \ 0 1 / \ / 0 1 0 \ / / 1 0 0 \ \ / 1 1 0 (3)(5)(8)
那么比如查询这些数和6(0110)异或后的最大值,想要异或完最大,那么就要求每一位都不一样,因为位数越高那么占得权值就越大,所以从前往后贪心,如果树在这个位上有不一样的分支那就往这条分支上走。6的第一位是0,那么要找第一位是1的,查询的时候要选右边的节点,所 ...
根号分治
用来处理一些根号范围以内复杂度高(打表),根号范围以外复杂度低(枚举)的一种暴力思想,一般能做到$O(n\sqrt n)$的复杂度,大多数都是多组数据询问。
P3396 哈希冲突一个长度为n 的序列和m个操作,每次操作可以以下二选一:1 询问下标模x后为y的所有数之和2 修改第x个数n≤150000,m≤150000,元素范围是[1,1000]的整数暴力做法是直接枚举,比如模2后为1的有1,3,5,7…,模10后为1的有11,21,31,41,51…可以发现对于长度为n的,模x后为y的数大概有$\left \lfloor \frac{n}{x} \right \rfloor$个,当x越大那么这个数越小,所以模数越大的可以考虑直接暴力枚举而不会超时,那么问题在于如何处理模数小的询问,当模数小的时候因为余数的范围变小了所以考虑直接先打表预处理出所有的情况,令sum[i][j]表示n个数中下标模i后为j的所有的数的总和,那么可以在O(np)的复杂度内预处理出所有情况,其中p为指定的最大的模数,同时修改也很简单,单次修改的复杂度是O(p):
1234567// 预处理for (int j = ...
hexo+github个人网站开发
23年暑假学git的时候偶然发现github可以托管像hexo这种无后端的博客框架,参考了这个视频BV1st411r7Sj自己搓了个博客。有些东西长久不用就忘记了,写个文档记录一些常用的操作
图片上传像语雀这种存在防盗链机制的文章即使导出的是Markdown格式图片在博客上也是不能显示的,一种简单的方法是在语雀端插入图片的时候不要直接插入,这样图片是放在语雀图床里面的,可以放在别的图床比如https://sm.ms/home/等并将其用图床外链放到语雀写作端就没有问题因为图片并没有存在语雀图床里面。还有一种就是开超级会员获取token,这样就可以不用将语雀上的内容导出就可以在博客上显示。
将博客托管至GitHub参考0成本使用Hexo框架搭建个人博客并托管至Github-Pages/#将博客托管至GitHub
1234cd xxxx.github.iogit add --allgit commit -m "message"git push
pdf文件的插入参考hexo post中pdf文件的插入,下载依赖的时候如果网络原因报错可以加镜像源,参考解决npm下载慢慢慢 ...