08 2019 档案
摘要:学习笔记:可持久化线段树(主席树):静态 + 动态 前置知识: 1. 线段树。线段树分享可以看: "@秦淮岸" 、 "@ZYzzz" 、 "@妄想の岚がそこに " 2. 树状数组。$BIT$分享可以看: "@T Sherlock" 、 "Chicago" 、 "@weishengkun" 3. 权值
阅读全文
摘要:(树上差分 + $LCA$) $O(Mlog_2N)$ 调了两个小时,最后发现把$lca$里的$y$写成$x$了,当场去世。 首先下几个定义: 1. $dis[x]$ 为$x$到根节点的距离。由于边权都是$1$,所以$dis[x] = dep[x]$ 2. $LCA(x, y)$ 为 $x, y$
阅读全文
摘要:双向BFS (广搜) $O(8 ^ 7)$ ~~看到没有双向BFS的题解我就过来了~~ 这道题也可以用双向$BFS$来做,时间复杂度与$IDA $不相上下。 双向$BFS$的实现有多种: 1. 把初始状态和目标状态扔在一个队列里,每次从队列里搞出来一个扩展 2. 把初始状态和目标状态扔在两个队列里,
阅读全文
摘要:AStar 最坏情况$O(log_2560 ^ 4)$ 用$AStar$算法做了这题,程序跑了$408ms$。 相比于$IDA $的$100ms$左右要慢上不少。 且$A $由于是$bfs$,代码长度也较长。 跑的慢的原因应该有两点: 用了三个$STL$,~~垃圾STL毁我青春~~ 这题的指数暴涨,
阅读全文
摘要:$f[i]$ 表示将$ i $集合中所有小鸟都弄掉用的最少抛物线 $g[i][j]$ 表示在 $i$、$j$小鸟(由于$c = 0$,两点确定一条抛物线)建立一条抛物线,可以射掉的集合。 这个$x$可以在未射掉的集合中随便找,因为有可能重复枚举,可以规定$x$为第一个未射掉的集合,这样就可以做到不重
阅读全文
摘要:我作为一个初中蒟蒻,听y大视频听了5遍还不懂,快哭了。然后终于(好像)搞懂,写成题解加深一下记忆... 将式子等价转换 对于每两个式子(我们考虑将其合并): $x \equiv a_1 \%\ m_1$ $x \equiv a_2 \%\ m_2$ 则有: $x = k_1 a_1 + m_1$ $
阅读全文
摘要:A. Stickers and Toys 考虑尽量先买$max(s, t)$个里面单独的。那么如果$s + t n$那么$s + t n$的部分就该把$min(s, t)$踢出来,这些多的只能合并到另外一个上面去,所以答案就是:$ max(s, t) (s + t n) + 1$。 B. Lette
阅读全文
摘要:A. From Hero to Zero 通过取余快速运行第一步即可。由于$a \% b (a = b) include using namespace std; typedef long long LL; int main(){ int T; scanf("%d", &T); while(T ){
阅读全文
摘要:A. Telephone Number 跟之前有一道必胜策略是一样的,$n 10$位之前的数存在$8$即可。
阅读全文
摘要:A. Inscribed Figures 分类讨论打表即可。 PS:这道题翻译有歧义。 这样稍微翻转一下,就可以是$7$个交点呀...(大概是我没看英文题干导致的惨案) cpp include include include using namespace std; const int N = 20
阅读全文
摘要:A. Reverse a Substring 容易看出,只要符合递增顺序就符合$NO$,否则则可以找到一组,每次记录最大值比较即可。 B. Game with Telephone Numbers $Vasya$用尽所有轮次可以把几个$8$扔到最前面,只要这个数大于轮次,就说明$Petya$无法逆天改
阅读全文
摘要:A. Detective Book 模拟题,有一些细节需要注意。 cpp include include include include include using namespace std; typedef pair PII; typedef long long LL; const int N
阅读全文
摘要:A. Regular Bracket Sequence 显然,"$()$"不影响结果它是自我匹配的,可以把所有的$(($和$))$都放在左边/右边,这样只要检查它们的数目就行,还有个坑点,就是如果$)($多于一,需要给左右两边一个负担,必须小于它们的数量才行。 B. Discounts 模拟,从小到
阅读全文
摘要:A. Best Subsegment 显然,选择数列中的最大值当做区间(长度为$1$)。只要尝试最大值这个区间是否能扩展(左右两边值是否跟它一样就行了) C. Magic Ship 二分答案。容易看出,时刻符合单调性。若$d$天能到,那么$d + 1$也能到。因为可以保持跟风相反的方向就可以保持不动
阅读全文
摘要:A. Digits Sequence Dividing 注意特殊情况,在$n = 2$时除非$str[1] = str[2]$,否则可以把第一个数划分下来,剩下的数直接当成一组,一定满足条件。 C. Brutality 用堆维护连续子段最大和即可。 D. Compression 实质上是把这图压缩到
阅读全文
摘要:A. Minimum Integer 1. 如果$d include using namespace std; int main(){ int T; scanf("%d", &T); while(T ){ int l, r, d; scanf("%d%d%d", &l, &r, &d); if(d
阅读全文
摘要:A. Find Divisible 符合条件的区间一定可以选择$l, l 2$。 证明$l 2 include using namespace std; int main(){ int T; scanf("%d", &T); while(T ){ int l, r; scanf("%d%d", &l
阅读全文
摘要:A. Dice Rolling 把$x$分解为$a 6 + b$,其中$a$是满6数,$b$满足$1 include using namespace std; int main(){ int T; scanf("%d", &T); while(T ){ int x; scanf("%d", &x);
阅读全文