这题一场模拟赛我们出了弱化版(n<=1e6),抄题面给的程序能拿到71分的好成绩 其实后面的29分是加了几个1e9的数据卡人 这糟老头子真是坏得很 正解我们机房看了三天 在这里感谢这篇题解的作者,代码解释得很清晰~ 经过打表观察,可以发现:当\(1\le x \le k\)时 如果 \(k\) 为奇数,\(x*2^{y}\) \(mod\) \(k\)的值成环 如果 \(k\) 为偶数,质因数分解\(x\),如果所含因子\(2\)的次数大于\(k\)所含因子\(2\)的次数,那\(x*2^{y}…
题目传送门:LOJ #510. 题意简述: 给出一个在 \(K\) 进制下的树状数组,但是它的实现有问题. 形式化地说,令 \(\mathrm{lowbit}(x)\) 为在 \(K\) 进制下的 \(x\) 的最低非零位的值,例如 \(\mathrm{lowbit} \!\left( 230_{(5)} \right)\! = 30_{(5)}\). 则 add(x, v) 操作执行的是: 当 \(x \le n\) 时,执行 s[x] ^= v,并将 \(x\) 变为 \(x + \math…
题意 LOJ #2359. 「NOIP2016」天天爱跑步 题解 考虑把一个玩家的路径 \((x, y)\) 拆成两条,一条是 \(x\) 到 \(lca\) ( \(x, y\) 最近公共祖先) 的路径,另一条是 \(lca\) 到 \(y\) 的路径.(对于 \(x, y\) 是 \(lca\) 的情况需要特殊考虑一下就行了) 这个求 \(lca\) 的过程用倍增实现就行了. 假设令到达时间为 \(at\) . 不难发现,在树上向上的路径满足 \(dep_u + at_u=d_1\) (深度…
题面 传送门 题解 感谢\(@M\_sea\)的代码我总算看懂题解了-- 这个操作的本质就是每次把\(x\)的\(k\)进制最低位乘\(2\)并进位,根据基本同余芝士如果\(k\)是奇数那么最低位永远不会变为\(0\),也就是说最低位所在的位置是不变的,并且\(1\)到\(n\)会被分成若干条链,链上我们可以用线段树之类的搞一搞 然而如果\(k\)不是奇数的话事情就会变得比较辣手了--不过我们可以发现对于所有满足\(x=a\times 2^s\)的数,如果\(k=b\times 2^t\)且\(…
正解:倍增+线段树 解题报告: 传送门! $umm$这题有个对正解毫无启发的部分分还有个正解,都挺神仙的所以我都写了趴$QAQ$ 先说部分分 可以考虑把$x$向$x+lowbit(x)$连边,然后当$x+lowbit(x)$已经大于$n$了就指向一个超级根 这样儿每次执行一次$(x,v)$操作就相当于在树上一条链上的每个点全部$xor=v$,然后查询就是单点查询权值 然后就线段树或者树状数组维护一波就好$QwQ$ 这里可以解决$n\leq 2e5$的部分分辣 然后就港下正解 首先考虑$k$是奇数…
1463 找朋友  基准时间限制:1.5 秒 空间限制:262144 KB 分值: 80 难度:5级算法题  收藏  关注 给定: 两个长度为n的数列A .B 一个有m个元素的集合K 询问Q次 每次询问[l,r],输出区间内满足|Bi-Bj|∈K 的最大Ai+Aj   数据约定: n,Q<=100000 m <= 10 0<=A[i]<=1000000000 1<=B[i]<=n 1<=K[i]<=n 保证B[i]互不相等 Input n Q m A1 A2…
题面 2 ≤ n ≤ 2 × 1 0 5 , 1 ≤ m ≤ 2 × 1 0 5 , 1 ≤ l ≤ r ≤ n , 1 ≤ d ≤ 1 0 8 2 ≤ n ≤ 2 × 10^5,1 ≤ m ≤ 2 × 10^5,1 ≤ l ≤ r ≤ n,1 ≤ d ≤ 10^8 2≤n≤2×105,1≤m≤2×105,1≤l≤r≤n,1≤d≤108 题解 其实核心思路很简单:我们把原树看成一棵zkw线段树,而不是普通线段树,这样我们修改以及询问的对象就是左哨兵链的右兄弟 以及 右哨兵链的左兄弟,这两条链从叶…
题意 链接 Sol 势能分析. 除法是不能打标记的,所以只能暴力递归.这里我们加一个剪枝:如果区间内最大最小值的改变量都相同的话,就变成区间减. 这样复杂度是\((n + mlogn) logV\)的. 简单的证明一下:如果没有加的话,每个节点会被除至多log次, 总会除4nlogn次,每次区间加会恢复log个点的势能函数,这样总递归次数就是\(nlog^2n\). 下传标记的时候别忘了把min和max都更新一下 #include<bits/stdc++.h> #define Pair pai…
题目链接 首先Bi之间的大小关系没用,先对它排序,假设从小到大排 那么每个Ai所能匹配的Bi就是一个B[]的后缀 把一个B[]后缀的匹配看做一条边的覆盖,设Xi为Bi被覆盖的次数 容易想到 对于每个i∈[1,m]都要满足 Xi-i >= 0,即min{Xi-i}>=0 (Hall定理) 用线段树维护即可 感觉不需要霍尔定理也能看出来(因为就是显然吧..) //583ms 4140KiB #include <cstdio> #include <cctype> #inclu…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1463 题意: 思路: 好题! 先对所有查询进行离线处理,按照右区间排序,因为k一共最多只有10个,所有在该区间内的B数组,每次枚举K值,通过这样的方式来得到另外一个B值.但是这样得到的B值它在B数组中的位置必须在当前数的左边.如下图:(j为当前数在B数组中的位置,pos为计算得到的另一个B值在数组中的位置) 这两个数的和记录在pos中,这里pos的位置必须在j的左边,假…