- 博客(13)
- 收藏
- 关注
原创 2020多校补题
文章目录牛客1AHI牛客2AB牛客3DEF牛客1A1.性质求出每个后缀对应的b数组,会发现:后缀的b数组,就是在原字符串的b数组的基础上,把一些值改为0。2.分类讨论进一步分析发现b数组中,最多存在两个0,所以只要根据0的位置,来判断两个b数组的大小,最后通过改写比较级进行排序就可以了。3.后缀数组分类讨论时发现要比较两个后缀的大小,这时就可以套用后缀数组的模板,得到排名,来比较大小。H1.判断是否合法先计算容量为1时的最大流m,当容量变为u/vu/vu/v时,最大流变成m∗u/vm*
2020-07-19 16:08:41
386
原创 Codeforces Round #645 (Div. 2) E. Are You Fired?(递推)
题目链接传送门题目大意一个数组aaa,有nnn个元素,前⌈n2⌉\lceil \frac{n}{2} \rceil⌈2n⌉个元素是通过一一输入得到的,后⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n⌋个元素全都为xxx,是通过输入xxx得到的。现在要求一个符合题意的kkk:所有长度为kkk的区间,区间和都要大于000题目分析首先要得到一个结论:k>⌊n2⌋k > \lfloor \frac{n}{2} \rfloork>⌊2n⌋,简易证明:假设kkk
2020-07-09 23:59:52
747
原创 Educational Codeforces Round 88 E. Modular Stability(构造)
题目链接传送门题目大意给出nnn和kkk,计算有多少个数组大小为kkk,数组的值在[1,n][1,n][1,n],且数组元素严格单调递增的“稳定”数组。稳定数组的定义:对于任何非负值xxx,满足:无论如何打乱数组aaa中的元素,x%a1%a2%...%akx\%a_1\%a_2\%...\%a_kx%a1%a2%...%ak的值始终保持不变。题目分析关键思路:枚举xxx,构造出符合题意的aia_iai。具体思路:假设数组aaa中的最小值为amina_{min}amin,则对于x∈[
2020-06-08 12:31:18
171
原创 Educational Codeforces Round 88 D. Yet Another Yet Another Task(枚举)
题目链接传送门题目大意选一个区间[l,r][l,r][l,r],使得∑l≤i≤rai−maxl≤i≤rai\sum \limits_{l \le i \le r} a_i - \max \limits_{l \le i \le r} a_il≤i≤r∑ai−l≤i≤rmaxai最大。题目分析自己的分析:自然的想法就是枚举最大值aia_iai,然后看看最大值能延伸的最左边和最右边(单调栈解决),最后再用某数据结构得到区间内的最大子段和。可惜这个数据结构我不知道怎么维护(网上好像用线段树
2020-06-08 00:12:00
146
原创 Codeforces Round #646 (Div. 2) E. Tree Shuffling(树上贪心)
题目链接传送门题目大意一颗大小为nnn,111为根的树,对于每个点,有:花费aia_iai,原二进制位bib_ibi,目标二进制位cic_ici。现在要完成的任务就是:进行多次的操作,使得bib_ibi等于cic_ici。操作:可以从结点uuu为根的子树中,选出任意kkk个结点,然后可以自己排列这kkk个结点的bib_ibi的值(即安排这些值放的点的位置),代价是k∗a[u]k*a[u]k∗a[u]。问:要找到最小的代价总和,使得bib_ibi等于cic_ici。题目分析代码
2020-06-04 10:40:39
134
原创 Educational Codeforces Round 87 D. Multiset(二分)
题目链接传送门题目大意给出一个集合(允许元素重复),大小为nnn。有两种操作:添加一个元素kkk到这个集合从集合中删除第kkk小的元素根据输入执行完所有的操作后,输出任意一个存在于集合中的元素,如果集合为空,则输出000。题目分析第一种做法:用数据结构:权值线段树 ororor 平衡树 ororor 树状数组,但是可能会超时,因为nnn的范围:[1,106][1,10^6][1,106]第二种做法:因为题目只要求:输出一个元素。所以,我们尝试寻找:经过一系列操作后,在集合中的最小元素。
2020-05-24 13:27:29
214
原创 acm做题经验总结(二):枚举与递推
枚举某个量例1: 计算数组中的最大值思路:循环遍历数组,每个值都尝试一下。答案显而易见。这几乎是最简单的枚举。从中可以得到枚举的一般思路:把所有的情况都试一遍,然后取符合要求的那一个(一般可以贪心)作为答案。同时,我们也可以从“递推”的角度,思考这道问题的解决方式:假如已经知道前i−1i-1i−1项的最大值为ansansans,现在,要得到前iii项的最大值,是不是要和数组的第iii项...
2020-04-06 00:05:59
529
原创 acm做题经验总结(一):开始
前言缘由虽然标题是做题经验总结,但是,这同时也是我的做题思路总结:为什么这道题要这样想?怎么想到这样解决的。其实我在大一刚学完各种算法后,就有这种疑惑:如何找到正确的解题思路。当然,有人会说,直接做多一点题就可以了。对,没错,事实的确如此,拼命做题是最暴力的方法。但一定高效吗?不一定。自己做题时往往会发现这样的问题:自己看完这道题,感觉好像有点思路,应该是套这个算法,但是想了想又对劲,之后又...
2020-04-06 00:04:08
433
原创 acm中常用的C++语法和特性
输入和输出:头文件和名称空间(不懂百度或直接复制代码,只是格式而已)#include <iostream>using namespace std;输入输出语法:int a; //或是long long a; double a; char a[10]; 等等,总之不需要像c语言一样要占位符cin >> a; //输入cout &
2019-01-29 18:00:08
720
原创 递归的应用:dfs
递归递归是什么?绝大部分人都会说:自己调用自己,刚开始我也是这样理解递归的。确实没错,递归的确是自己调用自己。递归简单的应用:编写一个能计算斐波那契数列的函数,也就是这样:int fac(int n){ if(n == 1 || n == 2) return 1; return fac(n-1) + fac(n-2);}相信绝大部分人都能看懂这段代码。递归除了可以用自己调用...
2019-01-29 16:54:49
1122
原创 浅谈二分~~
引入大家小时候应该玩过这样一个游戏:小伙伴心中想一个1-1000的数,然后另一个小伙伴猜这个数是多少,每次小伙伴回应这个猜的数是比实际的数大还是小,最后肯定能在十次以内找到这个数。在这里就是用到了二分的思想:折半查找,每次找那个数时都取区间的一半,比实际的数要大,...
2019-01-27 16:54:56
250
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人