使用说明:题意和数据范围都只是回忆内容,仅供参考。题解陆续补上。

Day 1

第一题

题意:给定n个数字,要求划分成k的连续段使得每个连续段内的数字之和相同,求最大的k。n,Σai<=10^6。
算法:模拟
题解一:记sum=Σai,从大到小枚举sum的因子暴力O(n)判断,10^6范围内的因子个数至多200~300个,且数据无法构造卡到上限(中途退出),可以轻松通过。
题解二:统计所有前缀和记录到同数组b[]中(即b[i]表示存在大小为i的前缀和),从大到小枚举sum的因子x后,计算每一个k*sum/x(1<=k<=x)在b[]中是否出现即可。复杂度O(\(\sigma_1(sum)\)),其中\(\sigma_1(sum)\)表示sum的约数和。

第二题

题意:给定n个0~m-1的数字,每次操作可以在模m意义区间+1或区间-1,求最少几次操作可以使所有数字变成0。n,m<=10^5。
算法:差分+贪心
题解:如果不考虑模m意义就是一道经典题目。差分后区间操作变成一次+1和-1。差分后实际上有n+1个数字,而第n+1个数字可以任意改变。那么差分后正数之和为A,负数之和为B,那么ans=max{A,B}。
现在考虑模m意义,把所有数字转化为非负数,要选择一些数字变成0,另一些数字变成m。为了使答案尽可能小,变成0一定优先选小,变成m一定优先选大,所以排序后贪心从两边取维护A和B的平衡即可(也可以枚举分界点。
复杂度O(n)。

第三题

题意:给定n个点的带点权树,每天早上根的数字变成0,每天下午每个点的数字往根移动,每天晚上会有一些单点加值的操作。给定m个操作,每个操作在第ai天晚上在点bi加上数字ci。给定k个询问,每次询问第ai天凌晨的【以bi为根的子树】的数字和。n,m,k<=10^5。
算法:CDQ分治 或 树套树
题解:先不考虑修改操作,对每个点x记深度d[x],dfs序入栈序in[x]和出栈序out[x]。一个点x会在询问(ai,bi)中被统计当且仅当满足\(d_x \leq a_i\)且\(in_{b_i} \leq in_x \leq out_{b_i}\)。关键在于把子树看成dfs序后,这就是个二维偏序问题了。
对于修改操作(ai,bi,ci),将深度维改为深度+时间维,所有初始节点时间默认为0,修改就在bi下面接一个时间为ai权值为ci的点即可。
但是这样还有一个问题,就是由于离线操作,时间靠前的询问可能统计到时间靠后的询问(因为深度和时间加起来计算了),所以需要再加一个时间维。
这样就是三维偏序问题,用CDQ分治解决,复杂度\(O(n log^2n)\)。

第四题

题意:给定n个点的竞赛图,m条已知的点不相交简单路径,其余边方向随机,求形成强连通分量个数的期望。
算法:

Day 2

第一题

题意:给定n个点m条边的无向图,第i个点有权值ai,边(x,y)的权值定义为:
\[w(x,y)=\sum_{i=1}^{a_x}\sum_{i=1}^{b_x}[(i,j)=1]i+j\]
可以选择一个数字p,使得所有边的权值都减少p(至多减到0),给出限定值T,求最小的p满足1~n的最短路<=T。
n,m<=20000,ai<=10^5,T<=10^18。
算法:莫比乌斯反演+二分最短路
题解:对于两点权值为a,b的边权w:
\[w=\sum_{i=1}^{a}\sum_{i=1}^{b}[(i,j)=1]i+j\]
莫比乌斯反演易得:
\[w=\sum_{d=1}^{min\{a,b\}}\mu(d)*d\sum_{i=1}^{\frac{a}{d}}\sum_{i=1}^{\frac{b}{d}}i+j\]
后面部分直接计算:
\[sum(a,b)=a*\frac{b(b+1)}{2}+b*\frac{a(a+1)}{2}\]
复杂度\(O(m \sqrt{a_i})\)。
预处理所有边权,二分p计算最短路判断即可。最短路数组记得初始化为比1e18大的数字。

第二题

题意:给定n个点的树,定义f(S)为点集S的导出子图的边数,求\(\sum_{S}f(S)^k\)。n<=10^5,k<=10。

第三题

题意:给定n个二元组(xi,yi),两个二元组i和j的价值定义为\(|x_i-x_j|*max\{y_i,y_j\}\),一个区间[L,R]的价值是其中任选两个二元组的最大价值。
给定m个操作,修改一个二元组的x或y,询问一个区间的价值。
n,m<=10^5。
数据保证初始的y和修改的y随机生成。

第四题

题意:给定n个点的无向图邻接正边权矩阵。每个点可能正在维修(不可经过)。k次操作,询问点x出发回到x的最短路径,或改变一个点的维修状态。n,k<=400。
算法:dijkstra
题解:T4也出走路题,想不到吧!
从点x出发回到x的最短路径就是最短简单环。
每次询问将点x删除后将与点x有直接连边的点标记为关键点,那么就是求解关键点两点间最短路的最小值。(与x的连边边权只要在最短路初始值设置的时候修改即可)
解决这个问题,将关键点作为起点集进行dijkstra,访问到一个点的最短路(第一次访问)和次短路(第二次访问)加起来就是这个点对答案的贡献,取最小值就是答案。
修改操作是假的。

Day 3

第一题

题意:给定n个人的三元组(ai,bi,ci),一个人能打败另一个人当且仅当至少有两个属性大于另一个人,数据保证没有两个人的同一个属性相同。
共进行n-1轮游戏,每轮任选两个人淘汰败者,求哪些人可能成为最后留下的人。n<=10^5。
算法:主席树+Tarjan缩点。
题解:朴素做法是暴力求出两两有向边的方向,然后对竞赛图缩点后有一条哈密顿路径,唯一那个入度为0的强连通分量包含的点数就是答案。
证明比较显然,①有入度的强连通分量一定不可能淘汰掉入度到它的强连通分量,②入度为0的强连通分量一定有哈密顿回路(竞赛图的性质),故让其中某个点x留到最后只需要从它上一个点开始往前一直两两淘汰,最终就会剩下x的下一个点。
现在的问题是边数太多了,但有很多冗余边。假设只有a,b,那么所有店按a排序后以b为下标建主席树(可持久化权值线段树),每次父亲向儿子连边以及新链叶子向依赖链叶子连边,然后每次的点向直接引用依赖链的左子树连边,这样建图后连通关系就完全等价于上面的建图了。建三棵主席树ab,ac,bc连边即可。
复杂度O(n log n)。

第二题

题意:给定n个点构成的完全二叉树,即点n的父亲是点\(\frac{n}{2}\),边权为\(an^2+bn+c\),其中a,b,c为给定的常数。有m次删除以某个点x为根的子树(可能重复删除),每次删除后要求找一个点x,满足所有点到它的距离和最短,求点x和距离和。n,m<=10^5,a,b,c<=10^9。

第三题

题意:给定V个点E条边的无向图,有一个长度为n的小写字母串,有m只猴子各自携带一个子串要从1到V,两只猴子的路径如果有边相交那么会发生强度为两个子串的LCP的叫嚣。要求安排所有猴子的路径使得所有叫嚣的最小值最大。V,E<=10000,n,m<=10^5,保证80%的边直接从1到V。
算法:最大流+二分哈希
题解:首先如果知道有k条边不相交的路径可以从1到V,那么二分叫嚣值L,如果两个子串的LCP>=L那么它们可以在同一条路径上,而且LCP>=L的性质有传递性,所以直接用桶记录每个子串长度为L的前缀就可以知道至少需要多少条路径,判断是否>k即可。
如何知道从1到V有多少条边不相交的路径?将所有边转化为流量为1的边,跑最大流就是答案。

第四题

题意:对一个黑白格图进行大模拟得到一棵带点权树,求树的直径(点权和)长度为x,然后要求将x划分成若干个整数的方案数之和。n<=10^5。

复杂度\(O(n \sqrt n)\)。

转载于:https://www.cnblogs.com/onioncyc/p/8984144.html

【GDOI2018】所有题目和解题报告相关推荐

  1. codeforces 50A-C语言解题报告

    50A题目网址 解题报告-others 题目解析 1.输入n x m大小的木板,使用21大小的多米诺去填满,求最多的多米诺数目 2.通过分析把木板分为奇数和偶数的情况 1)有一边是偶数的情况: 使用2 ...

  2. [NOI2005]聪聪与可可 解题报告

    [NOI2005]聪聪与可可 解题报告 定位:一道期望+图论好题. 文章目录 [NOI2005]聪聪与可可 解题报告 题目链接 题目大意 解题报告 代码 复杂度分析 题目链接 P4206 NOI200 ...

  3. 第十届“图灵杯”NEUQ-ACM程序设计竞赛个人赛解题报告

    第十届"图灵杯"NEUQ-ACM 题目链接 解题报告 D 文稿修订 思路 代码 F 吃包子 思路 代码 G 数字鉴定 思路 代码 H 线性变换 思路 代码 I 试题排版 思路 代码 ...

  4. 解题报告 (五) Burnside引理和Polya定理

    Burnside引理 笔者第一次看到Burnside引理那个公式的时候一头雾水,找了本组合数学的书一看,全是概念.后来慢慢从Polya定理开始,做了一些题总算理解了.本文将从最简单的例子出发,解释Bu ...

  5. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  6. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  7. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  8. 解题报告(十三)中国剩余定理(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  9. 解题报告(四)生成函数(ACM/ OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. Java 动态绑定 静态绑定
  2. 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )
  3. 键盘-App监听软键盘按键的三种方式
  4. 如何用python生成软件_python中的生成器函数是如何工作的?
  5. boost::hana::for_each用法的测试程序
  6. 初识OSPF(三)——路由重分发及虚链路
  7. 2018-2019-1 20165201 实验五 通讯协议设计
  8. 第一套数字电子计算机,计算机试题第一套
  9. 图论与java_算法笔记_150:图论之双连通及桥的应用(Java)
  10. SpringBoot配置多Redis数据源
  11. pb dw graph增加series_如何快速增加tiktok视频的播放量
  12. python斐波那契递归_Python递归斐波那契示例
  13. 计算机网络结构与数据交换技术
  14. SerDes知识详解
  15. linux ubuntu 版本,ubuntu各版本的区别
  16. 快速搭建微信小程序第三方平台基础教程(一)第三方平台是做什么的
  17. TFB cas:223569-31-1,聚合物光电材料
  18. 思科无线认证服务器,思科服务器认证配置
  19. 如何刷PTA,达到PTA甲级、乙级、顶级应具备的能力
  20. np.arange()和 range()的用法及区别

热门文章

  1. (2)网络基础之IP
  2. docker容器日志清理
  3. 使用C语言和Java分别实现冒泡排序和选择排序
  4. Win2003安装不了 Windows Media Player 11
  5. fps up up!!!
  6. C++11---之auto
  7. delphi制作上下开幕效果_显示产业国际盛会开幕,广州新型显示产值将突破2500亿...
  8. python的chr可以转换中文吗,chr()在python中怎么实现编码的转换
  9. 如何在自己开发的日程管理页面插入提醒功能_给大家推荐一款高颜值的日程管理类APP...
  10. 多项式辗转相除法求最大公约数_点灯游戏、方格填数与 Chebyshev 多项式(续)...