首页 > 其他分享 >BJOI 2017 解题报告

BJOI 2017 解题报告

时间:2023-12-31 22:01:54浏览次数:34  
标签:log 路径 BJOI 节点 解题 考虑 2017 dp 分量

P3713 机动训练

关键在于 trick:\(\sum a_i^2\) 可以视为两个人走了相同的路径的方案数,证明是容易的:对不同的机动路径求相同的方案数,每种个数为 \(a_i\) 的机动路径会产生 \(a_i^2\) 种本质相同的走法。

如果令 \(dp[x][y][a][b]\) 为两个人分别走到 \((x, y)\) 和 \((a, b)\) 的本质相同的走法,考虑这两个人分别从何处走来就可以了。因为范围极小,所以暴力的 \(dp\) 就可以了。

P3714 树的难题

想想就想吐了,\(O(n\log^2n)\) 的做法比较显然,也比较好想,就说说这个得了。

首先,相信大家都能想到点分治。这里就已经有了一只 \(\log\)。考虑每个分治中心怎么求,也就是考虑路径怎么拼接。开一棵动态开点线段树维护长度为 \(i\) 的路径的 \(\max\),按儿子依次合并。因为是动态开点的,所以单个分治中心总复杂度 \(O(n\log n)\)。

P3715 魔法咒语

对于 \(L\le 100\) 的部分是显然的。首先必然要建立自动机,否则无法快速得到目前的串是否合法;其次若要 DP,令节点编号是 DP 数组的一维是简单的。因此令 \(dp[i][j]\) 为以节点 \(i\) 结尾的串长度为 \(j\) 的有多少个,枚举所有基本词汇并尝试转移即可。不要转移到自动机上的 end 节点。

而我们注意到 \(L\le 10^8\),因此考虑矩阵快速幂。快速幂的时候,长度维没有了,取而代之的是另一维节点。也即,第 \(k\) 次快速幂后得到的 \(dp[i][j]\) 是长度为 \(2^k\) 的从 \(i\) 到 \(j\) 节点的转移方案数,这个显然是可以矩阵快速幂的。

但是其实有个问题:两次转移对起来不一定是一个完整的串。但是串长只有 \(2\),所以把矩阵长宽扩大两倍就解决了这道题。

P3991 喷式水战改

首先,见单点插入思平衡树。显然连续段必然被分在一起,则在平衡树上跑 DP 即可。因为平衡树的结构易变,所以每个节点存储以它为根的子树的信息即可。

比较烦人的是这个题要求节点的分裂。

P3992 开车

看见这个题首先想的是老鼠进洞,然后是模拟费用流,再一看带修发现事情并不简单。

有固有结论:若车和加油站均升序排序,则答案为 \(\sum|a_i-b_i|\)。那么每次单修相当于平移一段,又改了前边一个点。这个东西肯定不能 \(\log n\) 的维护,因为此信息性质极差,绝对值很难拆。另一方面,数据范围是经典的根号范围。因此考虑分块。

能不能进一步转化题意?答案是肯定的。我们先不考虑 \(x\le10^9\) 这个限制,假设 \(x=O(n)\),我们讨论每个 \(i\to i+1\) 的贡献是前面的车站数量,减去车的数量。那么我们相当于做区间 \(+1-1\) 和对位相减求和,因为 \(+1-1\) 带来的影响很小,容易想出我们在每个块内开一个桶记一下对位相减的差就好了。

接下来我们考虑 \(x\le 10^9\) 该怎么离散化比较好。观察到同一条线段的值不变,且桶只维护个数不用把所有的都找出来一个个加,那这意味着我们把一整段都塞到桶里时间复杂度不变。总复杂度 \(O(n\sqrt{n})\),可能实现上什么地方带一只 \(\log\),但是数据范围支持这两种办法均可以通过此题。

P3993 同构

神仙数学题。以下内容参考了其他题解的内容。

首先,因为答案的边数很多,我们不妨考虑其反图。我们考虑各个联通分量的性质,发现把补图划分为一定大小的几个连通分量,如果这些连通分量中不存在大小为 \(6\) 的,那么存在一种全都是树的更优或等优的解。

如果有几个连通分量不是树,唯一可能的考虑是如果替换成同样大小的树可能会和已经存在的同样大小的树同构,构成冲突,但是这时我把这些连通分量全部都接在目前最长的一个触手上面构成一个巨大的触手树,显然不会发生冲突,而这就是一种全都是树的更优或等优的解。

未完待续……

标签:log,路径,BJOI,节点,解题,考虑,2017,dp,分量
From: https://www.cnblogs.com/Piggy424008/p/17938092/bjoi2017-report

相关文章

  • BJOI 2018 解题报告
    P4427[BJOI2018]求和谔谔题。这个问题看上去很不可维护,而且让我想到了P5305旧词。结果发现怎么\(k\le50\),那我直接跑\(50\)遍不就好了?P4429[BJOI2018]染色神仙题。考虑先用一些比较简单的情况搞到一些性质继续研究。那我们不妨只对原图黑白染色,得到性质“原图必为二分......
  • BJOI 2019 解题报告
    P5319[BJOI2019]奥术神杖数学题。搞掉几何平均数的方法是左右取对数,然后变成一个经典的\(0/1\)分数规划问题。解决方法是二分答案后AC自动机+DP。P5322[BJOI2019]排兵布阵简单题。随便DP即可,五分钟之内没想出这道题的赶快去加训。P5320[BJOI2019]勘破神机科技......
  • 2017 考研English英语二
    46.Directions:TranslatethefollowingtextintoChinese.WriteyourtranslationneatlyontheANSWERSHEET.(15points)Mydreamhasalwaysbeentoworksomewhereinanareabetweenfashionandpublishing.Twoyearsbeforegraduatingfromsecondaryschool......
  • 2017 《Java 2实用教程(第5版)》是由耿祥义、张跃平编著
    我的研究生同学河南老乡河南工业大学Jackso_hao大学期间学习的Java教材  《Java2实用教程(第5版)》是由耿祥义、张跃平编著,2017年清华大学出版社出版的高等学校Java课程系列教材、普通高等教育“十一五”国家级规划教材。该教材既可作为高等院校相关专业Java程序设计的教材......
  • 2017 - 951 数据结构
    题目一、单项选择题1.算法能识别出错误的输入数据并进行适当的处理和反应,称为算法的(①)。A.健壮性          B.正确性            C.并行性         D.时间复杂度2.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找成功的......
  • P8648 [蓝桥杯 2017 省 A] 油漆面积
    1.首先想到的错解看到数据范围,就想先写个n^2的暴力:先把所有矩形的面积都算出来,然后再把所有重合的部分挨个减去,把每个重合的部分当成一个个小矩形,用set来判重。画一个稍复杂些的样例,就会发现,在这些由重合部分产生的小矩形之间,仍有重合,所以这种算法,会导致算出来的重合部分偏大,而......
  • HNOI2017影魔题解
    HNOI2017影魔对于两种贡献,都只用考虑左边第一个比自己大的,和右边第一个比自己大的数,分别记为\(l_i、r_i\)对于询问一,每个数对\((l_i,r_i)\)构成全部情况对于询问二,可以拆分成\(x=l_i\)时,\(y\in[i+1,r_i-1]\),以及\(y=r_i\)时,\(x\in[l_i+1,i-1]\)我们考虑用扫描线......
  • P8647 [蓝桥杯 2017 省 AB] 分巧克力
    二分#include<iostream>#include<stdio.h>#include<algorithm>#include<cstring>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;constintN=1e5+5;intn,k,upb;inth[N],w[N];inlineintread(......
  • P8646 [蓝桥杯 2017 省 AB] 包子凑数
    根据裴蜀定理可得INF的情况是所有数的最大公约数非1而我们的完全背包的上限是多少呢?设置为Σai即可,因为把每一个ai用上之后的集合,和ai可以重复使用的集合,只差了整数倍个ai,因此可达性是完全一致的,这里N<=100,ai<=100,所以我们把这个背包的上限设置为10000.#include<bits/stdc+......
  • cpp环境搭建 - vs2017编译CMakeLists项目(Box2dLite)
    box2dlite地址:GitHub-erincatto/box2d-lite:Asmall2Dphysicsengine vs2017不支持utf-8withoutbom问题box2dlite的源码文件是utf-8withoutbom的,如果在里面写了中文注释,就会出现编译错误解决办法:将文件编码改成utf-8带bom的(这边没有在附加选项加/utf-8貌似也没问题......