- 博客(40)
- 收藏
- 关注
原创 hpu萌新训练赛(三)
这个题目用到了一个东西叫做大数,也叫高精度。可以用 c++ 代码实现,也可以用 python 来实现。这个题目用到了记忆化搜索的方法。如果我已经计算过 w(a, b, c) 了,那我就把他存下来,这样以后就不需要再进行重复计算了。这个题目用到了异或的一个性质,对一个数同时异或两次的话这个数就相当于没有异或。这个题目用到了 map<string, vector> 这个 stl 容器。这个题目直接暴力就行了,不过是浮点数暴力,每次加上 0.01 然后判断这个答案行不行。这个题目用到了离散化和差分。
2025-04-03 20:11:53
262
原创 HPU萌新集训2
这道题目把 y 总的 idx 改成该数的值即可。这个数是多少,它所对应的下标就是多少。我个人认为,这种写法是更加符合实际情况的。这个题目从左到右进行遍历,如果比要变成的值大,就把这些多的给后面的那个数,如果小,就从后面的数要。如果已经是了,那就跳过。注意输入的时候 while (cin >> s) 然后读入每一行字符串。最后拼接起来就行了。这个题目乘一下 然后除以 gcd 即可。注意最后的分母是列,分子是行。这个题目直接用双端队列即可。2.分数差大于等于 2 才能结束比赛。1.分数有一个人大于分制。
2025-03-24 09:05:14
147
原创 hpu集训一场
这个题目用的是一个浮点数二分来进行计算。这道题目我错了很多次。** 原因是我平常使用的取消同步流**这个东西scanf 和 cin printf 和 cout 是不能同时用的。这个题目要存一下投票给的题目编号。用map 存一下,后续遍历一下。然后记录投票数的最大值。然后如果都不是那就让他们加起来 / 3 ,可以把这两个木根和钻石看成一种就行。这个题目首先考虑 x 是 y 的二倍或者 y 是 x 的二倍的情况。全部转化为秒,然后排序之后输出即可。8 是两个圈,看各个位置上的数即可。这个题倒着操作即可。
2025-03-16 19:49:33
249
原创 2025“钉耙编程”中国大学生算法设计春季联赛 - 热身赛
A 的和,B 的和,C 的和求出来之后,可以求出来 x。[xi + 1, xi] 是不包含左边的序列。如果出现 E 那么答案就是s1[i-1][‘Y’-‘A’] * s2[i+1][‘S’-‘A’];可以算一下前缀各个字符的和,后缀各个字符的和。用 dp 来计算一下 YES 和 NO 的和。可以通过求递归来求递归。让金牌的数量加上 min(Ag, Cu) 的数量即可。求 YES 和 NO 的时候实际上是求前缀的和。这种求前缀字符的和和后缀字符的和是非常经典的。[l, r] 是 l, r 的区间和的绝对值。
2025-03-06 21:31:27
452
原创 河南理工XCPC萌新选拔赛
1 2 3 这种情况 2 2,也是 1。所以我们判断这两种情况是 1,其他的话,我们可以证明 2 次一定可以完成。我们可以考虑一种情况,就是你每一次都会取一个。这个题目我们对 n == 1 和 n == 2 的情况进行特判一下。如果 n == 1 的话很容易知道肯定不可以成立的。对于n == 2 的情况。这个题的话主要是考了一个字符储存的问题。1 2 这种情况也是不可以的。1 2 这种情况就是去掉 1 或者 2 都行。哈哈,考试的时候没看题就瞎做,还错了一次。1 2 3 这种情况,就是 1。
2025-03-02 22:25:01
723
2
原创 2025牛客寒假算法基础集训营3
我们可以对序列进行排序,我们要保证最长的一个序列在最后。那们最后的那个最长的序列一定是不用删除的,可以留在电脑屏幕上。所以我们求一下 lcp 然后每一次都是计算一个全部打出来字母的个数然后全部删除字母的个数。至于说中间字符的顺序实际上其实不是很重要,我们只要保证最后一个是最长的就行了。这个题目我们可以考虑一个最极端的情况,就是考虑所有人站在三角形的三个角上。这种情况下就是最大的情况。最小的情况就是没有 n 个这种情况了。这个题目给我们的 n 是 1e18 ,通过玩样例得知,这个是一个很经典的奇偶博弈问题。
2025-02-27 21:44:14
413
原创 牛客寒假训练营 2
我们可以发现,可以控制重复输出的字符来进行构造 t。但是字母一共有 26 个,所以当 n > m + 26 或者当 m == n 时,无法进行构造。寻找这样的一个字串,我们只需要寻找重复出现的个数即可,同时要注意从前往后寻找一下,从后往前寻找一下。** 这个出现时间,我们可以把他们全部转化为秒, mp[x] = 1 ,然后统计 mp.size() 可以统计个数 **对牛妹家的碗的数量进行排序,然后找出一半的那个位置。** 当构造时,我们可以考虑重复构造,有一个小技巧就是 i % (n - m)。
2025-02-25 20:20:21
139
原创 2025牛客寒假算法基础集训营1
先对左边界进行排序然后进行遍历,比如说第一个样例, 1 3 肯定是对应的 1 是最好的,剩下的 1 4 和 2 3 那就相当于是 2 4, 2 3 那这时候要建一个堆来进行排序,对右边界小的先进行 pop,然后记录一下。最小化数组的极差,那么首先想到的是最小值变成原来的 2 倍,那么这样就i会有问题。综上,比如说现在遍历到了 1 ,我们可以把左边界全为 1 的放到小根堆里面,然后进行 pop。如果度数 == 1 说明只有出度,没有入度,或者只有入度,没有出度,那只需要记录一下即可。
2025-02-25 19:41:24
276
原创 [CQOI2009]中位数图 题解
小于b的数改为-1。然后分别从b往左遍历,sum+=a[i],sum等于0的时候它>0和<0的个数都是一样的,中位数肯定是b,右侧也同时遍历。同时加一个num数组,用来记录左侧遍历的时候的和的值num[sum]++.这样可以计算包含左右两侧数的中位数是b的个数。这道题是思维题,奇数个数的中位数肯定是最中间的数,所以我们可以把大于b的数改为1。
2025-01-18 15:26:39
171
原创 字符串的展开题解
a-c-e 这种情况我的代码写不出来,而且我写的又臭又长,后来看了别人的代码用上了二元运算符,写的非常简洁,学习一下。之前写的时候忽略了一种情况是。在此奉上我写模仿大佬写的代码。
2025-01-15 23:24:28
261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人