zoukankan      html  css  js  c++  java
  • 一些题(四)

    [AGC029E] Wandering TKHS

    考虑一个点 \(u\) 会对哪些点产生贡献,找到最浅的 \(u\) 的祖先 \(x\) 满足若能到 \(x\) 就一定能到 \(u\),那么 \(u\) 就只会贡献到 \(x\) 子树中的所有节点。而那个条件就相当于链 \([u,x)\) 的最大值小于链 \((x,1]\) 的最大值,于是求一下链 \([u,1]\) 的最大值和次大值讨论一下就能快速找到 \(x\) 了。

    https://atcoder.jp/contests/agc029/submissions/27277050

    [AGC005E] Sugigma: The Showdown

    游戏能无限进行当且仅当存在一条红边满足他的两个端点在蓝树上的距离 \(>2\),并且 A 能安全走到其中一个端点。而当不考虑这种边时,B 的策略一定是沿着树上的最短路追,并且一定不会走回头路。那么可以从 A 的起点开始 bfs,判断一下走到它的时间是否小于它在蓝树上的深度即可。最后若不能无限进行,答案就为能走到的点中的最深深度。

    https://atcoder.jp/contests/agc005/submissions/27459600

    [AGC004E] Salvage Robots

    首先转化为用出口去吃机器人,每往上走到新的一行最底下的一行的机器人就会消失,别的方向同理。于是一个时刻还活着的机器人就只和最远往四个方向分别走了几格有关,四维 dp 即可。

    https://atcoder.jp/contests/agc004/submissions/27460378

    [AGC002F] Leftmost Ball

    直接记填了 \(i\) 种颜色多了 \(j\) 个白球,每次转移时要么加一个白球要么一次填完一种新颜色的剩下 \(k-1\) 个球(特判 \(k=1\))。

    https://atcoder.jp/contests/agc002/submissions/27465461

    [AGC005F] Many Easy Problems

    考虑计算每个点不在哪些方案里,得到第 \(i\) 个答案为:

    \[\sum_u\left({n\choose i}-\sum_{v\in son(u)}{size_v \choose i}\right) \]

    然后考虑对所有大小相同的子树一起算贡献,能写成卷积的形式,卷一卷就好了。

    [AGC016F] Games on DAG

    考虑给每个点硬点一个 SG 值后怎么计算方案。那么对于那些 SG 为 \(0\) 的点,它们内部没有连边,其它点向它们之中至少连一条边。然后可以把这些点去掉,给剩下点的 SG 值 \(-1\) 递归考虑。

    于是可以类似地设 dp 状态,记当前只剩 \(S\) 集合内的点时 \(1,2\) 号点 SG 值相同的方案。转移时枚举子集,再同时递归一些东西就能 \(O(3^n)\) 了。

    https://atcoder.jp/contests/agc016/submissions/27509022

    [AGC019F] Yes or No

    首先策略肯定是哪个剩的多选哪个,一样多就随机选。那么稳定能选对 \(\max\{n,m\}\) 个,而每次出现一样多的情况就要猜一次,这样的总次数为 \(\sum_{i=1}^{\min\{n,m\}}{2i\choose i}{n-i+m-i\choose n-i}\)。那么就可以 \(O(n+m)\) 算了。

    https://atcoder.jp/contests/agc019/submissions/27510786

    [AGC025E] Walking on a Tree

    将给定的路径当作无向边,如果能形成一个欧拉回路,那么从两个方向经过每条树边的路径数分别相同。如果不行,可以考虑将奇度点两两匹配连边使得新加的边的路径不交,这样对于每条树边,从它两边走过的路径数差的绝对值不会超过 \(1\),就能达到最优解。计算贡献时用树上差分即可。

    [AGC012E] Camel and Oases

    问题转化为把 \(n\) 个点分割成 \(\log V\) 个区间,第 \(i\) 个区间内部点的间距要求 \(\leq \lfloor V/2^{i-1}\rfloor\),问哪些点可能被划分到第 \(1\) 个区间里。那么可以状压求出能分割出 \(S\) 集合中的区间的最长前/后缀,求答案时枚举前缀和后缀一起拼出除 \(1\) 之外的所有区间的方案,再判断中间的能否作为第 \(1\) 个区间即可。

    [AGC013E] Placing Squares

    \(f_i\) 表示长为 \(i\) 的木板不考虑标记点的权值和,\(g_i\) 表示到第 \(i\) 个标记带容斥系数的权值和,那么有 \(g_0=1,g_i=-\sum_{j<i}f_{x_i-x_j}g_j\)(令 \(x_0=0,x_{m+1}=n\)),答案即为 \(-g_{m+1}\)。考虑如何计算 \(f_i\),有 \(f_{i}=\sum_{j=1}^{i}j^2f_{i-j}\),写成生成函数得 \(F={x(1+x)\over (1-x)^3}F+1\),于是 \(F={(1-x)^3\over 1-4x+2x^2-x^3}\)。可以列出递推式然后写成矩阵的形式,得出当 \(i>0\) 时,有:

    \[f_i=\begin{pmatrix}1&0&0\end{pmatrix}\begin{pmatrix}4&-2&1\\1&0&0\\0&1&0\end{pmatrix}^i\begin{pmatrix}0\\1\\3\end{pmatrix} \]

    那么 \(g\) 的递推就可以只考虑中间那个矩阵,就能用前缀和之类的优化,做到 \(O(m\log n)\) 了。好像有更 nb 的组合意义做法,哈哈,我是沙雕。

    https://atcoder.jp/contests/agc013/submissions/27588855

    [AGC018F] Two Trees

    首先可以唯一确定每个点权值的奇偶性,如果有冲突就无解,否则可以直接构造。建一个新点连向两棵树的根,这样权值为奇数的点为所有奇度点,将两树对应标号的奇度点连边(称作新边),这样图中就存在一条欧拉回路。然后给权值为偶数的点标 \(0\),对于权值为奇数的点,如果它连出的新边在欧拉回路上是从 A 到 B 就标 \(1\),否则标 \(-1\),就合法了。证明可以考虑对某个节点的子树,它连到外部的边只有父亲边和内部的新边,考虑每次绕进绕出的边,新边会两两配对抵消然后剩下一条和父亲边配对,那么权值和的绝对值就为 \(1\)

    https://atcoder.jp/contests/agc018/submissions/27600748

    [AGC038F] Two Permutations

    对于 \(P\) 的每一个环,它们要么一同取 \(i\),要么一同取 \(P_i\)\(Q\) 同理。于是可以考虑建最小割模型,令 \(p_i\) 为每一个 \(P\) 的环,\(q_i\) 为每一个 \(Q\) 的环。\(S\)\(p_i\) 连通、\(q_i\)\(T\) 连通代表取 \(i\),否则取 \(P_i\)\(Q_i\),那么可以依此分类讨论加边跑最大流。由于建出来的图是二分图,复杂度为 \(O(n\sqrt{n})\)

  • 相关阅读:
    模块化+定制化,PIX赋能多种行业实现低速无人车商业化
    支持Apollo、Autoware,PIX推出自动驾驶开发套件PIXKIT
    专为自动驾驶开发者打造的线控底盘——PIXLOOP
    甄别信息、病毒追踪、无人配送...这9个全球开源工具助力疫情抗击
    PIX无损线控改装——全系列车型及性能介绍
    PIX线控改装技术连载二 | 车辆组成模块之间的共同语言
    PIX入选Autodesk硅谷技术中心,以生成设计和金属增材制造落地L4自动驾驶通用底盘
    线控CRV,最高性价比的自动驾驶开发平台
    线控改装技术连载一之——线控开端和车辆组成
    CSS 创建
  • 原文地址:https://www.cnblogs.com/Y25t/p/15621585.html
Copyright © 2011-2022 走看看