11 2021 档案

摘要:写游记不要拖。你会失去太多细节。 阅读全文
posted @ 2021-11-28 21:51 Administrator-09 阅读(138) 评论(0) 推荐(0) 编辑
摘要:用费马小定理求逆元要记得特判 n=0 时返回1 对于一些模数特别小的题,注意不能求恰好是这个模数的倍数的数的逆元 阅读全文
posted @ 2021-11-28 18:51 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:快速判断一个数能被整除的方法(1-23之内):这里 阅读全文
posted @ 2021-11-21 21:13 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 更加详细的讲解 一些每个数贡献与前/后缀最大值相关的问题可以将数按从大到小的顺序加入序列,可以保证每次加入的数一定是当前序列中最大的 于是DP方式和解释与题解是一样的 大意是对水+柱子的总体积做背包 若当前这个是 i,考虑 i+1i 之间有多少个柱子,就有多少贡 阅读全文
posted @ 2021-11-19 15:29 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 给定长度1e7的序列和1e7次查询,每次查询一个区间是不是所有数都出现了偶数次: 一个做法是将每个数映射到一个大随机数,然后每次查询区间异或和是不是0 令区间异或和为 t,令 n=2m1 于是一个暴力是枚举区间内的每个元素 x,检查 \(x\oplus(t\opl 阅读全文
posted @ 2021-11-19 15:05 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 有 n3w 的做法先咕掉了,这个是 n3 的 考虑优化一下 n4 的DP 发现上次选的若是第一张,此时第二张一定与第三张相连 而若上次选的是第三张,此时上一张一定与第三张相连 于是可以优化状态 而且发现若最终前三张牌为 i,j,k 阅读全文
posted @ 2021-11-19 14:52 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 将每个物品看成一条无向边,则存在一种合法方案的条件是每个连通块都是一棵树或是基环树 并查集判断即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 300010 #def 阅读全文
posted @ 2021-11-19 14:33 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:检查数组是否开小,都造极限数据跑一遍 阅读全文
posted @ 2021-11-18 14:05 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 更加详细的讲解 上面题解里的式子不再写一遍了 与「在不在mod n加法下的群中(能否通过加减得到这个数)」相关的问题可以尝试通过裴蜀定理转化为是否同余于gcd之类 于是考虑如何在可以接受的复杂度内判断一个 g 是否合法 对 k 个数都判断一遍肯定T了,发现我们只需要判断是否整 阅读全文
posted @ 2021-11-17 19:08 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 更加详细的讲解 将C看成1,T看成-1 暴力的话考虑前后各扫一次,从前面扫的那一次贪心的尽量靠后 然后从后向前扫一遍统计剩下的点的后缀最小值 优化的难点在于统计重复区间 但这样不好优化 发现在贪心策略下我们需要删除的点实际上是前缀和第一次为-1,-2……的位置, 以及删除这些点后后缀和第一次 阅读全文
posted @ 2021-11-17 18:50 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 原题 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll long long // #define int long long char 阅读全文
posted @ 2021-11-17 17:56 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 贪心选一个最大的选一个最小的即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #define ll long long #define int long 阅读全文
posted @ 2021-11-17 17:54 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 发现可以矩阵优化转移 一次能跳两行,可以将矩阵开大一倍存一下上一行的信息 对于一类形如「对一些矩阵维护队列,要每次查询整个队列中的矩阵的乘积」的问题: 那么我们维护两个栈,每个维护一段区间 [l,m],[m+1,r] 第一个栈的第 i 个元素,维护从第 i 行到 阅读全文
posted @ 2021-11-17 06:22 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 关于线段树上带修维护 k 的元素个数(需保证任意时刻每个元素都是非负整数): 可以在每个节点记录前 k 小的元素大小和数量,可以归并合并 查询的时候就按顺序枚举,若这个数 k 就统计到答案里 于是可以扫描线求出每一行雌/雄性各有 阅读全文
posted @ 2021-11-16 21:43 Administrator-09 阅读(7) 评论(0) 推荐(0) 编辑
摘要:传送门 将询问离线,倒序枚举将删边转化为加边 并查集维护连通块内直径即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 200010 #define ll long long 阅读全文
posted @ 2021-11-16 21:42 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 原题在这里 试图进行轮廓线DP,但是假了 正解的话建议康luogu题解 发现黑块和白块中至少有一个是两个梯形 而且这两个梯形的上底在同一条直线上 于是枚举这条线,再枚举其中一个点,另一个点的方案数前缀和优化求 发现一个点确定了之后与之相关的轮廓线就是从这个点走到角上的方案数,可以组合数求 一 阅读全文
posted @ 2021-11-16 21:40 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 考场思路是令奇位置产生正贡献,偶位置产生负贡献,但合法的判定很麻烦而且不好维护 尝试分治维护,但复杂度炸了 于是正解是对每个右端点维护所有合法的左端点 贡献统计也不用按下标奇偶了 发现一个事情是一个区间合法当且仅当从左端点出发,重复 ai+1=ai 的操作,要求过程中这个值 阅读全文
posted @ 2021-11-15 07:31 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 首先有一个至少两次二分的做法: 先二分出左端点 i,再二分 jk 但操作次数不够 对于一个严格单调降序列 [l,r],令 rev(l,r) 为区间 [l,r] 中的逆序对数,则有 \(rev(l, r)-rev(l+1, r)=le 阅读全文
posted @ 2021-11-14 19:53 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 这题我居然不会…… 每个限制条件实际上等价于 z1 个形如 ai=aj 的条件和一个 aiaj 的条件 发现支持复杂度 O(n2),于是暴力并查集,贪心填数即可 Code: #include <bits/stdc++.h> using n 阅读全文
posted @ 2021-11-14 19:47 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 发现那个 k 每次都在变着实很烦 于是将 k 看做变量 x,将 b 看做 k,将 a 看做 b 于是每个决策点都可以表示为一条 kx+b 的直线,李超树维护即可 李超树维护直线(不是线段)是 \(O(nlog 阅读全文
posted @ 2021-11-14 19:44 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 发现这个传送门是单向的就很烦 于是并查集缩点+有向图tarjan缩点+bitset可达性统计即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 100010 #defi 阅读全文
posted @ 2021-11-14 19:41 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 传送门 其实还有这个 并不会做 首先是 一个处理形如「每个元素有两种值可以选」问题的常见转化方法:将这个元素看成连接这两个值的一条边 于是若将每张牌看成从底面数字连向顶面数字的一条边 问题就转化为要改变尽量少的边的方向使每个点的度数不超过1 于是分连通块,考虑这个连通块的贡献 若是棵树,可以 阅读全文
posted @ 2021-11-14 19:39 Administrator-09 阅读(24) 评论(0) 推荐(0) 编辑
摘要:传送门 显然但不容易想到的事情:ab=a+b(a&b) 于是问题变成了求 i=1n1i&(ni),可以数位DP 但还有一种思路是让原式直接递推 对于一些看着很简单但求起来很慢的式子貌似还有一个处理方法是构造递推 于是上题解式子 阅读全文
posted @ 2021-11-14 19:14 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 刚了四个小时并且没有任何用处 一开始尝试按位拆开考虑贡献,但发现极难DP 想了trie树但感觉trie树只能处理两个数的相对关系,于是就没细想 然后正解扔到trie树上了 思路是枚举 k,用trie树处理 ij 发现比较大小时我们只需要考虑两者的最高不同位 两个 阅读全文
posted @ 2021-11-14 07:28 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 好题! 但数据是拿脚造的并且官方题解写得像shit一样 康不懂官方题解,于是学习了dalao做法 看了一年才看懂,于是下文是在试图解释dalao题解 首先能产生贡献的点一定是单调栈中的点,但每次爆扫单调栈复杂度显然不对 于是考虑单调栈中的每个元素对所有询问的贡献,这个可以只在弹栈时考虑 于是 阅读全文
posted @ 2021-11-14 07:26 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 发现我们可以很容易地确定集合中最小的元素 然后从大到小用类似背包的逆过程处理掉这个元素的贡献 于是转化为子问题,递归做即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 阅读全文
posted @ 2021-11-13 21:24 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 并不会做 原题在这里 对于两个无序序列是否相等的判断:可以用无序hash Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 500010 #define ll long l 阅读全文
posted @ 2021-11-13 06:26 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 并不能想到 发现当 n 为偶数的时候将序列分为 n 个长度为1的就可以 当 n 为奇数时若存在一个 aiai+1 则可以将这两个点分到一个子序列里,一样有解 同时不满足这两个条件的一定是长度为奇数的上升子序列 若将其划分为多个子序列 阅读全文
posted @ 2021-11-12 19:21 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先有一个 O(nc2) 的暴力 令 fi,j 为考虑到第 i 个位置,当前有 j 个糖的最大收益 转移的时候枚举在当前位置买入/卖出几块糖 这个暴力可以优化到 O(nc) 具体地,可以利用完全背包的思想,以卖出为例 \(f_{i, j}=m 阅读全文
posted @ 2021-11-11 21:07 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 看起来需要求出每个数在哪些区间内是第 k 大 不会求,就炸了 关于形如「求序列内所有数左/右边」前 k 个大于/小于这个数的数: 需要避免从一个数向两边爆扫的时候扫到小于这个数的数 于是对这个序列建立一个双向链表,将整个序列复制下来排序,从小到大枚举 枚举到一个数时,向两边爆 阅读全文
posted @ 2021-11-11 20:51 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 有一个暴力做法是枚举一条边断开,在形成的两个连通块中求直径更新答案 于是树形DP预处理可以做到 O(1) 求直径 整体复杂度 O(n) Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f 阅读全文
posted @ 2021-11-11 20:38 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 按题意DP即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 2010 #define ll long long //#define int long long cha 阅读全文
posted @ 2021-11-11 20:36 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 首先有个显然地过分但我没有看出来的结论:若没有修改,从 uv 的最短路长度是 au 那现在改了几条边,最短路可能就变成了 disu,z+az 发现这个 zu 之间必须通过修改过的边连通,否则绕一下一定不优 于是将每个修改 阅读全文
posted @ 2021-11-11 07:24 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:传送门 链上的部分分可以单调栈求出范围 l,r 后主席树维护 其实也可以求出后转化为三维偏序求解 题解说可以忽略一个条件,再减去算重的 然后正解 与形如 经过点中的最大值/起点为全路径最大值 类似的问题,序列上可以考虑笛卡尔树,树上可以考虑kruskal重构树 对点权建立kruskal重构 阅读全文
posted @ 2021-11-11 06:37 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 当 min{ai}>0 时,整个序列可以被任意划分 否则可以证明原序列的mex一定是划分得到的序列的mex 于是令 f[i] 为区间 [1,i] 的合法划分方案数 特别的,f[0]=1 于是发现转移点 j 要求 [0,mex) 中的数 阅读全文
posted @ 2021-11-11 06:21 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 可以证明一个结论: 若从后向前扫,每个重复的数变为它后面第一个没有出现过的数一定更优 于是可以用并查集找这样的未出现的数 复杂度 O(nlogn) Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f 阅读全文
posted @ 2021-11-11 06:13 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:https://www.luogu.com.cn/problem/CF678F 正解是根号分治 对于一类带插入/删除/询问问题的根号分治: 一种思路是先对每个询问处理出 1.插入与其在同一块内且插入在其之前,删除在其之后的修改的贡献 2.删除与其在同一块内且删除在其之和的修改的贡献 然后对每个块处理 阅读全文
posted @ 2021-11-09 20:59 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:CF713C Sonya and Problem Wihtout a Legend CF13C Sequence 首先先有一个结论:最后的序列中的每个数字肯定是在原先的序列中出现过的数字 证明可以归纳证明,见蓝书P268 先将a数组排序后的结果存在一个b数组中 然后考虑DP,令 \(dp[i][j] 阅读全文
posted @ 2021-11-09 17:48 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 第一思路是二分+类树形DP 首先可以贪心从大到小加边+dsu将原图变为一棵树(其实这就是最大生成树但我没有意识到) 然后发现一定存在一种最优策略使得边权最小的边只被经过一次 于是可以从最小的这条边断开分治 但从一个连通块里找边权最小的边的复杂度炸了 于是正解是kruskal重构树,并且不用二 阅读全文
posted @ 2021-11-09 10:33 Administrator-09 阅读(48) 评论(0) 推荐(2) 编辑
摘要:传送门 又是大神仙题 要求的是最大的满足区间众数不止一个的区间长度 并不知道如何用数据结构维护 先证一个结论:整个区间的众数一定是至少一个最后要求的最长区间中的众数 证明考虑反证,不断扩展区间直到整个区间的众数是这个区间中的众数一定更优 然后看有了这个结论怎么写 首先eary version的值域很 阅读全文
posted @ 2021-11-09 08:28 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 需要生成函数,咕了 但有一个转化:题里要求任何一个序列的子序列出现次数都不能比这个序列多的方案数 于是发现对于一个序列 a1..an,它们必须连续出现,即 ai 的前驱和后继都是确定的 所以有多个前驱/后继的数肯定不能出现 可以发现原序列变成了一堆链 然后可以无限背包/ 阅读全文
posted @ 2021-11-08 20:53 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 令 f(x) 为兑换 x 个A种货币时的最大兑换数 于是 f(x) 是个单峰函数,可以三分 但会炸精度,于是需要代回check一下是否合法以及是否有更优解 然后还有函数图像特别平的时候精度不太够,需要单独check一下两个端点 复杂度 O(nlogn) Cod 阅读全文
posted @ 2021-11-08 20:51 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 毒瘤数据结构 正解思路很特别 对于一个闭区间修改 [l,r],将其写成开区间 (l1,r+1) 于是类似zkw线段树,我们发现在原树上向上跳链(到lca的孙子辈)的过程中应该修改的节点恰好是访问到的节点的兄弟 于是分成左链和右链分别树剖,每个节点维护其兄弟的信息 然后因 阅读全文
posted @ 2021-11-08 20:51 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:关于大小写字母的ASCII值:有一个性质是一个大写字母的ASCII值异或上空格等于对应的小写字母的ASCII值 关于等比数列求和: 令 s=a0+...+an 于是有 as=a1+...+an+1 于是 ass=an+1a0 即 \(s=\frac{a 阅读全文
posted @ 2021-11-08 20:50 Administrator-09 阅读(0) 评论(0) 推荐(0) 编辑
摘要:传送门 画个图可以发现最终形成的东西是有一条公共边的两个三元环 于是求三元环是 O(mm) 的 统计答案考虑枚举公共边 发现一条边参与的所有三元环中只有剩下的那个未确定的点权值最大的两个加上这条边所构成的四元环可能成为最终答案 于是对每条边开桶即可 Code: #include 阅读全文
posted @ 2021-11-07 17:05 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 并不会做 关于一个字符串的最小循环节:即为 lensmax{lenboader},读者自证不难 于是就很好写了 对于每个子区间,令区间长为 n,最小循环节长度为 len 则最小循环节可能出现的次数是 nlen 的因子 于是不难证 阅读全文
posted @ 2021-11-07 17:01 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 尝试扫描线,没调出来 考完才发现我试图用线段树的pushup完成对值域的离散化 这样极为难写 扫描线上的所有点会将线分成几个形如 [yi,yi+1] 的区间 令一个 ci 为区间 [yi,yi+1] 被覆盖的次数,维护这个东西即可 但是还有一个 阅读全文
posted @ 2021-11-07 16:51 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 并不会做 发现两个异号数字相减的结果的绝对值等于这两个数字的绝对值之和 于是只要集合中有异号元素,就总可以构造出一种顺序使结果为所有元素的绝对值之和 然后考虑没有异号元素的情况 那就得找一对相邻元素相减一下形成一个异号元素 这个找结果绝对值最大的即可 复杂度 O(n) Code: # 阅读全文
posted @ 2021-11-07 16:43 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 发现可以二分答案 于是左端点一定要先把左边的走完 于是每个点两种可能,先向左走或先向右走 O(n) 扫一遍check即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #defin 阅读全文
posted @ 2021-11-06 21:36 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 发现一个有效的最小区间 [l,r] 满足 alar 于是dp即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 3000010 #def 阅读全文
posted @ 2021-11-06 21:33 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 求一行第一类斯特林数 O(n2) 能过 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 3010 #define ll long long //#define 阅读全文
posted @ 2021-11-06 21:31 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 先粘小马优质博 然后好像就没什么可写的了…… 注意删调试信息,注意数组开够 貌似对于要用 [1,n] 中数凑出一些特定数值的构造题,有一个套路是先按顺序匹配,求出这个状态下的权值 然后通过错位构造出与要求的值的差值以构造出答案 应用到这个题上就是先顺序排序,然后临相匹配 这样得到一 阅读全文
posted @ 2021-11-05 20:21 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 这题不会做,太丢人了 考场上试图合并路径什么的,毫无进展 想DP但完全不知道怎么定义 但正解其实就是DP 关于图上回文路径的一类处理方法: 考虑从起点和终点同时开始DP,回文的性质可以用长度+转移保证 具体的,令 fi,j,k 为走了 i 步,其中从起点向下走了 \ 阅读全文
posted @ 2021-11-05 20:07 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先发现给的快排板子是会退化的 然后注意到每个nan的相对位置是固定的 于是会从一个nan后面跑到一个nan前面的就是这个nan后面比这个nan前面的最大值小的数 注意到所有数字最终是升序排序的 树状数组维护个数即可确定每个nan的位置 最后把数字填进去就好 Code: #include < 阅读全文
posted @ 2021-11-05 19:55 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 这题把孩子整自闭了 考场思路是维护一个 fi 表示到位置 i,还未出现过堵塞边的期望流量 再维护一个 gi 表示到 i 已经出现堵塞边的期望流量 但实现难点在于要维护一个出现了堵塞边但这条边不是点 i 的祖先的概率 非常难写 于是题解折腾了我半天 阅读全文
posted @ 2021-11-05 06:23 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 考场上分块水过去了 先说分块:块内按y排序,处理边角的时候归并优化一下可以做到 O(nn) 然后正解是树状数组扫描线 树状数组以操作编号为下标,存的是操作的h 每次询问在树状数组上二分找到第一个前缀和 y 的位置 Code: #include 阅读全文
posted @ 2021-11-04 21:37 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 并不会做 首先令 m=nk,要特判 k=1 和 m=1,以及总和除不尽集合数的情况 于是m是偶数时 ini+1 组合选就行 m是奇数的情况可以先按上面的策略选到剩 3k 个 考虑剩下的 3k 个怎么凑成 k 个和一样的 阅读全文
posted @ 2021-11-04 21:33 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 发现答案可以被表示成 a 的下降幂 于是特判下降次数为1 开根check下降次数为2和3 剩下的可以开根check,怕掉精度的话也可以开map预处理 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3 阅读全文
posted @ 2021-11-04 21:24 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 这都什么神仙题 可以用trie树按题意建图,但并没有什么用 正解考虑一个性质: 我们如何check一个序列是不是good sequence呢? 一个性质是依据最高有效位是0还是1将原序列分为两个集合 s0s1 于是仅当 |s0|2 并且 阅读全文
posted @ 2021-11-03 16:21 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 很好的思维/计算几何题,有多种解法 解法1(鬼知道这怎么想到): 首先是点和三角形关系想到套路「如果一个点位于三角形的内部,那么对于逆时针遍历有向直线,该点总是落在左边」 康康在这里怎么用这个性质 放张图: 发现如果重定义一条线 (a,b) 的左边为相对于坐标轴的左边,且这个点的纵 阅读全文
posted @ 2021-11-03 10:58 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先发现Alice向左移棋子一定不优,Bob向右移棋子一定不优 于是可以将一个红棋和一个蓝棋之间的距离看做一堆石子 每次可以在至多 m 堆石子中取任意颗石子 于是这是经典的nim-k问题,先手必败的条件是每堆石子的个数在k+1进制下异或和为0 然后这个题问的是有多少种局面先手必胜,可 阅读全文
posted @ 2021-11-03 08:10 Administrator-09 阅读(2) 评论(0) 推荐(1) 编辑
摘要:传送门 考场上想了它们会形成类似一个环去掉一段的形状但并没有什么进展 树上经过多个点(每个点有一定概率被指定)的最短路径长度(点与边都可以重复经过): 路径长度就是这 k 个点的虚树的边长度之和乘2 ,再减去虚树的最长链(就是直径)就是最短路径长度了 于是求虚树的边长度之和的期望 分散到每条 阅读全文
posted @ 2021-11-02 19:43 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:传送门 考场上完全没思路,瞎剪枝还把自己剪死了 整除也是可以按位拆开考虑的,第 i 位在剩余系下的贡献为 x2i(modp) 首先如果没有那个能被3整除的限制就把 t 中为1的位抽出来容斥做就可以了 但现在有个每个数都要能被3整除的限制 先看原来的式子 \ 阅读全文
posted @ 2021-11-02 19:22 Administrator-09 阅读(4) 评论(0) 推荐(0) 编辑
摘要:CF264B Good Sequences 要求序列中相邻两数不互质,求最长序列长度 显然1不能产生贡献,但要特判整个序列中只有一个1的情况 hdu5781 ATM Mechine 虽然w可以很大,但其实若想使步数最小我们只要log次就能取完,所以当 w>log 时是没用的 阅读全文
posted @ 2021-11-01 20:02 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 注意一个事情:当0下标是一个合法点的时候不能让它当哨兵,随意修改值! 题意大概是给一棵AVL树,要求删去 nk 个点使其仍是AVL树且要求字典序最小 考场上觉得不可做就弃了 参考了dalao博客,dalao博客和dalao博客 有趣的是,这三篇博客分别是 \(O(n), O(nlo 阅读全文
posted @ 2021-11-01 16:59 Administrator-09 阅读(5) 评论(0) 推荐(0) 编辑
摘要:贪心总结 判断点是否在三角形内 阅读全文
posted @ 2021-11-01 16:54 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑
摘要:传送门 首先 μ2(i)=d2|iμ(i) 于是 \(\sum\limits_{i=1}^n f(i) = \sum\limits_{d=1}^{\sqrt{n}}\mu(d)*d^2*s(\lfloor \frac{n}{d^2} \rfloor)\ 阅读全文
posted @ 2021-11-01 14:57 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 题意即为每个区间的最大值要乘两次 所以放到笛卡尔树上,合并信息的时候根节点的值乘两次即可 Code: #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define N 10000010 #define 阅读全文
posted @ 2021-11-01 14:29 Administrator-09 阅读(1) 评论(0) 推荐(0) 编辑
摘要:传送门 令 ans[i] 为从第 i 个位置开始向后走的最大收益 于是根据第 i 个位置随出来的数与 ans[i] 的大小关系按题意转移即可 但是卡精度,需要开long double u1s1,long double就真的没爆吗? 当数据范围都是1e9级别且需要小数的 阅读全文
posted @ 2021-11-01 14:27 Administrator-09 阅读(6) 评论(0) 推荐(0) 编辑
摘要:传送门 先注意一个事情:A集合里初始有个数0 然后令 suf[i]=1i+1+1i+2+...+1n+1 这个suf是一个数在第 i 个位置的贡献 于是发现每个数在每个位置是等概率的,于是乘上即可 Code: #include < 阅读全文
posted @ 2021-11-01 14:26 Administrator-09 阅读(3) 评论(0) 推荐(0) 编辑
摘要:传送门 有一个巨大的坑 若令 i,j 为状态「取了 i 个球,有 j 个是红球」 则可能的 k 的范围显然是 [j,n(ij)] 但每个 k 在这个范围内的概率比已经与原来不同了,即不是 \(\frac{p_k}{\sum\limits_{t= 阅读全文
posted @ 2021-11-01 06:23 Administrator-09 阅读(2) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示