总结 虽然 \(A\) 了一道题,但是 \(T1\) 人均切没有什么用 差距在 \(T2\) 和 \(T3\) A. Manager 分析 发现子树内的贡献只能是原中位数或者原中位数后面的那一个数 而且权值小更改后的一定是较大的贡献,权值大的更改后一定是较小的贡献 以权值为下标开线段树,做线段树合并就行了 代
A. matrix 分析 对于一个串,我们只在它第一次出现在某个矩形时计算答案,这样就可以去重 如果矩形的 \(l,r\) 确定了 那么对于第 \(i\) 行的字符串,它的贡献就是 \((n-i+1)(i-last[i])\) \(last[i]\) 表示 \(i\) 这个字符串上一次是在第几行出现的 可以在 \(trie\) 的每一个节点上维护
A. 跑步 分析 因为权值的变化只是加一减一 所以 \(dp\) 值的变化也只是加一减一 设第 \(i\) 行修改的区间为 \([li,ri]\) 那么对于任意 \(i<j\) 有 \(l_i \leq l_j,r_i \leq r_j\) 直接差分,树状数组维护,然后单调指针扫一遍 代码 #include<cstdio> #include<cstring> #include<algo
思路: 首先考虑n^2暴力枚举:ans[i]=max(a[j]+sqrt(|i-j|)-a[i] (1<=j<=n) 把绝对值拆开: ans[i]=max(a[j]+sqrt(i-j))-a[i] (1<=j<=i) ans[i]=max(a[j]+sqrt(j-i))-a[i] (i<j<=n) 发现这个式子具有对称性,也就是说对于一个点i,他的最优决策j有可能是在j的左边,也有可能是在j的右边,这是绝
A. 盗梦空间 分析 每次查询时进行一次 \(bfs\) 可以做到 \(nq\) 的复杂度,结合链可以得到 \(30\) 分 正解是给询问点建立虚树 计算时前先求一次多源最短路 可以得到虚树上每一个点的答案,设为 \(dis\) 那么答案就由两部分组成 \(1\) 、虚树上节点在原树上的子树内的答案 这个答案要
A. 送你一道签到题 分析 大概是 \(Min25\) 筛的板子题 很久没有写了,正好复习一下 可以发现题目中给出的式子是一个积性函数 而且是 \(i^k\) 乘上一个系数的形式 所以拿 \(Min25\) 筛筛一个 \(i^k\) 就行了 系数可以用 \(dp\) 预处理 设 \(dp[i][j]\) 为当前填了第 \(i\) 个位置,已
给定\(n\)和\(a_{1\cdots n}\),有\(q\)个询问,每个询问要求区间\([l,r]\)内选出任意个数的异或最大值。\((n,q\leq 5\times 10^5, a_i\leq 10^6)\) 不知道怎么就想到了分块。先按\(\sqrt n\)分块,预处理出\(f[l][r]\)表示第\(l\)个块到第\(r\)个块所有数的线性基,这个可以\(\mathcal
作用 后缀自动机\((SAM)\)是一个能解决许多字符串相关问题的有力的数据结构 它可以把一个字符串的所有子串都表示出来 而且从根出发的任意一条合法路径都是该串中的一个子串 构造 要表示一个字符串所有的子串,最简单的方法是对于所有的子串建一棵字典树 但是这样做时间复杂度和空间
A. circle 分析 如果一个竞赛图存在大于等于三元环,则一定存在三元环 所以问题就变成了删去最少的点使的图中不存在三元环 考虑题目给出的特殊性质,删去 \(k\) 个点后剩余的图中将不存在环 也就是说剩下的 \(n-k\) 个点是一个 \(DAG\),而且是一个满边 \(DAG\) 同样地,如果最终存在合法
A. 飞行棋 分析 因为这道题的期望不是模意义下的 所以在迭代多次之后精度就会达到要求 设 \(f[i][j]\) 为第\(i\) 轮在位置 \(j\) 的人获胜的概率 随便转移一下就行了 转移的时候记录一个变量 \(p\) 表示当前有多少概率所有人都没赢 如果 \(p<1e-8\) 直接退出循环 注意当前的位置
总结 这次人直接掉没 \(T1\) 期望不会 \(T2\) 字符串不会 \(T3\) 打了一个多小时的表拿了 \(10\) 分 A. Expectation 分析 神仙期望题 只会 \(50\) 分做法 对于链的情况,答案是 \(\frac{n-1}{2}\),因为每一条边的期望长度都是 \(\frac{1}{2}\),一共有 \(n-1\) 条这样的边 对于菊花
总结 前面三位 \(AK\) 大佬 这一套题的难度确实不高,仔细想一下每一道题应该都是能做出来的 但是 \(T1\) 一个 \(lct\) 的板子调了 \(3\) 个小时实在是说不过去 后面两道题没有时间思考,只能打暴力 所以板子打熟很重要 A. 选择 分析 \(lct\) 维护双联通分量 和长跑那道题挺像的 lc
总结 这个分基本上和爆零没什么区别 只会打无脑暴力,高分暴力也不会 \(T1\) 写了一个随机化贪心拿了 \(20\),\(T2\) 水了一个 \(prufer\) 的分 写 \(T2\) 的时候居然认为边双是有向图的概念,暴搜也没有打出来 明天有一天整理的时间,要好好调整状态 毕竟放假之前最多也只有三次考试了
P4258 [WC2016]挑战NPC 题目链接 小 I 浅笑:“所以,等我领图灵奖吧!” 每个筐能装三个?那我把它拆成三个筐,每个筐就只能装一个了。 球和筐的对应关系可以抽象为边。把球放进筐可以看成两两匹配。 但是现在要考虑的是怎样做到满足“一个筐子(这里指的是题面里的筐)内有不超过 \(1\) 个
总结 仍然是三题打暴力,和前面的人分差巨大 最近有一段时间没有 \(A\) 题了 A. 灯 分析 首先把相同的颜色缩成一段,要求的就是总的加入的点的个数-相邻的不同颜色的点被点亮的个数 前面的部分比较好处理,直接记录一下每一种颜色有多少个点就行了 对于后面的部分,分情况考虑 当某种颜
内容 \(wqs\) 二分又名凸优化、带权二分。 一般用于 \(n\) 个物品强制选 \(k\) 个的情况下的最优化问题。 这样的问题直接 \(dp\) 复杂度一般都比较高,因为要求强制选 \(k\) 个,所以要有一维来记录选了多少物品。 而 \(wqs\) 二分则可以把这种限制去掉。 首先我们二分一个权值 \(C\)
总结 这个名次已经是倒数了 感觉整场考试不是很在状态,正解想不到,暴力分也没有打满 其实前两道题仔细推一下还是能想出来的 \(T1\ 2-sat\) 有一段时间没有打了 优化建图的方式和之前的某道题挺像的,但是当时那道题没改 这次算是补了一个锅 \(T2\) 的数据范围折半枚举也不难想,实现
有\(n\)只青蛙在一个长度为\(m\)的环上打架;每只青蛙有一个初始位置\(p_i\),和一个跳跃数值\(a_i\)。从\(1\)号青蛙开始按序号循环行动,每次若第\(i\)只青蛙行动,则它会向前跳 \(a_i\)个格子,撞飞它遇见的所有青蛙,包括终点格子上的,之后它的\(a_i\)减少等同于撞飞的青蛙只数,若\(a_i<0\),
网络流最大流、最小割学习笔记 网络流 网络流 \(G=(V,E)\) 是一个有向图,其中每条边 \((u, v)\) 均有一个非负的容量值,记为 \(c(u, v)\geq0\) 如果 \((u, v)\notin E\),则可以规定 \(c(u, v)=0\) 网络流中有两个特殊的顶点,即源点 \(S\) 和汇点 \(T\) ,源点可以提供无限的流量,而
点分树 点分树借鉴了点分治的思想,将分治过程中具有父子关系的重心连边 形成了一颗高度为 \(logn\) 的树 这样每一次分治时,我们就不用重新去找重心,直接沿着点分树向上跳即可 和点分治相比,点分树可以支持多组询问 而且还能够进行修改操作,可以解决一些强制在线的题目 点分树有两个性
题意 Luogu P4168 给 \(n\) 个数, 询问区间众数, 询问 \(m\) 次. \(1 \leq n \leq 40000\), \(1 \leq m \leq 50000\), \(1 \leq a_i \leq 10^9\) 分析 区间查询一般会想到线段树, 但是线段树不能维护众数这种不能合并的信息. 朴素 \(l\) 到 \(r\) 扫一遍, 统计数字出现数量, 然后
内容 迭代过程的公式为 \(p_{n+1} = p_n - \frac{f(p_n)}{f^{'}(p_n)}\) 牛顿迭代开根号 假设我们要给 \(k\) 开根号 实际上就是求 \(f(x)=x^2-k\) 的零点 这个函数的一阶导为 \(f(x)=2x\) 套公式即可 代码 double solve(rg int now){ double nans=2; for(rg int i=1;i<=20;i++)
题目描述 传送门 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^m \varphi(ij)(mod\ 998244353)\) \(T\) 组询问 \(1 \leq n,m,T \leq 10^5\) 分析 令 \(n<m\) 首先,我们把 \(\varphi(ij)\) 拆成 \(\varphi(i)\varphi(j)\frac{gcd(i,j)}{\varphi(gcd(i,j))}\) 考虑求单个欧拉函数的
题目描述 给你两个数 \(x\),\(y\) 可以对 \(x\) 进行 \(+1,-1\) 或 \(\times 2\) 的操作 问最少操作多少次后变为 \(y\) \(x,y \leq 10^{18}\) 分析 将问题转化为从 \(y\) 变为 \(x\),可以进行 \(+1,-1\) 或 \(\div 2\) 的操作 之所以这样做,是因为转化题意之后操作更受约束 如果当
定义 动态树问题 ,是一类要求维护一个有根树森林,支持对树的分割, 合并等操作的问题。 由 \(RobertE.Tarjan\) 为首的科学家们提出解决算法 \(Link-Cut Trees\),简称 \(lct\)。 在处理树上的很多询问问题的时候,我们常常会用到轻重链剖分,但是它只能维护当树的形态保持不变的时候的信息