[LOJ6029~6052]雅礼集训 2017 选做
代码可以在loj上看我的提交记录。
Day 1
[LOJ6029]市场
对于一次除法操作,若区间内所有数的减少量均相同则可视作区间减法,否则暴力递归下去。显然一个线段树节点只会被暴力递归进去\(\log(\text{Max-Min})\)次。对每个点定义势能函数,每次暴力递归都会减小势能,而修改操作只会使\(\log n\)个节点恢复原势能,所以复杂度\(O((n+m\log n)\log a)\) 。
[LOJ6030]矩阵
显然需要构造出一行全黑,然后用这行全黑去覆盖剩下所有非全黑行即可。
考虑把第\(i\)行构造成全黑。只需要第\(i\)列上有黑色就可以一个一个地全部覆盖成黑色,否则若第\(i\)行原本至少存在黑色则可以先用一次操作让第\(i\)列有黑色。
可以发现无解当且仅当不存在黑色。
[LOJ6031]字符串
首先观察到\(qk\le10^5\) 。
如果\(k\)较小,则可以\(k^2\)地计算\(w\)的每个子串在\(s\)中的出现次数,再算一下对\(w\)的所有询问中每个子串分别被问了多少次,复杂度\(O(qk^2)\)。
如果\(k\)较大,那么可以对所有串建广义\(\text{SAM}\),然后暴力枚举每次询问,倍增定位出当前询问区间对应子串的后缀自动机节点,复杂度\(O(qm\log n)\)。
将上述两者结合即可。
Day 2
[LOJ6032]水箱
根据隔板高度可以建出一个\(2n-1\)个点的树形结构,可以将每个要求倍增定位到树上节点,然后就是一个简单树\(dp\),记\(f_{i,0/1}\)表示\(i\)号点是否被水淹没时最多可满足的要求数目,在每个点内按要求的高度排序,贡献是前缀\(1\)的数量加上后缀\(0\)的数量。
[LOJ6033]棋盘游戏
经典的二分图博弈模型。对所有空格做二分图匹配,若某个点一定在最大匹配中则从该点出发先手必胜,否则后手必胜。由于点数较多所以需要用网络流实现二分图匹配。
[LOJ6034]线段游戏
李超线段树模板题。
Day 4
[LOJ6035]洗衣服
求出\(f_i,g_i\)分别表示洗干净/烘干前\(i\)件衣服的最短时间,那么答案就是\(\min_{i=1}^n\{f_i+g_{n-i+1}\}\)。
[LOJ6036]编码
对每个串设\(0/1\)变量表示问号处填什么,把所有串(含问号的串填上\(0/1\)后分别)插入\(\text{Trie}\)树,向路径上的点连边。需要注意的是\(\text{Trie}\)树上同一个节点内最多只能有一个取值为真,可以使用类似UOJ210寻找罪犯的方法优化建边。
Day 5
[LOJ6038]远行
两棵树合并以后新树直径的两端点一定是原来两棵树直径四个端点中的两个。所以直接\(\text{LCT}\)维护连通块内直径即可。
[LOJ6039]珠宝
设\(f_{i,j}\)表示考虑完售价小于等于\(i\)的珠宝,花费\(j\)能够获得的最大收益。对于售价相同的所有珠宝肯定是优先选价值收益最大的,所以转移函数是凸的,那么就决策单调性搞搞,复杂度\(O(mk\log m)\) 。
[LOJ6040]矩阵
首先求出矩阵\(C\)的秩\(r\),对于所有秩为\(r\)的矩阵它们的答案都是一样的,所以就只需要求出“有多少对矩阵\((A,B)\)相乘得到的矩阵\(C\)的秩为\(r\)”后把答案除以秩为\(r\)的矩阵个数就行了。
设\(f_{i,j}\)表示一个\(i\times n\)的矩阵其秩为\(j\)的方案数。这个\(dp\)可以在\(O(n^2)\)的时间内完成。
然后考虑设\(A\)的秩为\(x\),那么能够组成的\(C\)就有\(f_{x,r}\)种,而组成同一种\(C\)的\(B\)均有\(2^{n(n-x)}\)种,因此答案为\(\sum_{i=r}^nf_{n,i}f_{i,r}2^{n(n-x)}\),最后再除个\(f_{n,r}\) 。
Day 7
[LOJ6041]事情的相似度
\(\text{YCB}\)冬令营模拟搬的题目,要是再晚两天考的话应该就做到了吧。
考场上写的是\(\text{SAM+LCT}\)然后离线询问按右端点挂链,\(\text{BIT}\)维护后缀最小值。具体来说就是两前缀的\(\text{lcs}\)就是它们在前缀树(正串建\(\text{SAM}\)构出的\(\text{parent}\)树)上的\(\text{lca}\)的\(\text{len}\)值,所以相当于是要求区间内任两点的\(\text{lca}\)的\(\text{len}\)的最大值。从左往右枚举右端点,每次相当于做一个\(\text{access}\)操作,用\(\text{LCT}\)实现。
把树状数组换成可持久化线段树可以做在线。貌似还有一种\(\text{SAM+dsu}\)的做法。
[LOJ6042]跳蚤王国的宰相
令\(S=\lfloor\frac n2\rfloor\)。
一个点要作为重心,就要求它的每个子树大小不超过\(S\)。显然只有原重心所在的子树会不满足这一条件,所以考虑把这一部分的大小砍到\(S\)以下。
显然只会割原重心的相邻边,贪心优先割大的。同时有一个结论是所有点除原重心外答案相差不超过\(1\) 。
[LOJ6043]蛐蛐国的修墙方案
考虑\(i\)向\(p_i\)连边,这样的图一定是由若干个环构成,且每个点的度数为\(2\)。因此为了有解,每个环的大小都应为偶数,且选取方案有且仅有两种(考虑一条边选或不选,其余的边随之确定)。
这样就可以做到\(O(2^{\frac n2}n)\)的搜索复杂度。考虑到当环大小为\(2\)时,在左边放左括号一定不会更劣,所以就只需要考虑所有大小大于等于\(4\)的环即可,复杂度\(O(2^{\frac n4}n)\)。
Day 8
[LOJ6044]共
实际上就是左侧\(k\)个点右侧\(n-k\)个点的完全二分图生成树计数。给点标号还需要乘上一个\(\binom {n-1}{k-1}\)。
完全二分图生成树计数可以用矩阵树定理列出基尔霍夫矩阵后手解行列式,算出来结果是\((n-k)^{k-1}k^{n-k-1}\)。
[LOJ6045]价
先求出任意一组完美匹配,为了使左右两边选的点数相同,如果左边的\(i\)点选了,其一条出边指向右边的\(j\)点,那么\(mat_j\)这个左边的点也一定要被选。
“\(x\)选了\(y\)就一定要被选”,这是最大权闭合子图的经典模型。最小割即可。
[LOJ6046]爷
\(\text{dfs}\)序转区间。分块暴力,定期重构。
建块的时候保证块内极差不超过\(10T\),且块的长度不超过\(T\),块内以值域为下标维护前缀和。
查询就先二分答案再查区间内有多少个数\(\le k\)。
Day 10
[LOJ6047]决斗
找一个位置\(x\)使得没有人会从\(x-1\)走到\(x\)。可以令每个位置上的值为\(A_i\)指向这一位置的精灵数量\(-1\),然后前缀和一下最小值出现的位置就是\(x-1\),其后面一个位置就是\(x\)。
然后就从\(x\)出发走,用一个\(\text{std::set}\)维护当前可自由选择的精灵集合,类似田忌赛马那样操作即可。
[LOJ6048]数列
因为求的是严格上升,所以可以把数列反过来再在前面写一遍,然后直接求最长上升子序列就是第一问的答案。
第二问,对最长上升子序列记个数,再乘上\(2^{n-maxlen-1}\)即可。
Day 11
[LOJ6052]DIV
复数的条件是\(ac-bd=n,ad+bc=0\)。
令\(a=px,b=qx,c=py,d=-qy(x,y,p\in N^+,q\in N,(x,y)=1,(p,q)=1)\),那么就有\(n=xy(p^2+q^2)\)。
我们要求的是\(\sum_{xy(p^2+q^2)=n,(p,q)=1}px\)。实际上还要当\(q\neq0\)时要乘\(2\),因为这里只枚举了\(b>0\)的复数,而\(b<0\)的显然是对称的。
考虑转化一下\(\sum_{(p^2+q^2)|n,(p,q)=1}p\sum_{x|\frac{n}{p^2+q^2}}x=\sum_{(p^2+q^2)|n,(p,q)=1}p\times\sigma(\frac n{p^2+q^2})\)。
把\(1\)到\(n\sum\)起来答案是
\[\sum_{i=1}^n\sum_{(p^2+q^2)|i,(p,q)=1}p\times \sigma(\frac i{p^2+q^2})\\=\sum_{i=1}^n\sigma(i)\sum_{p^2+q^2\le\lfloor\frac ni\rfloor,(p,q)=1}p\]
然后把\((p,q)=1\)这个限制反演掉就是
\[\sum_{d=1}^{\sqrt n}d\mu(d)F(\frac {n}{d^2})\]
\[F(n)=\sum_{i=1}^n\sigma(i)\sum_{p^2+q^2\le\lfloor\frac ni\rfloor}p\]
对于所有要计算的东西,预处理其前\(n^{\frac 23}\)项,剩下的暴力并记忆化,复杂度就对了吧。
[LOJ6029~6052]雅礼集训 2017 选做的更多相关文章
- loj6029 「雅礼集训 2017 Day1」市场
传送门:https://loj.ac/problem/6029 [题解] 考虑如果有一些近似连续的段 比如 2 2 2 3 3 3,考虑在除3意义下,变成0 0 0 1 1 1,相当于整体-2 又:区 ...
- LOJ6029「雅礼集训 2017 Day1」市场 (线段树)
题面 从前有一个学校,在 O n e I n D a r k \rm OneInDark OneInDark 到任之前风气都是非常良好的,自从他来了之后,发布了一系列奇怪的要求,挟制了整个学校,导致风 ...
- 【LYOI 212】「雅礼集训 2017 Day8」价(二分匹配+最大权闭合子图)
「雅礼集训 2017 Day8」价 内存限制: 512 MiB时间限制: 1000 ms 输入文件: z.in输出文件: z.out [分析] 蛤?一开始看错题了,但是也没有改,因为不会做. 一开 ...
- 「雅礼集训 2017 Day7」跳蚤王国的宰相(树的重心)
题面 来源 「 雅 礼 集 训 2017 D a y 7 」 跳 蚤 王 国 的 宰 相 传 统 2000 m s 1024 M i B {\tt「雅礼集训 2017 Day7」跳蚤王国的 ...
- LOJ_6045_「雅礼集训 2017 Day8」价 _最小割
LOJ_6045_「雅礼集训 2017 Day8」价 _最小割 描述: 有$n$种减肥药,$n$种药材,每种减肥药有一些对应的药材和一个收益. 假设选择吃下$K$种减肥药,那么需要这$K$种减肥药包含 ...
- loj #6046. 「雅礼集训 2017 Day8」爷
#6046. 「雅礼集训 2017 Day8」爷 题目描述 如果你对山口丁和 G&P 没有兴趣,可以无视题目背景,因为你估计看不懂 …… 在第 63 回战车道全国高中生大赛中,军神西住美穗带领 ...
- 「雅礼集训 2017 Day7」事情的相似度
「雅礼集训 2017 Day7」事情的相似度 题目链接 我们先将字符串建后缀自动机.然后对于两个前缀\([1,i]\),\([1,j]\),他们的最长公共后缀长度就是他们在\(fail\)树上对应节点 ...
- 「雅礼集训 2017 Day2」解题报告
「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...
- 「雅礼集训 2017 Day1」 解题报告
「雅礼集训 2017 Day1」市场 挺神仙的一题.涉及区间加.区间除.区间最小值和区间和.虽然标算就是暴力,但是复杂度是有保证的. 我们知道如果线段树上的一个结点,\(max=min\) 或者 \( ...
随机推荐
- 雷林鹏分享:C# 委托(Delegate)
C# 委托(Delegate) C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变. 委托 ...
- mac 无法打开xx ,因为无法确认开发者身份
系统偏好与设置 - 安全性与隐私 - 通用 允许从以下位置下载的应用: 选择 [任何来源],如果没有这个选项,使用终端执行下面的命令: spctl --master-disable (spctl空格 ...
- Mashmokh and ACM CodeForces - 414D (贪心)
大意: 给定n结点树, 有k桶水, p块钱, 初始可以任选不超过k个点(不能选根结点), 在每个点放一桶水, 然后开始游戏. 游戏每一轮开始时, 可以任选若干个节点关闭, 花费为关闭结点储存水的数量和 ...
- hihoCoder-1087 Hamiltonian Cycle (记忆化搜索)
描述 Given a directed graph containing n vertice (numbered from 1 to n) and m edges. Can you tell us h ...
- iOS UI-QQ聊天布局
一.Model BWMessage.h #import <Foundation/Foundation.h> typedef enum{ BWMessageMe = ,//表示自己 BWMe ...
- laravel中通过查询构造器,实现数据的curd
//查询构造器: public function query1(){ //利用查询构造器,插入数据: /*$num=DB::table('student')->insert( ['name'=& ...
- POJ 2513 字典树+并查集+欧拉路径
Description: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的. 解题思路: 可以用图论中欧拉路的知识来解这道题,首先可以把木 ...
- ZOJ 3829 Known Notation 贪心 难度:0
Known Notation Time Limit: 2 Seconds Memory Limit: 65536 KB Do you know reverse Polish notation ...
- sgu 129 Inheritance 凸包,线段交点,计算几何 难度:2
129. Inheritance time limit per test: 0.25 sec. memory limit per test: 4096 KB The old King decided ...
- Webbrowser checkbox
var i:integer; t:OleVariant;begin t := EmbeddedWB1.Document; for i := 0 to t.all.length - 1 do ...