- 博客(26)
- 收藏
- 关注
原创 【LOJ3161】「NOI2019」I 君的探险
【题目链接】点击打开链接【思路要点】以下是笔者在考场上的做法,与标准解法存在一定区别。首先我们可以先讨论一下 A,BA,BA,B 两类数据的做法。对于 AAA 类数据,对每个洞穴以 12\frac{1}{2}21 的概率进行操作,此后观察一遍所有的洞穴,将同色的洞穴归为一类,递归处理每一类即可。对于 BBB 类数据,我们本质上需要计算每个节点 iii 的父节点的位置。点亮...
2019-07-31 14:29:33 1512
原创 【LOJ3160】「NOI2019」斗主地
【题目链接】点击打开链接【思路要点】打表可得,若各个位置 iii 上权值的期望是关于 iii 的一 / 二次函数,则经过一次洗牌后,各个位置 iii 上权值的期望依然是关于 iii 的一 / 二次函数。暴力计算牌堆底的三项,然后插值即可。时间复杂度 O(M+Q)O(M+Q)O(M+Q) 。【代码】#include<bits/stdc++.h>using...
2019-07-31 14:06:30 702
原创 【LOJ3159】「NOI2019」弹跳
【题目链接】点击打开链接【思路要点】考虑模拟最短路算法的过程,需要维护一个二维点集,支持矩形 chkminchkminchkmin ,询问全局最小值,单点删除,并且不能占用过多空间。显然可以用 KD−TreeKD-TreeKD−Tree 解决。时间复杂度 O(MN)O(M\sqrt{N})O(MN) ,空间复杂度 O(N)O(N)O(N) 。【代码】#includ...
2019-07-31 14:02:16 478
原创 【LOJ3158】「NOI2019」序列
【题目链接】点击打开链接【思路要点】笔者本题的做法是基于对决策点进行打表得到的,并不能给出严格的证明。但确实得到了一个与标准解法,或是模拟费用流解法完全不同的做法。考虑一个 O(N3)O(N^3)O(N3) 的动态规划,将数组按照 aia_iai 排序,那么一旦确定了 LLL 对都选的位置,剩余的 K−LK-LK−L 个选择 aia_iai 的位置一定是一个前缀。因此,我...
2019-07-31 13:58:28 1028
原创 【LOJ3157】「NOI2019」机器人
【题目链接】点击打开链接【思路要点】考虑最右侧的最大值所在的位置 iii ,则 iii 号位置的机器人一定会移动到边界,并且挡住其他经过的机器人,因此枚举 iii 的位置可以将问题分解为左右两个子问题分别处理。注意到 iii 可能的位置一定是靠近中点的,可能被访问到的区间数 MMM 不会是 O(N2)O(N^2)O(N2) 级别的,当 N≤300N\leq300N≤300 时,...
2019-07-31 13:40:28 1464
原创 【LOJ3156】「NOI2019」回家路线
【题目链接】点击打开链接【思路要点】按照每条边的 qiq_iqi 排序,则显然有 O(M2)O(M^2)O(M2) 的动态规划做法。将每一条边看做两个事件,一个在 pip_ipi 时刻的询问 dpdpdp 值的事件和一个在 qiq_iqi 时刻的插入 dpdpdp 值的事件,则我们只需要快速进行转移。注意到代价函数时关于时间距离的二次函数,且各项系数均非负,转移显然满足...
2019-07-31 13:23:19 485
原创 【校内训练2019-07-11】大水题
【思路要点】考虑没有修改的情况,建立 TTT 的 ACACAC 自动机,用线段树维护 SSS 。在线段树上维护从自动机上任意一点出发,经过区间中每一个字符后产生的匹配次数 cnkcnkcnk ,以及到达的节点 destdestdest ,合并该信息是 O(∑∣T∣)O(\sum|T|)O(∑∣T∣) 的。有修改时,我们需要能够对被赋值的区间快速计算所维护的区间。即我们需要快速计算形如 ...
2019-07-11 15:08:47 392
原创 【POJ3648】Wedding
【题目链接】点击打开链接【思路要点】需要输出方案的 2−SAT2-SAT2−SAT 问题模板题。时间复杂度 O(N+M)O(N+M)O(N+M) 。【代码】#include<cstdio>#include<vector>#include<algorithm>#include<cstring>#include<...
2019-07-09 20:41:44 303
原创 【校内训练2019-07-09】生成树
【思路要点】依次向图中加入 1,2,…,N(N−1)21,2,\dots,\frac{N(N-1)}{2}1,2,…,2N(N−1) ,则我们需要将当前的各个连通块的大小的可重集计入状态。时间复杂度 O(N2×f(N))O(N^2\times f(N))O(N2×f(N)) ,其中 f(N)f(N)f(N) 表示 NNN 的拆分数,当 N=40N=40N=40 ,有 f(N)=37338...
2019-07-09 14:40:31 258
原创 【校内训练2019-07-09】积性函数求和
【思路要点】所求的式子是约数和的形式,考虑枚举一个约数 iii ,计算其被算了多少次,则答案为∑i=1N∑j=1⌊Ni⌋[gcd(i,j)=1]i=∑i=1N∑j=1⌊Ni⌋∑g∣i,g∣jμ(g)i=∑g=1N∑i=1⌊Ng2⌋i⌊Ng2i⌋\sum_{i=1}^{N}\sum_{j=1}^{\lfloor\frac{N}{i}\rfloor}[gcd(i,j)=1]i\\=\sum_{...
2019-07-09 14:35:05 337
原创 【校内训练2019-07-09】探险队
【思路要点】考虑计算 fif_ifi 表示到达点 iii 后发现 iii 的一条邻边断开,最坏情况下到达 TTT 的的最短路。注意到图是无向图,可以从 TTT 出发建立一棵最短路树,则最坏情况显然是断开 iii 的父边的情况。枚举一条非树边 (x,y,w)(x,y,w)(x,y,w) ,则对于 x,yx,yx,y 路径上的一个非 Lca(x,y)Lca(x,y)Lca(x,y) 的点 ...
2019-07-09 14:23:05 371
原创 【校内训练2019-07-08】网格
【思路要点】首先,当 N,MN,MN,M 均为奇数,且给定的排列按先行后列的方式展开为一维后得到的排列为奇排列,问题无解,这是因为可以进行的任何操作不会改变这个排列的奇偶性。以下算法对所有不满足上述条件的排列给出了一组可行的构造。考虑 NNN 与 MMM 之中存在偶数的情况,不失一般性地,令 NNN 为偶数。我们可以较为简单地还原矩阵靠右侧的 N×(M−1)N\times(M-1)N×...
2019-07-08 14:50:49 310
原创 【校内训练2019-07-08】排序
【思路要点】记给定序列可以分成的最少的值域连续的上升子序列的个数 CntCntCnt ,则有Ans=⌈Log2Cnt⌉Ans=\lceil Log_2Cnt\rceilAns=⌈Log2Cnt⌉不难发现这也是答案的下界,考虑如何构造。显然每次操作时,每一个上升子序列种的所有数或是同被操作,或是同不被操作。因此方案的构造与 N,N−1,N−2,…,1N,N-1,N-2,\dots,1...
2019-07-08 14:23:45 178
原创 【校内训练2019-07-08】串
【思路要点】将一组 S2[i],T2[i]S_2[i],T_2[i]S2[i],T2[i] 看做一条边 T2[i]→S2[i]T_2[i]\rightarrow S_2[i]T2[i]→S2[i] ,则使得 S1[i]S_1[i]S1[i] 成为 T1[i]T_1[i]T1[i] 的交换过程对应了一条 S1[i]S_1[i]S1[i] 到 T1[i]T_1[i]T1[i] 的...
2019-07-08 13:57:18 379
原创 【校内训练2019-07-06】分组游戏
【思路要点】考虑将数组排序,由大到小处理各个元素。在状态中计入还没有用过的元素个数 jjj ,在处理到 iii 时,首先将 aaa 数组中 iii 的个数计入 jjj ,然后枚举 iii 个为一组的组数转移即可。时间复杂度 O(N2LogN)O(N^2LogN)O(N2LogN) 。【代码】#include<bits/stdc++.h>using namespac...
2019-07-08 13:36:22 341
原创 【LOJ574】「LibreOJ NOI Round #2」黄金矿工
【题目链接】点击打开链接【思路要点】可参考 官方题解 。以下为笔者个人的见解,方便起见,下称矿工为老鼠,金矿为洞。我们可以对洞的权值加上深度,老鼠的权值减去深度,从而不需要考虑树的边权。考虑新加一只老鼠带来的影响,可能的结果有如下三种:(1)(1)(1) 、与一个尚未匹配的洞一起加入当前已经匹配的集合。(2)(2)(2) 、取代当前已经匹配的集合中的一只老鼠。(3)(...
2019-07-07 20:35:52 1302 1
原创 【LOJ575】「LibreOJ NOI Round #2」不等关系
【题目链接】点击打开链接【思路要点】见 官方题解 。(反正也是我写的)时间复杂度 O(NLog2N)O(NLog^2N)O(NLog2N) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 262144;const int P = 998244353;typedef l...
2019-07-07 20:03:40 1316
原创 【LOJ573】「LibreOJ NOI Round #2」单枪匹马
【题目链接】点击打开链接【思路要点】见 官方题解 。(反正也是我写的)时间复杂度 O(N+M)O(N+M)O(N+M) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 1e6 + 5;const int P = 998244353;typedef long long ...
2019-07-07 20:01:41 526
原创 【LOJ555】抢红包
【题目链接】点击打开链接【思路要点】考虑 M=0M=0M=0 的做法,记 P(x,y)P(x,y)P(x,y) 表示经过 (x,y)(x,y)(x,y) 的概率,也即 (x+yx)AyBx\binom{x+y}{x}A^yB^x(xx+y)AyBx ,并记 Ft(x)=∑i=0tP(i,t−i)×xiF_t(x)=\sum_{i=0}^{t}P(i,t-i)\times x^i...
2019-07-06 16:32:43 406
原创 【LOJ138】类欧几里得算法
【题目链接】点击打开链接【思路要点】以下考虑实现函数 func(N,a,b,c)func(N,a,b,c)func(N,a,b,c) ,计算 0≤k1+k2≤100\leq k_1+k_2\leq100≤k1+k2≤10 的情况下所求式子的值,即∑i=0Nik1⌊ai+bc⌋k2\sum_{i=0}^{N}i^{k_1}\lfloor\frac{ai+b}{c}\rfloo...
2019-07-04 14:53:40 947 2
原创 【UOJ77】A + B Problem
【题目链接】点击打开链接【思路要点】最小割,考虑在为每个元素 iii 在源汇之间建点 pointi,0point_{i,0}pointi,0 ,连边 (s,pointi,0,bi),(t,pointi,1,wi)(s,point_{i,0},b_i),(t,point_{i,1},w_i)(s,pointi,0,bi),(t,pointi,1,wi) ,此时的最小割即为...
2019-07-04 13:46:25 308
原创 【2019 江苏省队集训】Day2 解题报告
【T1】 朝夕相处【思路要点】记不考虑旋转同构的答案为 G(N)G(N)G(N),答案为F(N)F(N)F(N),由BurnsideBurnsideBurnside引理,有F(N)=∑i∣NG(i)φ(Ni)NF(N)=\frac{\sum_{i\mid N}G(i)\varphi(\frac{N}{i})}{N}F(N)=N∑i∣NG(i)φ(iN)剩余问题在于计算 G(N)G(...
2019-07-03 13:30:13 948
原创 【2019 江苏省队集训】Day1 解题报告
【T1】 光影交错【思路要点】NNN 轮后仪式仍然进行的概率为 (1−p)N(1-p)^N(1−p)N ,当 p=10−5p=10^{-5}p=10−5 时,取 N>107N>10^7N>107 可以保证该概率在 10−2010^{-20}10−20 以内,因此忽略这部分情况不会导致精度要求不能接受的误差产生。记 f(i)f(i)f(i) 表示出现 ii...
2019-07-02 14:13:33 1378 1
原创 【省内训练2019-07-01】Match
【思路要点】考虑方差的期望的公式,记 F0=1,Fi=(2i−1)Fi−1F_0=1,F_i=(2i-1)F_{i-1}F0=1,Fi=(2i−1)Fi−1 , MetMetMet 表示可能的权值序列的集合,则有Ans=1∣Met∣∑a∈Met∑i=1N(ai−∑aiN)2NAns=1N×FN∑a∈Met∑i=1N(ai2−2ai(∑ai)2N+(∑ai)2N2)Ans=1N×FN∑...
2019-07-01 14:06:27 264
原创 【省内训练2019-07-01】Ring
【思路要点】对于一个边集的右端点 iii ,应当存在阈值 lftilft_ilfti ,满足左端点在 lftilft_ilfti 左侧时答案为 YesYesYes ,否则答案为 NoNoNo ,且不难发现 lftilft_ilfti 是单调的。使用类似 TwoPointersTwoPointersTwoPointers 的思想用 LCTLCTLCT 计算 lftlftlft 数组即可...
2019-07-01 13:25:39 229
原创 【省内训练2019-07-01】Exchange
【思路要点】不妨将 NNN 增加至 2x−12^x-12x−1 。注意到 222 操作涉及到的区间在 NNN 为 2x−12^x-12x−1 时恰好是线段树上的一个区间,可以直接交换线段树上对应的指针。线段树维护操作即可。时间复杂度 O(MLogN)O(MLogN)O(MLogN) 。【代码】#include<bits/stdc++.h>using namesp...
2019-07-01 13:25:33 270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人