省选模拟21 题解

A. 灯

容易发现问题是连通块数,因为原图是树,可以用点数(为$1$的点)减边数(连接相邻的为$1$的点的边)表示。

点数是易于维护的,所以问题是维护边数。

考虑一个情况,每种颜色的出现次数都很少,那么可以直接在原序列上暴力。

另一种情况,每种颜色的出现次数都很多,并且颜色总数不多。

那么可以预处理出颜色两两之间的贡献,维护当前为$1$的颜色,每次暴力扫每种颜色,来得到当前获得的边数。

结合两种情况,考虑根号分治。

问题还有小颜色与大颜色之间的边的贡献。

这个顺便统计就好了,一个常用的套路是提前维护。

B. 十字路口

一个很神仙的操作是,将大小的对应关系转化到边上。

设$x_i$表示第$i$次观察的时间(对于周期取$mod$)。

根据同一个路灯多次被观察,可以得到$x_i-x_j=k$的关系,注意这个方程也是在$mod$周期意义下的。

考虑建边$(i,j)$,边权为$k$。

可以发现任意一个环都是周期的倍数。

可以理解,最小环就是合法的周期。

所以可以通过$floyd$求最小环,这样的复杂度是$O(m^2n+m^3)$。

转化一下,令$y_i$表示第$i$个路灯被观察的相对时间。

根据同时观察多个路灯,也可以列出一些方程,建出对应的边。

同样跑最小环,这样的复杂度是$O(n^2m+n^3)$,结合两个算法,复杂度就对了。

正解是将暴力的建图,转化为将权值(也就是被观察的时间)排序,再对每组相邻的权值建边。

然后任意一个简单环都是解,不知道为什么这样是正确的。

C. 密室逃脱

是一个非常神的$dp$。

设$f_{i,j}$表示当前考虑到第$i$个房间,恰好有$j$个人可以到达第$i$个房间的条件下前$i$个房间能放的最大的人数。

可以考虑一下转移,实际上就是在合法的前提下,考虑每种情况。

如果$j<a_i$,那么左侧的人一个都过不去。

分两种情况讨论,若右侧的人过不来,那么可以转移到$f_{i+1,0~b_i-1}$。

若右侧的人能过来,那么可以转移到$f_{i+1,j+b_i}$,即右侧的人为了过来,留下了$b_i$个人,但是左侧的人不够开门了。

如果$a_i<=j<a_i+b_i$,因为现在的人已经够开左侧门的了,所以只有一种情况,即这边留下了$a_i$个人开着门,剩下的人过去,即转移到$f_{i+1,j-a_i}$。

如果$j>=a_i+b_i$,那么左侧右侧都可以开门,所有人都能过去,只能转移到$f_{i+1,j}$。

这样分析过来,发现只有第一种情况需要给$f$数组加上一个值,也就是可以在这个位置放上一些人。

原文地址:https://www.cnblogs.com/skyh/p/12285319.html

时间: 2024-10-20 09:34:14

省选模拟21 题解的相关文章

省选模拟6 题解

A. Yist 首先考虑怎样的情况答案是不收敛的. 操作中涉及到对一个权值非$0$,并且不作除法的点的加法贡献. 因为只要最终的答案,可以想到对每个点作为出边的贡献分别处理. 部分分提示求出第一次迭代的贡献,发现对于每个点,贡献都是一个等比数列,所以只要代入求和公式就好了. 然而暴力做的复杂度是$O(mk)$的,会被菊花图的数据卡掉. 考虑如何优化这个东西,根据套路我们将点按照度数分块. 定义度数大于$\sqrt m$的点为重点,度数小于等于$\sqrt m$的点为轻点. 分别讨论: 对于对轻点

省选模拟七 题解

写在前面: 这次考试的策略还是蛮正确的 发现了$T2$是水题后先开了$T3$的$60pts$暴力 剩下时间连打带调外加考场刚好用完时间 但可惜的是$T1dp$求两点之间最小代价由于转移出环被弃掉了 其实用$bfs$求最小代价就可以$AC$了 实力不济 就没什么好说的 A. 翻转硬币 标签: $bfs+$状压$dp$ 题解: 先对序列差分 问题转化为每次可以同时异或两个点,求最小代价 同时消去两个点的代价可以用$bfs$预处理出来 源点的个数就是差分序列的$1$的个数 有了这个,状态便有了明显的层

省选模拟13 题解

A. 同桌的你 每个人渴望与一个人当同桌. 容易发现这个关系形成内向基环树森林. 问题转化为求基环树森林的最大匹配. 任意选一条环上的边,分别尝试该边为匹配边.非匹配边即可. B. 大水题 一个常用的但想不到的东西:将每种颜色出现次数的差值为定值,转化为对颜色序列差分后相等. 然后暴力的做法是枚举2^8,表示答案出现在指定的颜色集合中,分别将差分数组插入.查询哈希表即可. 下面是一个优化: 容易发现可行的颜色集合对于同一个时刻只有不超过8种. 对于每一个左端点,随着右端点的右移,区间颜色集合改变

[考试反思]0208省选模拟21:限制

估分35+14+5=54. 一个喜闻乐见的蓝色的零. 撞了$c++11$的关键字$ref$.长见识. 关键是本机因为太慢所以开不开$c++11$,一开就编译好久,所以一直没有发现... 通读三道题,没看懂题.再读一遍,啥都不会.然后开始想,然而啥都没有想出来. 上来先看的T2觉得比较简单(?).然后就开始写.然而少考虑了不少情况,因为数据的特殊性拿到了一些部分分 然后继续想剩下俩题的正解,再然后就没多少时间了(?). 这时候发现T1是一个非常经典的大小点问题,想的非常麻烦. 最后剩半个多小时的时

NOIP模拟21题解

Contents Contents 六元组 Description Input Output 数据范围与约定 Solution 牛排序 Description Input Output 样例解释 Solution Step1 Step2 Step3 Step4 打砖块 Description Input Output 数据范围与约定 Solution 1.六元组 (six.c/.cpp/.pas) Description 有n个整数,现在想知道有多少个六元组(a,b,c,d,e,f) 满足:(a

省选模拟五 题解

写在前面: 我好菜啊 伯努利数和自然数幂和的式子都能忘 A. 青蛙 标签: 贪心+二分 题解: 首先我们贪心的让尽量多的青蛙免费跳过去,可以二分求出 考虑剩下的青蛙如何让费用最小: 假如免费的青蛙非零,那么一定可以把中间的石头跳完 这种情况下其他每个青蛙的最小花费一定是一次 另一种情况是没有免费的青蛙 直接让花费最小的青蛙把中间的石头跳一遍,其他的花费仍然都为一次 B. 一起自习的日子 标签: 伯努利数 题解: 我们知道伯努利数有两种$B^{-}$和$B^{+}$ 其中: $$\sum\limi

省选模拟22 题解

A. 遮天蔽日 学习了计算几何相关的很多新技巧. 求过一点$P$,圆$O$的切线:通过两点距离.半径,用反三角函数可以解得一个角度,然后就可以算了. 求直线$PQ$,与圆$O$的交点:作点$O$关于$PQ$的垂线,通过半径和垂线长度,可以算得垂足与交点的距离,然后就可以算了. 求多边形的重心:任选一点$O$,选择顺时针(逆时针)上相邻的每个点对$(P,Q)$,对横纵坐标分别加权平均,加的权为面积. 公转:使重心旋转,保持每个点与重心的相对位置不变,整个多边形的朝向不变. 因为打的不是正解,所以伪

省选模拟23 题解

这篇题解鸽了. A. Expectation B. Sequence C. Counting 原文地址:https://www.cnblogs.com/skyh/p/12309632.html

省选模拟35 题解

A. two 考虑现在要通过蓝边删掉红边. 其实等价于要找出有哪些红边,满足恰好只有一个端点在蓝边的儿子方向子树中. 考虑对蓝树跑出一个 $dfs$ 序来,那么问题转化为恰好一个端点在给定区间中. 这像是一个二维偏序问题.考虑以线段树下标为其中的第一维,第二维进行排序处理. 然后用一个 $set$ 就可以简单维护了,但是这样做的复杂度是两个 $log$ 的. 考虑一个特殊的操作,开两棵线段树,第一棵以连接两个点中小的 $dfs$ 序为下标,大的为权值,第二棵则相反. 那么问题就转化为取一段前缀或