300iq contest 2 B Bitwise Xor 题解
题目链接:300iq contest 2 B. Bitwise Xor
乡下人没见过 Trie 树,学会了。
1 | #include<bits/stdc++.h> |
AT_agc044_c [AGC044C] Strange Dance 题解
乡下人 × 2。这次是低位在上。
1 | #include<bits/stdc++.h> |
CF1801F Another n-dimensional chocolate bar 题解
本文迁移自洛谷原文。
考虑到最多只会有一个
- 没有任何一个
。
那么我们可以考虑类似 meet-in-the-middle 的做法。
令
则我们这种情况下的最好答案就是枚举一个中间断点
此时我们需要证明,在所有选择的
不妨设一个
我们贪心的考虑,如果
此时第二维就需要开到一个
综上,该部分复杂度为
- 存在恰好一个
。
那么我们可以直接枚举这个
然后我们枚举除了
该部分复杂度为
综上,总复杂度为 不知道为什么但只跑了 1.5s 通过此题。
1 | #include<bits/stdc++.h> |
AT_arc052_d [ARC052D] 9 题解
本文迁移自洛谷原文。
题目翻译是错误的,正确的如下:
给定两个正整数
题解:
这个
显然无法分块,考虑怎么做到根号分治。我们先对
当
我们可以考虑把
均衡一下取
Code:
1 | #include<bits/stdc++.h> |
AT_arc023_4 [ARC023D] GCD区间 题解
本文迁移自洛谷原文。
题目大意:
给出一个长度为
题解:
考虑我们固定一个起点
显然,这个 gcd 最多只会变化
所以我们可以考虑枚举开头,每次二分出下一个变化点的位置,每个开头二分
注意用
Code:
1 | #include<bits/stdc++.h> |
AT_arc045_d [ARC045D] みんな仲良し高橋君 题解
本文迁移自洛谷原文。
题目大意:
平面上有
对于从
题解:
先有一个很重要结论:
如果有两个点
然后,如果一个连通块的大小是偶数,那么它一定可以达到完美匹配。
证明:
考虑取出两个当前没有匹配上的点
由于他们是在一个连通块里,所以一定可以找到一条从
将这条路径上相邻的进行匹配,如果有摧毁的原有匹配那么按照与路径平行的方向找到下一个待匹配的,可以证明一定能将两个匹配被摧毁的不在路径上的点匹配到一起。
所以,如果原图有多个连通块:
如果有多个大小为奇数的连通块,则所有答案都是
NG。也就是说,我们可以无视掉所有大小为偶数的连通块(这些块内的点的答案都是
NG,因为删掉这种点,最终还是会有至少一个大小为奇数的连通块,不符合)。所以,我们只要在那唯一一个大小为奇数的连通块中,考虑删掉那些点可以使得剩下所有连通块的大小都是偶数。
然后发现这玩意很像一个圆方树,所以建出圆方树后跑一下就行了。
注意:
如果暴力建原图的话边的条数是
最终只有
Code:
1 | #include<bits/stdc++.h> |
AT_arc028_4 [ARC028D] 注文の多い高橋商店 题解
本文迁移自洛谷原文。
题目大意:
给定
共
部分分是
题解:
部分分是基础
令
然后每次询问暴力求一遍 dp,可以拿到第一个部分分。
然后我们可以发现第二个部分分中
正解还是要看到这个商品之间的顺序无关紧要。
再观察这个转移式子,
考虑反过来由
再根据商品之间无关紧要,
Code:
1 | #include<bits/stdc++.h> |
AT_arc047_d [ARC047D] ナナメクエリ 题解
本文迁移自洛谷原文。
题目大意:
有一个
有
将所有满足 的点 的值加上 。 将所有满足 的点 的值加上 。 查询所有满足 , 的点 的最大值,并求出值为最大值的点的个数。
部分分:
题解:
我们考虑维护两个数组
对于一个点
关键在于这个询问。
我们可以枚举所有可能的
再继续考虑。
考虑特殊化,查询的是一个正方形。
如果我们从小到大枚举所有的
同理,我们再按照
再考虑把查询一般化为长方形,则可以按照类似辗转相减法的方法每次割出最大的正方形去查询,然后合并所有的答案,可以证明单次询问复杂度为
Code:
1 | #include<bits/stdc++.h> |
AT_arc048_d [ARC048D] たこ焼き屋とQ人の高橋君 题解
本文迁移自洛谷原文。
题目大意:
给你一棵有
有
一开始,你的速度是每
题解:
显然有两种过程:
从
直接走到 ,花费时间 。 从
走到 链上某个节点 ,再从 走到某个特殊节点 ,再从 返回 ,最后从 走到 。
第一种情况平凡,我们考虑第二种。
有以下结论:
第二种情况下的答案
一定是到 距离最近的特殊节点。显然,因为 只和 一项有关。
所以我们可以跑一遍 bfs 处理出到所有节点最近的特殊节点的距离
然后在
令
在 这条链上
此时
在 这条链上
同理,不过
Code:
1 | #include<bits/stdc++.h> |