惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
L
LangChain Blog
阮一峰的网络日志
阮一峰的网络日志
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Recent Announcements
Recent Announcements
IT之家
IT之家
Google DeepMind News
Google DeepMind News
罗磊的独立博客
爱范儿
爱范儿
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
U
Unit 42
MongoDB | Blog
MongoDB | Blog
S
SegmentFault 最新的问题
B
Blog
博客园 - 叶小钗
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
V
Visual Studio Blog
C
Check Point Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

某岛

AtCoder Beginner Contest 409 Luogu P5325. 【模板】Min_25 筛 UOJ #188. 【UR #13】Sanrd AtCoder Beginner Contest 371 AtCoder Beginner Contest 369 RPGMaker 2k3 百科 OneShot 的考古 2024“开创拓芯”游戏创享节的相关记录 CJ 回来后的戒断反应 Luogu P10221. [省选联考 2024] 重塑时光 Luogu P5308 [COCI2018-2019#4] Akvizna wqs 二分 歌唱王国 Lean 相关 BZOJ 3153. Sone1 The 2023 ICPC World Finals Luxor 新巴别塔 Sora 的想象与思考 Facebook Hacker Cup 2023 Round 1 AtCoder Beginner Contest 322 LLaMA 2 相关 HuggingFace AI Game Jam ACL 2023 Trans 相关… Luogu P2053. [SCOI2007] 修车 Luogu P1973. [NOI2011] NOI 嘉年华 Luogu P1933. [NOI2010] 旅行路线 Luogu P1954. [NOI2010] 航空管制 Luogu P2048. [NOI2010] 超级钢琴 Luogu P2046. [NOI2010] 海拔
BOI 2020
2020-07-29 · via 某岛

BOI 2020

Table of Contents

Day 1

传送门
HackMD
竞プロ日常

Problem A. Colors

题意

交互式问题,给定 n,每次你可以将头发染成 1-n 中间的一个数字,如果相邻两次的数字差的绝对值 >= C,那么男朋友会注意,返回 1,否则返回 0。每个颜色只能用一次,用尽可能少的询问找到 C。

题解

很优雅的倍增构造。

Problem B. Mixture

题意

动态维护若干瓶调味料,每瓶调味料中装有一定质量的 盐,胡椒与大蒜 的混合物,给定美食家最喜欢的调味料的组成,每次询问,可以增加一瓶新的调味料或者删除一瓶之前添加过的调味料,返回至少需要几瓶可以混合出美食家最喜欢的口味。

题解

不会。

Problem C. Joker

题意

给定一张有 n 个点 m 条边的无向图,每次询问给出一个区间 [L, R],问是否存在奇环,使得环中不包含区间中的点。

题解

是否存在奇环,等价于二分图判定。静态可以 dfs,动态的话可以 dsu,最后外面套一层莫队算法即可。

当然也可以直接用 lct!

对于删除 [l, r] 区间的边,我们可以用类似破环为链的方法,转化为每次询问保留 (r, l+m) 区间的边,显然边越少越容易合法,满足单调性。我们按照时间顺序依次插入所有边,用 double-point 维护出处理到时间 r 时,最大的 l 使得当前的状态合法即可。这样就可以贴 BZOJ 4025 的代码了。

Day 2

传送门
竞プロ日常

Problem A. Graph

题意

给定一个边被红、蓝染色的无向图,求一组节点的权值方案,满足对所有的红边,关联的节点的权值和为 1,对所有的蓝边,权值和为 2,满足条件的基础上,最小化所有节点的权值和。

题解

让人想起了之前 Atcoder 上的一道染色的题。不过这个题是实数。做法是随便找个点和初始标记一路 dfs 下去把每个节点标记成 ax+b 的形式,其中 a 属于集合 {-1, 0, 1},x 是一个待定系数,最后算出 x 的值即可,需要一些 insight。

Problem B. Village

题意

给定一个树,求两组错位排列的方案 P,分别使得 \sum dist(i, P[i]) 的权值和最大和最小。

题解

首先最小的话显然尽可能交换相邻的结点编号就好了,我们就每次找叶子,如果没有交换过,就和父节点交换,这样最后有可能还剩一个,没关系随便找一个相邻结点再交换一次就好。

对于最大的情况,我们考察每条边 (u,v),那么这条边贡献的上界是 min(sz[u], sz[v]),我们发现可以构造方案让所有边的上界都达到,方法是只要考察重心,让每个点都标记在另一颗子树中即可。

这样看的话,似乎是需要找一下重心的。。。但是 最快的提交代码 直接就上了。。只要证明这样构造之后,可以找到一个节点作为根,使得每个节点都不落入同一子树中就行了。。而这是显然的,因为以重心分割的话,子树的 size 不会超过 n/2。

Problem C. Viruses

题意

基因序列是一个由 n 种数字形成的字符串,其中 0、1 为终止字符,其他为病毒字符,给定一张基因突变的表格,每个表格表示一个病毒字符可能会突变成的基因串,一个基因序列每一秒中,会有一个病毒字符突变,一些病毒字符可能有多种突变方向。给定一些模式串作为抗体,问每个病毒字符所能形成的最短的,不被任意一个抗体所识别的终止序列的长度(或者输出不存在)。

题解

没有病毒串的时候显然可以用类似最短路的方法 dp 出最短长度。。有病毒串的时候开个自动机就好。。由于我们需要支持合并字符串的操作,所以 dp 状态需要加维,记录在自动机中的状态区间,具体说来就是 dp[i][st][ed] 表示基因 i 展开之后,从状态 st 到状态 ed 的最短路径长度。

冲了一发 果断 TLE 了。虽然本质上是最短路模型,但是本题的边是广义的,可能会与多个节点关联,Dijkstra 着实不太好写,所以用了 Bellman_Ford,考虑到瓶颈主要在松弛(Relax)操作上(每次都要跑一遍神似 Floyd 的 DP),感觉改成 SPFA 可过。

换了 SPFA 之后还是有一个点过不去,看来本题数据还是很良心的。。

看了一下其他人的搞法,最快的 WZYYN 同学非常厉害,直接 Bellman_Ford 加了一个奇怪的剪枝就过了,然后 duality 看起来是常规的 SPFA,在 Relax 的时候跳过了无穷的情况,原理就跟一些矩阵乘法的题目,需要优化掉内层循环的取模差不多。

然后 BenQjiangly 的给都是 Dijkstra 正解。最猛的是 liouzhou_101,直接卡时,居然还卡过去了 Orz。。。(所以我也卡时吧。。> <。。。

Posted by xiaodao
Category: 日常