摘要:
主要是写一下证明 我们假定知道了答案的区间了,当我们到达答案的起始点的时候,我们无论栈里面放的什么,我们经过了答案这段区间后,栈剩下的内容不变,所以我们一定不会遗漏最优的答案;而我们每次做代码的这种统计的操作,也一定是合法的一个括号序列。所以是充要条件 关于细节,看看这篇题解 总的来说,思想就是如果 阅读全文
摘要:
这肯定是学证明了,看这篇文章 补充一下细节 首先,\(m\)的范围应该是\([0,b-1]\) 然后,当\(m\)取不同值的时候,\(ma\)%\(b\)一定为不同值(这个性质确实有点奇特,可以记下来) 反证,如果\(m_1a\equiv m_2a \: (mod\: b)\)且\(0≤m_1<m_ 阅读全文
摘要:
设\(S_n=\prod_{i=1}^{n}a_i\),像阶乘求逆元一样,我们倒推 有\(a_n\cdot a_n^{-1}\equiv 1(mod \: p)\),即\(\frac{S_n}{S_{n-1}}\cdot a_n^{-1}\equiv 1(mod \: p)\),于是有\(a_n^{ 阅读全文
摘要:
这篇题解的每个方法都要记住 最后那个求逆元的推导都是建立在取模之上的 update 2024.8.6 看到线性,不难想到线性筛,其实是可以用线性筛求逆元的 阅读全文
摘要:
就是炸脖龙 I的另一种形式 阅读全文
摘要:
这道题目属于是大杂烩了 法一:考虑贡献,看这篇题解 从这篇题解我们可以知道,一般有两种枚举方法,对于\(gcd(x,y)\),我们既可以先枚举\(y\),然后再枚举\(y\)的约数\(p\),将约数除进去再利用φ,也可以先枚举\(p\),然后考虑\(\frac{y}{p}\)的值,再利用φ,感觉后面 阅读全文
摘要:
比较典型的考虑贡献的题目了 但是要注意的是这里不要枚举\(y\)了,而是选择枚举质数\(p\),这样时间复杂度才正确 阅读全文
摘要:
这道题目是高精度GCD的模板题 更相减损术的时间复杂度本来是\(O(n)\)的,但是可以通过这篇题解的优化来达到\(O(logn)\) 但是最好仍然使用压位高精 其实感觉普通的求gcd也可以使用更相减损术,减法和位运算肯定是要比取模要快的 阅读全文
摘要:
考虑一个数可以作为多少个数的公约数 设\(c[i]\)表示\(i\)是多少个数的公约数,那么对于当我们求\(k\)的时候,我们取\(c[i]≥k\)的\(i\)的最大值作为答案就好了 这是因为:对所有\(c[i]<k\)的\(i\)来说,不可能是答案,而对任意一个\(c[i]≥k\)的\(i\)来说 阅读全文
摘要:
这道题目本来是想去发现什么性质然后进行区间运算的,但是题目的末尾其实提示你了,这是没啥性质的,所以就不要从区间考虑了 我们直接考虑最后一步的时候是什么情况 如果最后一步是\(0\)与前面经过一系列运算所得到的一个bit进行运算,那么这次查询的操作肯定是\(1\),因为\(0\)and任何数都为\(0 阅读全文
摘要:
看这篇题解 不可逆指的是一旦操作了,就没办法回到原来的序列了,所以根据决策包容性,尽量到后面再操作 我们先来考虑一下最终的对应至少满足什么条件 假设我们现在已经获得了一个\(t\)到\(s\)的单射且这个单射可以通过排序变成\(t\),我们依次考虑每一个\(t\)的字符 对于\(t_1\),我们假设 阅读全文
摘要:
法一:看这篇题解 这种几何意义的转化在看到绝对值的时候一定要有肌肉记忆 法二:代数法 最多交换一次,肯定考虑答案的增量 先按\(a\)排序(因为是绝对值,我们先让一维有序之后考虑消掉绝对值符号) 枚举\(i\),考虑\(j\)(\(1≤j<i\)),交换\(i,j\)之后增量为\(\delta=b_ 阅读全文
摘要:
当\(k<n+m-2\)的时候,显然是不可以的 然后我们接下来一个一个试 当\(k=n+m-2\)的时候,显然没问题 当\(k=n+m-1\)的时候,我们无论怎么走,总要把多的这一步走掉(而且不是往右边或者下边走,而是往上边或者左边走,当然不能跟上一步重合),但是这样就还需要再多一步才能走到,即这种 阅读全文
摘要:
看这篇题解 这题没有发现什么好的与题目有关的性质,所以很可能是考算法,而一般是DP和贪心,B题一般不会考DP,所以一般是贪心 我们用数学归纳法来证明 我们仍然来先确定一个操作顺序,我们发现每一个数的拆分都不会影响其他的数(也就是说,如果我们已经知道了每个数在最终的方案中会被拆分成什么样子,我们无论按 阅读全文