摘要: #define sandom signed #define fre(x, y) freopen(#x ".in", "r", stdin), freopen(#y ".out", "w", stdout); #include <iostream> #include <cstdio> #include 阅读全文
posted @ 2024-01-26 11:09 sandom 阅读(11) 评论(0) 推荐(1) 编辑
摘要: ![image](https://img2022.cnblogs.com/blog/2694474/202210/2694474-20221025162251346-360243880.png) 阅读全文
posted @ 2022-10-25 16:23 sandom 阅读(114) 评论(8) 推荐(4) 编辑
摘要: 生成数据(data) inline int random(int n) { return 1ll * rand() * rand() % n + 1; } inline int get(int l, int r) { return 1ll * rand() * rand() % (r - l + 1 阅读全文
posted @ 2022-07-02 22:08 sandom 阅读(52) 评论(4) 推荐(4) 编辑
摘要: ## 引入 ???+ note "入门例题" 假设班里有 $10$ 个学生喜欢数学,$15$ 个学生喜欢语文,$21$ 个学生喜欢编程,班里至少喜欢一门学科的有多少个学生呢? 是 $10+15+21=46$ 个吗?不是的,因为有些学生可能同时喜欢数学和语文,或者语文和编程,甚至还有可能三者都喜欢。 阅读全文
posted @ 2023-07-20 17:06 sandom 阅读(64) 评论(2) 推荐(5) 编辑
摘要: T1.将军棋 其实挺水的一道题,但是出题人丧心病狂强迫分类讨论,故意增加码量。 $A$ 挨着查直到队伍不同 $B、C$ 记录每种颜色最后出现的位置,枚举是哪一种颜色。对于 $B$ 枚举两个,如果都不是,那就是第三个;对于 $C$ 手动二分。 $D$、100 先判断是否为新颜色,若不是再二分。 二分显 阅读全文
posted @ 2022-11-11 18:54 sandom 阅读(40) 评论(3) 推荐(1) 编辑
摘要: T1.zzy的金牌 比较妙的计数 $dp$。一个显然的定义 $dp[i][j]$ 表示给前 $i$ 个盒子分配了 $j$ 个金牌的情况。但是发现会有重复情况出现,按照常人的思路,对于一个集合肯定是有序状态才容易判断,因为无序肉眼很难观察。所以不妨将 $a$ 排序,并且强制让操作完之后的数组也是有序的 阅读全文
posted @ 2022-11-09 14:13 sandom 阅读(36) 评论(6) 推荐(0) 编辑
摘要: T1.极源流体 正解是$LCT$维护最小生成树,显然我是不会的。 性质一:向上和向下等价,向左和向右等价,所以可以只考虑向右下方扩展。 性质二:向下和向右操作顺序可以交换,那么可以直接枚举向下扩展了几次,向右扩展了几次,而不用考虑顺序。 做法:直接枚举向下和向右分别扩展了$x、y$次,那么就让初始黑 阅读全文
posted @ 2022-11-08 06:17 sandom 阅读(47) 评论(1) 推荐(1) 编辑
摘要: rt 阅读全文
posted @ 2022-11-05 16:10 sandom 阅读(67) 评论(5) 推荐(7) 编辑
摘要: T1.语言 签到题。可以直接$O(n)$预处理出来前缀和,但我用了线段树,所以多了一个$log$的复杂度。 题意转化:找到一个位置为动词,上一个位置为名词,句子末尾是名词,其他地方是名词或形容词,bool数组随便弄一下就出来了。 代码 #define sandom signed #define fr 阅读全文
posted @ 2022-11-03 07:44 sandom 阅读(47) 评论(2) 推荐(1) 编辑
摘要: $Kmp$与$Trie$的优美结合,相当于在$Trie$上跑$Kmp$。 一个重要定义:$Fail$指针(失配指针),指向其他路径上与该字母相同的节点。当前路径的模式串的后缀与$fail$指针指向的模式串前缀相同(与$kmp$类似)。 $Fail$指针的作用:在对于一个文本串匹配多个模式串时,如果当 阅读全文
posted @ 2022-10-27 19:17 sandom 阅读(33) 评论(1) 推荐(0) 编辑
摘要: struct tree { int kid[10]; }; tree tr[Z]; int tot; bool end[Z]; void insert(char s[], int len)//插入一个字符串 { int rt = 1; for (re i = 1; i <= len; i++) { 阅读全文
posted @ 2022-10-27 19:13 sandom 阅读(47) 评论(1) 推荐(0) 编辑
摘要: 一对相等的真前缀与真后缀的个数($nxt$数组) void get_nxt(char s[], int len)//前缀函数 { nxt[1] = 0; for (int i = 2, j = 0; i <= len; ++i) { while (j && s[i] != s[j + 1]) j = 阅读全文
posted @ 2022-10-27 19:13 sandom 阅读(19) 评论(1) 推荐(0) 编辑