随笔分类 - 赛记
摘要:这场ACCODERS忘交,结果最后想起来匆匆只交了T1,然后文件名还没改,所以爆零了。。。 02表示法 100pts 高精度,不说了; 点击查看代码 #include <iostream> #include <cstdio> #include <string> #include <cmath> #i
阅读全文
摘要:欧几里得的噩梦 -pts 看见是个线性基的题就没打; 其实也不是线性基,只不过模拟了一下它的过程; 考虑插入一位数时它能不能被表示,其实就是它异或上线性基中的某些值后可不可以为 $ 0 $,那么我们就可以将插入的单独一位数与 $ 0 $ 连边,将两位数互相连边,这样每插入一位数时看看它与 $ 0 $
阅读全文
摘要:五彩斑斓(colorful)100pts 赛时2h+就搞这道题了,一直以为是签到,结果是T3?然后T3就没时间打了。。。; 在这道题中,在一行/一列的两个点也算子矩形; 考虑用所有子矩形数减去四个点都相同的子矩形数,问题转变成如何求后者; 发现上面两个点和下面两个点是平行的,所以我们可以枚举左右两个
阅读全文
摘要:HZOI大作战 15pts 赛时暴力跳父亲15pts; 正解:发现在树上对于向上找大于这个数的操作具有随意划分性,所以考虑倍增,设 $ f_{i, j} $ 表示从 $ i $ 这个点向上跳 $ 2^j $ 个比它大的数能跳到哪里,于是我们只需处理出向上跳一个(也就是 $ f_{i, 0} $)的,
阅读全文
摘要:三道计数 + 一道数据结构也是没谁了 这场可是好好锻炼了我的写暴搜能力。。。 挤压 20pts 暴搜20pts; 把最后的答案进行二进制拆解,即 $ ans = 2^i + 2^j + 2^k + ... $,那么答案的平方为 $ \sum_{i = 0}^{30} \sum_{j = 0}^{30
阅读全文
摘要:构造字符串 50pts 错解50pts; 考虑正解,对于题目中的要求,我们可以转换成若干个相等与不等的操作,若相等则用并查集合并一下,不等则连边,若同块连边则无解,否则从前往后遍历赋值,每次找所连边其它块值的 $ \operatorname{mex} $ 即可; 时间复杂度:$ \Theta(nm
阅读全文
摘要:几何 100pts 赛时打的 $ DP $ 没有用 bitset 优化过了,也是放过了暴力; 考虑设状态 $ f_{i, j, k} $ 表示考虑到第 $ i $ 位,到第 $ j $ 位 $ x $ 和第 $ k $ 位 $ y $ 可不可取,直接转移即可; 时间复杂度:$ \Theta(|s||
阅读全文
摘要:median 50pts 错解50pts(有重复的数就不行); 赛时想容斥了,其实不用容斥(好像也不能容斥); 题解做法:将每个数存一个二元组,按大小排序,枚举每一个数作为中位数,再枚举每个位置的种类,看它前面和后面有多少这些种类的数,乘起来即可; 这样就巧妙地避免了重复的情况,如果直接枚举,则有相
阅读全文
摘要:一般图最小匹配 35pts 纯纯的错解35pts; 考虑将原数列排序,那么我们选的边就只能是相邻两个点的; 发现这玩意能够递推(赛时没发现),所以直接 $ DP $,设 $ f_{i, j} $ 表示当前考虑到第 $ i $ 位,有 $ j $ 条边被选的最小权值,转移时考虑第 $ i $ 个点连不
阅读全文
摘要:光 100pts 赛时打的错解A了,就很神奇; 其实可以发现答案有可二分性,考虑二分答案,每次check时枚举左上角和右下角的耗电量,然后对左下角的耗电量再进行二分,最后判定以下即可; 赛时就这么打的,然后赛后拍出来了; 其实这个思路是对的,只是 $ \lfloor \frac n4 \rfloor
阅读全文
摘要:奇观 55pts 赛时打的 $ \Theta(n^5) $ 和 $ m = 0 $ 的特殊性质拿了55pts; 考虑正解,首先,$ CCF $ 这三个字母是可以分开维护的; 对于 $ C $,其可以看作一个连了四个点的线段,对于 $ F $,其可以看作一个连了三个点的线段在再最后分别多连两个点; 设
阅读全文
摘要:不相邻集合 64pts 赛时打的用 $ set $ 打的假做法A了,但是没敢交,整了个暴力64pts; 可以发现,对于给定的一个序列,我们只需研究每个数一次就行,因为如果一个数出现多次,答案是不变的; 我们又可以发现,对于一个连续段(比如 1 2 3 4 5 ,其答案最多为 $ \lceil \fr
阅读全文
摘要:小W与制胡串谜题 50pts 这种题,就是想到 + 玄学; 感觉刚接触OI时做过这种题,当时学得少,蒙一下就过了。现在蒙不了了,也确实可供想的方向很多,所以像这种签到题比较不好做; 字符串数组是可以 $ sort $ 的,所以我们重载 $ cmp $ 为 a + b < b + a 即可; 至于正确
阅读全文
摘要:最后一场了,还是写写吧; 线性只因 40pts 赛时把与看成或了,最后才发现,结果我的神奇代码交上去得了40pts。。。 从高位到低位依次考虑,若这一位是1的数大于m则统计并删除其它的数; 否则直接跳过; 点击查看代码 #include <iostream> #include <cstdio> us
阅读全文
摘要:这场rank4,应该是暑假以来打的最好的一场了。。。 其它时候就没进过前10。。。 博弈 30pts 赛时 $ O(n^2) $ 暴力30pts; 对于暴力,我们能发现一个性质就是只要有一类边权出现了奇数次,那么先手必胜,所以我们枚举每一个点对,开个数组统计一下即可; 不要忘了离散化; 对于正解,用
阅读全文
摘要:可持久化线段树 0pts 确实是板子题,可是我没打过标记永久化,结果干了3h最终爆零(还发明了一个不对的算法); 其实标记永久化挺好想的,可是赛时没想出来; 用个主席树上的标记永久化,查询时一路累加标记,记得修改时改掉原树的sum值; 当然也可以用可撤销线段树做,(就很简单,但是赛时没想); 点击查
阅读全文
摘要:与和 100pts 签到题但还是做了很久。。。 考虑与的条件,可以发现,如果将 $ a $ 转化成二进制,那么二进制上为 $ 1 $ 的位置 $ x $ 和 $ y $ 都必须是 $ 1 $,所以首先将 $ s $ 减去 $ 2 \times a $,然后再判断一下 $ (s - 2 \times
阅读全文
摘要:进击的巨人 100pts 这题赛时10min打的 $ \Theta(n^2) $ 暴力然后过了,而且还是首A; 正解当然不是暴力,而是要推式子; 不难发现,每个 $ 0 $ 会原序列分割成两个互不相同的子序列,且两部分互不影响,于是我们可以分开考虑; 对于一个不包含 $ 0 $ 的一个极大子序列,设
阅读全文
摘要:连通块 66pts 老套路,删边改加边; 但改完以后不知道怎么求最长路径了,当时也想到了维护直径,但不知道咋干; 具体地,用并查集维护连通性,每次合并时需要维护新的直径,不难发现,新的直径的两个端点一定在原来的两个直径的四个端点中选; 于是只有六种情况,枚举一下即可; 我们要直径有啥用呢?当我们查询
阅读全文
摘要:Kanon 40pts 签到题,但是不会,所以打了暴力; 正解时考虑相邻两个雪球,只有两种情况:它们的覆盖区间有交集或无交集,那么如果我们找出了无交集的最后一天,我们就很容易判断剩下的一堆雪该被谁拿走,于是我们二分找出这一天即可;赛时确实想不到二分 时间复杂度:$ \Theta(n \log n)
阅读全文