摘要: 详见这里 效果如下: print("hello") 阅读全文
posted @ 2022-03-19 18:49 limil 阅读(28) 评论(0) 推荐(0) 编辑
摘要: source 题解 设$s(l,r)$为$s$区间$(l,r)$的子串,$s_p$代表$s$在$p$处的字符。通过观察(小数据/推导/瞎猜/看题解)可以发现,如果最优解中含有$s(l,r)$,那么$s(l,n)$必然包含在最优解中。 证明: 假设答案中包含相邻的$s(i,r_i)$和$s(j,r_j 阅读全文
posted @ 2021-11-02 20:29 limil 阅读(46) 评论(0) 推荐(0) 编辑
摘要: Floppy Cube 题解 Pólya定理用于计算在置换下的所有本质不同的方案数。 可以发现,操作产生的所有置换都可以通过横向旋转90度,纵向旋转180度,左侧一列转动180度这三个置换产生。只需bfs,通过这三个置换搜索出所有可能的置换,假设这个置换的集合是$G$,颜色数为$c$,答案即为 \[ 阅读全文
posted @ 2021-10-31 21:26 limil 阅读(37) 评论(0) 推荐(0) 编辑
摘要: A - Two Subsequences(语言基础) 最小字符+剩余部分 B - Divine Array (暴力) 看题解操作次数上界是$O(\log n)$的,但是$O(n^2)$能过。直接暴力。 C - Array Elimination(思维) 如果要把某一位全部减为0,那么就是把这一位为1 阅读全文
posted @ 2021-10-27 23:36 limil 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 题目 source 题解 首先考虑暴力怎么做。直观感觉就是选择最小的后缀拼起来。但是当前的选择会受到后面字符串的影响。因此,考虑从后往前选择。假设当前选到第$i$个串(\(s[i]\)),第$i+1$到$n$后缀拼接的最小字符串为$t$。那么如果考虑到当前第$i$个串,最优选择就是字符串$s[i]+ 阅读全文
posted @ 2021-10-27 21:43 limil 阅读(77) 评论(0) 推荐(0) 编辑
摘要: A B C D E F G H I J K L 1 0 2 1 0 2 2 0 2 0 0 1 0:未完成 1:赛时做出 2:赛后补 总结: 3题铁牌。比赛时负责C和G,想法的方向是正确的,但是想的过于浮于表面,没有深入地去优化。签到题常规题基本都是 复杂度高做法+使劲优化 = 正解。想好写的做法, 阅读全文
posted @ 2021-10-15 19:52 limil 阅读(476) 评论(0) 推荐(0) 编辑
摘要: 题目 给$n$个括号序列,可以对这些序列任意排列,然后连接成一整个括号序列。求一个排列,使得连接成的括号序列的真前缀是合法括号序列的个数最多。\(n\le 20\) 题解 观察性质,发现括号序列的balance一旦小于0,后面无论是什么都不会使得当前前缀的合法。合法括号序列的前缀的个数即balanc 阅读全文
posted @ 2021-10-13 23:24 limil 阅读(72) 评论(0) 推荐(0) 编辑
摘要: source A - CQXYM Count Permutations(思维) 对于排列$p$,如果它的对数是$k$,那么可以构造${2n-p_i}$,使得它的对数变为$2n-1-k$。如果$k\ge n$,就有$2n-k-1 < n$。即每个对数大于等于$n$的排列都可以构造一个小于$n$的排列, 阅读全文
posted @ 2021-10-12 00:03 limil 阅读(52) 评论(0) 推荐(0) 编辑
摘要: D - The Number of Imposters(2-sat) 每个人分成T,F两种结点,分别代表这人是诚实的还是不诚实的。然后连边,例如$a$说$b$是T,那么就有如果$a$是T推出$b$是T,于是连一条双向边:\(aT \Leftrightarrow bT\),以此类推。然后直接dfs跑, 阅读全文
posted @ 2021-10-09 17:54 limil 阅读(39) 评论(0) 推荐(1) 编辑
摘要: 题目 长度为$n$的排列中,对于一个数$x$,如果所有包含$x$的区间的最大值恰有$m$个不同的值,那么$x$是好的。问有多少长度为$n$的排列,给定$m$,恰好有$k$个好的的数?\(n\le 100\) 题解 感觉不好直接计数,试试动态规划。设$f[n][m][k]$代表满足条件的排列数。可以发 阅读全文
posted @ 2021-10-08 17:35 limil 阅读(43) 评论(0) 推荐(0) 编辑