算法分析设计课复习补充 复杂度的严谨定义复杂度有三种表示:$O,\Omega,\Theta$ 其中 $O$ 表达的是上界,定义为: 函数复杂度 $f(n)= O(g(n))$,仅当存在一个边界 $n_0$ 和常数 $c$,使得对于所有$n>n_0$,满足 $f(n)\le cg(n)$。 这个定义有极限的想法,我们可以得到 $2n^2=O(n^2)$,也有 $2n^2=O(n^3)$, 2022-06-07 笔记 #算法理论
字符编码 不得不花时间重新理一遍,太乱了 仅个人理解,未经求证,警惕 总览 在C++中直接用 “” 来包裹字符串,它相当于是什么编码? 就是你这个cpp文件的编码,例如用GBK格式编写代码后运行,"strlen("中文")" 的值为4;在utf-8格式下编写运行 这个值就为6 路径字符串用什么编码能正确打开文件? windows下是GBK,因为windows系 2022-05-04 笔记 #字符编码
Codeforces Global Round 20 A-F,H 连续一个月掉小分,这把终于上大分了 好耶! A. Log Chopping 题意:现在有 $n$ 个木棍,第 $i$ 根长度为 $a_i$,Alice和Bob两人轮流操作,可以选择一根木棍将其切成两半,且两半的长度都需要是>1的整数。最后无法操作的人失败,问谁获胜。 虚假博弈,显然能切的次数是固定的,最终会全变成长度为1的木棍,判断能切的奇偶性即可。 int n, m; void sol 2022-04-23 题解 #codeforces #题解
Codeforces Round 783 div.1 ABC (div2.CDE) A. Make it Increasing 题意:给出一个整数序列 $a$,现有另一个全为0的序列 $b$,每次操作可以选取一个位置,使得 $b_i$ 加上或减去 $a_i$,问最少多少次操作可以使得 $b$ 序列严格递增。数据范围 $n\le10^3$ 数据范围允许我们考虑 $n^2$,首先可以贪心地想到,肯定会有一个位置保持为0,那么就可以枚举这个0的位置,然后往两边贪心即可。 int n, 2022-04-20 题解 #codeforces #题解
2022浙江省赛总结 好耶! 进大学第一把济南后 空间发了块铁锭,于是呼应一下 开局队友把三个签到题(ABC)都1A了,只有我写L先看假题愣了一会,又数组开小wa一发,然后忘记sort又wa一发,3A(或成为本场最高罚时) 这时榜上中间区域一片空白,于是开始找题做,先读D再读了E,跑过苦痛之路的我一眼读懂了E的题意,然而不会 然后队友喂了M题意,感觉是个恶心的模拟,但仔细一想发现其实只需要统计黑色块个数和白色块个数 2022-04-16 总结 #省赛
树剖/dsu on tree/线段树合并【雨天的尾巴】 [Vani有约会]雨天的尾巴题目链接 一道好板子 甚至能当三个板子( 树链剖分vector<int> add[maxn], del[maxn]; vector<int> vp[maxn]; int dep[maxn], siz[maxn], son[maxn]; int fat[maxn], top[maxn]; void dfs1(int p, int fa, int 2022-04-13 题解 #板子 #数据结构
Atcoder Beginner 246 EFG E - Max Min 题意:给出一个序列,问有多少个子区间满足 $max=X$ 且 $min=Y$ 我的解法(下面还有另一种神仙解法: 枚举区间的左端点,然后二分区间的右端点,二分两次,分别找第一个使得区间max>X或min<Y**的右端点,和**第一个使得区间max>=X且min<=Y的右端点。简单来说就是找第一个达到要求的位 2022-04-11 题解 #题解 #Atcoder
Educational Codeforces Round 126 A-F A. Array Balancing 题意:给出序列 $a$ 和 $b$,可以任意交换相同位置的 $a_i,b_i$ ,求 $\sum|a_i-a_{i-1}|+|b_i-b_{i-1}|$ 的最小值 显然,把小的放一边,大的放另一边一定最优。 int n, m; int a[maxn], b[maxn]; void solve(){ cin >> n; 2022-04-10 题解 #codeforces #题解
Codeforces Round 781 div.2 CDE C. Tree Infection题意:给定一棵树,一开始所有节点都是未传染的状态,接下来每一秒,可以手动传染一个新节点,同时已经被传染的节点会传染它的一个兄弟节点。问最短多少秒能够传染所有节点。 首先容易发现,这个树并没有什么用,我们可以把连同一个父节点的点分成一组,组与组之间是无关的。 看起来是个简单题了,$n$ 秒内一定能传染完,那么模拟即可。然而这个模拟还是有点恶心的,不要想 $O(n)$ 2022-04-09 题解 #codeforces #题解
Atcoder Beginner 246 FG EX F - typewriter题意:给出 $n$ 个字符串和一个长度 $L$,接下来你可以任选一个字符串,并且只用这个串内有的字符来打字(不限制字符顺序,数量),问可以打出多少中长度为 $L$ 的字符串。数据范围 $N<18$,$L<10^9$ 第一种想法(没a):可以暴力枚举所选的字符集,一共 $2^{26}$ 种情况,先预处理出每一种字符在哪些给定的串中出现(bitmask),把所选 2022-04-07 题解 #题解 #Atcoder