摘要:
一开始想到是树套树,空间28m树套树就狗带了 这题可以用莫队去做,如果在莫队下跑的是树状数组或者线段树的话复杂度要多带个log,可能跑不过 所以换成是分块。为什么分块,因为分块可以o(1)修改。 这里分块是针对值域来分而不是下标,外面套个莫队时间复杂度m*sqrt(n)+n*sqrt(n) 代码: 阅读全文
摘要:
蒟蒻不知道约数和公式。QAQ 然后自己手玩出来了,但是没去想DFS- -| 反正这篇博文也只是记录一下自己的愚蠢,代码就贴的是popoqqq神犇的代码。 顺便约数和公式 : 设n=p1^k1*p2^k2.....pn^kn , D_sum(n) = (p1^0+p1^1+..+p1^k1)*(p2^ 阅读全文
摘要:
原本想每个点建个五元异或方程组高斯消元解的,发现时间有点紧,就去压位卡常,结果调试的时候把自己挂在键盘上了。- -| 正解是从第一排推出第m+1排的异或表达式,然后因为m+1排的数全为0,转回来解这个异或方程组。 实现上我是消的对角线,消成上三角可能会快。出于习惯,我是把n,m互换了的。 代码: 阅读全文
摘要:
组合计数+容斥原理的题目 考虑对于每一类特产分给所有人有多少种方式,就是把每类特产分给所有人的方案数乘积 把x个物品分给n个人的方案数可以看成n-1个分隔符和x个物品的排列数,即为n-1+x个物品中选出x个物品的方案数,即C(x,x+n-1) 但是这样会把不合法的状态也算入答案,所以可以容斥一波 n 阅读全文
摘要:
考虑如果我们已经到达了终点,那么从终点出发显然可以异或上图中任何地方一个环的异或值后再回到终点,那么我们显然可以在到达终点后根据环的异或值调整自己 所以我们可以先处理出环上的异或值,我的做法是先做一颗生成树,然后dfs确定每个点到根的异或值再加入非树边,这时每条非树边都对应一个环,其他复杂环都可以由 阅读全文
摘要:
贪心 先按终止时间排一次序,能抢修的就抢修 如果超过了时间限制,就和之前加入的时间最长的点比较,如果这个建筑的t1<max(t1),因为我们是按t2升序排列,所以不修之前建筑的话这个建筑肯定能修,并且不会使解变差,如果这个建筑t1>max(t1)那么加入这个建筑就会使解变差 代码: 阅读全文
摘要:
显然我们可以对路径长度贪心选取 那么问题就转化成了求1到n的k短路,可以用A*去求。 然后交了两发MLE。QAQ 对于卡空间行为表示强烈谴责 然后卡了卡空间,主要对于一个点超过 魔法值/最短路 次数以上和花费超过当前mana的路径都不必扩展 代码: 阅读全文
摘要:
一开始sb以为是数位dp,想到状态是十维每维代表每个数字出现次数,再加一维代表余数。空间时间都要炸飞。。。 后来想了想可以直接用数字在原串上出现的位置来代替那十维,结果没有意识到这就是状压dp。。。导致写出来常数爆炸 不过过了就懒得改了。- - 代码看看就可以了: 阅读全文
摘要:
对于一个半径为n的圆,圆上整点显然是满足x^2+y^2=n^2的x,y的整数解 由于圆的对称性,我们只有考虑第一象限上的整点,最后乘4再加上坐标轴上4个点即为所求 我们将上式变化一下不难得到: y^2=n^2-x^2=(n+x)(n-x) 设d为gcd(n+x,n-x),A=(n-x)/d,B=(n 阅读全文
摘要:
按时间来建一棵主席树 下一个时间和上一个时间的改变就是那个时间点任务的改变 具体我们可以把任务拆成两个时间点,前一个代表加上这个数,后一个是删除这个数 代码: 阅读全文