ZJOI2018游记Round1
All Falls Down
非常感谢学弟学妹们捧场游记虽然这是一篇假游记
ZJOI Round1今天正式落下帷幕。在这过去的三天里遇到了很多朋友,见识了很多有趣的人和事。或许这只是我整个OI生涯中的卷首一场,但是允许我谨此游记献给所有的一切、所有的你们。
ZJOIday1游记
8:30:然而报告厅里选手们陆陆续续地并没有到齐……
第一场主讲人是绍一的任轩笛,讲课pdf的标题一如既往地是「杂题选讲」听主讲人说都是一些套路题
Binary Cards
不上升序列
Sum of Powers
Perpetual Subtraction
题意
一开始有一个数x,每次把x变成[0, x]内随机一个整数。
给出一开始数字为0 ∼ n的概率以及轮数m,求m轮后剩下数字
是i的概率。
对998244353取模。
范围
n ≤ 10^5
, m ≤ 10^18。
看上去似乎可做的概率题(但是我不会小数取模)
小L的计算题
(又是数学题)
星空
Chef attic window
(数学题)
Query on a tree VII
题意
给出一棵n个点的无根树,每个点有点权。
点的颜色有黑白两种,初始所有点都为黑色。
需要支持:单点反色,单点修改点权,询问一个点所在的同色连
通块中的最大点权。
范围
n, m ≤ 10^5。
据说是一道数据结构题
Jabby's shadows
题意
一棵树,树有边权,每个点有黑白两种颜色,要求支持:
1 u:询问点u所在同色连通块中,最远两点的距离,即直径。
2 u, v, c:将u ∼ v链上颜色都修改为c。
范围
n, q ≤ 100000。
上一题的加强版。
但是听课之后仍然不懂如何修改一条链的颜色……
Making Change
题意
有n种硬币,第i种面值是Di,每种都有无限个。求拼出C的方案
数。两种方案不同仅当某种硬币使用的数量不一样。
范围
n ≤ 50, Di ≤ 500, C ≤ 10^100
第一眼看上去好眼熟,以为终于来了一道可做题……好吧数据范围有些可怕
正解依然是数学方法。我能说基本听不懂吗……
不过发现了一个很有趣的东西:洛必达法则。找了一个例子推了推——好生神奇!以前也有遇到过求∞/∞这样式子的极限,不过都是瞎推来推去然而并没有推出来。
13:03:三楼机房的初中生都去打游戏了;迟到三分钟进场
下午第一场讲课人是陈嘉乐。好像又是杂题选讲的样子
Test 1
Test 2
一个网格图n,m<1e5被染为黑白两色。对于所有的黑点(x,y),(y,z),将(x,z)染为黑色。询问最后一共有几个黑点。
是的看上去非常可做。然而我只会用vector暴力枚举。
标算讲了弱连通块及染色如此的图论方法。但是,???
Test 3
一颗有根树有黑白两色;初始位置在root上,每次随机等概率走向一个儿子,当位于叶子节点时停止。对于每次走到的节点,如果当前是白点则仅在第一次走上该点时cnt++否则每次cnt++。询问最终cnt的期望值。
据说是一道概率的入门题。看上去dp可以?不过标算我没有仔细听,似乎要解方程?
Test 4
给定一个字符串S,字符集大小小于等于8。当且仅当Si=Sj或|i-j|=1时存在i->j的有向边。询问最后图的直径 和 距离为直径的所有点对。
Test 5
给定一个n≤15个点,m≤n(n-1)/2条边的无重边的有向图G,保证任意一条边(xi,yi)中xi<yi。考虑G中的所有子集K,并在G中删去这些边,形成新的图G'。
小H,小R在G'上玩游戏,小H先手,两人轮流操作一次。起初在点1,点2有两颗石子。每次操作可以将一个石子移动到一个与它相连的点上,最后无法移动者失败。
我的想法:枚2^m的图,每次计算1,2的SG值。 显然是会TLE的
标算:状压DP:dp出有哪些图1、2点的SG不同。将图分层操作,状压储存。并没有搞清楚实现细节
Test 6
对于一个初始值为0的序列{an},共染k次颜色,每次可以在[l,r]上覆盖上第i种颜色。询问最终可能序列的方案数。
法一:基础的dp
法二:数学方法求解辅助多项式F(x)
Test 7
定义一个森林的价值为森林中每棵树的点数的平方和。现在给定一颗n≤1e5的树,求随机删去i=1...n条边后的森林的价值的期望。
「简单」的计数/数据结构题。
然而我依然不会
15:07:下午第二场开讲,吴瑾昭的网格图算法选讲
听主讲人说这是今年冬令营的某营员交流课件
完全连通
bzoj1001
求网格图最大流/最小割
ZJOI2016旅行者
正权网格图多次询问最短路
网格图的SSSP
首先这个网格图是有可能有负边但是一定没有负环的,那么因为:
- dijkstra无法跑负权图
- SPFA在网格图上跑多半是会爆炸的
所以要考虑新的SSSP
这个网格图的SSSP是个分治操作。
令sp(G, s)为求图G中点s到其他各点的距离
- 若G的节点数小于等于2,则返回
- 沿着G的长边的中线把G分为G0,G1
- 取中线上一点r
- Di = sp(Gi, r)
- 算出Gi中任意两个中线上的点的距离δi[u][v]
- 对每个中线上的点v算出B[v] = dist(r, v)
- 对每个点v算出d'[v] = dist(r, v)
- 对每个点v算出d[v] = dist(s, v)
- d即为所求
然后还讲了step6,7,8的具体实现细节。但是台下有人在听吗???
Decremental 2-Edge-Connectivity
网格图之桥
今天讲课用到好多高级的数据结构、玄学的数学方法和那个神奇的FFT……
嗯……还有非常非常多东西要学。有些怀疑一年之后能否达到这样的水平……
ZJOI day2 游记
8:31:绍一季雨田开始讲课
然而课件名称叫做“CF水题选讲”
CF578E Walking!
CF788D Recover a functional graph
题目大意
交互题:平面上有一些平行于x轴和平行于y轴的直线。每次询问可以询问平面上的一个点,交互库会给出与这个点距离最近的直线的距离。你需要确定所有的直线。
数据范围
平行于x轴或y轴的直线条数个不超过1e4,坐标范围绝对值不超过1e8.询问次数不能超过3e5
看上去可做的交互题……但是如果有很多平行于y轴的直线岂不是很难判断
标算
询问形如(x,x)的点,当得到的答案为0时,则询问点(x,t)和(t,x)和(t,x)确定答案是否为0,其中保证(t,t)答案不为0。
因此倍增做下去就可以了。
然而这题是会被卡常数的。分析一下发现在初始几步浪费比较大,所以可以在(x0, x0)的答案为0时判断(x0+1e3,x0+1e3)的答案是否为1e+3,是则直接跳到(x0+1e3,x0+1e3).
CF713E Sonya Partymaker
题目大意
有n个人,m个凳子,其中凳子是环形排布的。
CF744D Hongcow Draws a Circle
题目大意
平面上有n个红点,m个蓝点。需要画一个最大的圆,满足圆内至少有一个红点,且没有蓝点。边界上的点可以视为在圆内,也可以不在。输出最大的圆的半径。无限大则输出-1。
mine
我的想法是给蓝点求个凸包先?
标算
- 如果有红点不在蓝点形成的凸包内,显然输出-1
- 如果答案有限,
CF618G Combining Slimes
题目大意
有一个1xm的面板,两个值为x的数字块碰到一起会形成一个x+1的数字块。一开始面板上没有数字块。接下去会一直执行以下操作,直到无法操作:在面板最右端会生成一个数字块,有p的概率这个数字块的值是1,有1-p的概率这个数字块的值为2.询问最终面板上数字和的期望值。
数据范围
1 ≤ n ≤ 10^9, 1 ≤ p < 10^9
标算
……dp做法
技巧
输出实数题一般两种套路
- 二分
- 爆精度
CF794G Replace All
CF744E Hongcow Masters the Cyclic Shift
标算
建模为图论
CF704E Iron Man
题目大意
有一颗n个节点的树,有m个人,每个人有四个参数(t,c,v,u)表示这个人t时刻在点v出现,并以每秒c条边的速度向点u移动,在到达u点后消失。询问最早的相遇时刻。若u=v则表示这个人仅在t时刻出现。
数据范围
n,m≤1e5,t,c≤1e4
标算
首先考虑退化成链的做法。那么每个人都可以表示成为在t-x坐标系上的一条线段。
那么再用树剖dfs序代替x轴,再用set玄学维护就可以了(?)
CF645G Armistice Area Apportionment
题目大意
给定两点P(a,0),Q(-a,0),现在在平面上有n个点,
标算
以n个点为圆心作n个过P的圆。求所有圆交点中与点Q最近的交点,输出该交点到点Q的距离。接下去二分答案,转化为求圆上弧是否相交的问题。
(然而最后一步仍然不会)
CF750H New Year and Snowy Grid
题目大意
有一张有障碍的(永久障碍)\(h×w\)的网格图,问是否存在一条路径,从左上角出发到右下角再回到左上角,其间不重复经过同一个点(除起点外)。有\(q\)组询问,每组询问给出\(k\)个非障碍点,问是否存在不经过这\(k\)个点的合法路径。
数据范围
h,w≤1e3,q≤1e4,k≤10
标算
首先如果只有一组询问,那么这就是一个经典的网络流。我们可以将每个点拆点,如果这个点是障碍点,那么i向i'连流量为0的边,否则i向i'连流量为1的边,表示每个点只能经过一次。然后每个点向周围的四个点连流量为1的边,然后从S到T跑最大流。如果流量小于2,那么答案就是NO,否则答案就是YES.
然后试图最大流转最小割。不过因为建的不是平面图,没有方法直接最短路。
……接下去图论算法,试图构造 最短路模型。
……接下去转为连通性问题。
CF772E Verifying Kingdom
题目大意
交互题:交互库有一颗二叉树,其中有n个叶子节点,所有节点除叶子节点外都有两个儿子。每次可以询问(a,b,c)三个不同的叶子节点,交互库会回答lca(a,b),lca(b,c),lca(a,c)中深度最深的一个。输出与交互库同构的任意一棵树。
数据范围
n≤1e3,询问不能超过10n
标算
考虑挨个将点加入树中,问题转换为如何快速判断一个点在树中的位置。
然后点分治。
中午休场时分:播放《帕丁顿的熊》
下午12:59:下午第一场主讲人镇海梁晏成
课件名称:JOIsc(Japanese OI Spring Camp)好题选讲
Port Facility
Sparklers
题目描述
M个人分别在Ai的位置上站立,同时每个人都有烟花且他们每秒可以跑s米。初始只有第k个人的烟花正在燃烧,并且烟花只能够燃烧T秒;现在要将烟花传递下去。烟花能够从A传递到B当且仅当:
- A和B的位置相同
- A的烟花恰好燃烧到T秒
- B的烟花尚未燃烧
mine
那么二分答案是显然的,问题是如何check()。
Cultivationhh
题目描述
有一个W×H的格子,其中有n个格子长草。接下去可以选择上下左右四种操作。“上”操作代表所有长有草的上边一个格子长上草。
标算
先考虑一维的情况,那么只有左右的操作。
例如X---X-需要3次,而---X---X-需要4次。
设左操作有L次,右操作有R次;左边起有A个空,右边起有B个空,两块草之间有最大C个空。那么必须满足:
- L≥A
- R≥B
- L+R≥C
然后在二维中考虑上下操作的次数。继而dp处理,最终得到答案。
Broken Device
题目描述
通信题:你需要传递一个数X。
你可以发送一份长度为150位的01串。由于发送装置是损坏的,在这150位中,有指定的K位是损坏的,这些位置上只能发送0.你加密时知道这些信息。
同时需要根据你发送的01串还原出X。注意,你解码时只知道发送装置是损坏的,而不知道K的值,也不知道哪些位置只能发送0
数据范围
X≤1e18,K≤40.
mine
标算
random_shuffle? / 某种神奇的压缩方式?三位分一个段。
Railway Trip
Arranging Tickets
题目描述
有N个车站顺时针围成一圈,编号为1...N。有N种车票,其中第i种车票可以从第i个车站前往第i+1个车站;也可以从第i+1个车站前往第i种车站。
只能以套票的形式购买车票,一组套票包含每一种车票恰好一张。
现在有M类人,第i类人共有Ci个,他们都要从Ai前往Bi个车站,询问要满足所有人至少需要多少组套票。
标算
(有些抽象……加上我想睡觉了……自从没有听懂讲课的“翻转”操作之后就再也没听懂了……)
Long Mansion
标算
似乎是DP?
Natural Park
题目描述
交互题:有一个N个点,M条边的无向图,每个点的度数≤7.每次你可以询问(x, y, p[]),交互库会返回只经过p[]中的点能否从x走到y
最多询问45000次,求这张图
数据范围
N,M≤1500
标算
先考虑树退化为链的过程;然后再……
Long Distance Coach
题目大意
有一辆客车从0前往W,车速为每秒一个单位长度。途中有N个补给站位于S1,...,Sn。在起点或补给站可以给客车的饮水机加水,其中饮水机容量不限且每一单位的水价格均为W。
起初车上有M个乘客,第i个乘客会在时刻Di+T×k喝一单位的水;如果此时饮水机没有水了,这位乘客就会下车并且索要Ci的赔偿费。不会有人在补给站的时候需要喝水。
司机会在所有T×k的时候喝一单位的水,此时饮水机内必须要有水
询问如何分配在起点和补给站加水的量,使得总花费最小。
mine
显然的,既然饮水机容量不限且水的单价相同,那么可分为两种情况:
- 让所有人都有水喝:在起点就买下所需的水。
- 把那些要求赔偿费的乘客赶下去:起点所买的水小于所需的
但是如何继续贪心呢?……
标算
同上分为两类,然后dp做法。
转移方程显而易见之后考虑复杂度。然后据大佬所说,可以斜率优化+单调栈优化dp;或者cdp分治维护一下;或者一种用gcd的方法优化(?)
Abduction 2
题目描述
有𝑊+𝐻个街道,其中𝑊条平行𝑦轴,𝐻条平行𝑥轴,它们相交形成𝑊×𝐻个十字路口。每条街道有一个重要度,重要度两两不相同。给定一个起点,开始时你可以选择任意一个方向并顺着街道走下去,如果在十字路口拐弯可以走到重要度更大的街道就拐弯,方向随意。如果走到尽头那么就停止行走。𝑄次询问一个起点,求走到尽头的最长路的长度
数据范围
W,H≤500000,Q≤100
标算
先考虑一次询问直接搜索,然后仔细分析一下可以加上一些剪枝条件。
后来梁晏成成功证明了记忆化之后复杂度不仅小于O(NQ)并且还只是O(N√Q)的(因为记忆化之后常数比较大)
Dragon 2
有𝑁条龙,第i条龙坐标为(𝐴_𝑖,𝐵_𝑖),属于第𝐶_𝑖个部落。有两个人类的村庄(𝐷1,𝐸1 ),(𝐷2,𝐸2)。接下来有𝑄次询问,每次询问给出𝐹,𝐺,表示所有属于𝐹的龙向属于𝐺的龙作射线,问与线段(𝐷1,𝐸1 )−(𝐷2,𝐸2)的交点个数。不存在三点共线。
标算
理解为向量的二维偏序判断问题。然后再分块技巧,离线预处理玄学可过(据说每次暴力也直接可过)
City
题目描述
通信题
The End
省选一试结束啦(不过我反正就是去打酱油的节奏)
话说题目的部分分给的还是很良心的。然而我并没有拿到
A题暴力处理线树,看上去开O2跑得还挺快。
B题看上去就是数据结构大题,果断放弃连暴力都没写。
C题猜结论,每次操作应该是O(1)或者O(log n)的?瞎猜瞎猜捣鼓出了跟gcd有关的东西。但是貌似我的结论在M≤1e3的时候跑的基本正确然而M≥1e5时候就要靠rp了???
诶诶诶,好像在两个学校同时报省选那么会有两张准考证
所以这就是我最终考试编号和狗牌编号不一样的理由吗……