省选 2018 杂题汇总

2024-01-30 01:38
文章标签 汇总 2018 杂题 省选

本文主要是介绍省选 2018 杂题汇总,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于这些省太强了,6道做完不现实,于是就选了一些简单的做
[SDOI2018]战略游戏
答案为两条路径的必经的割点,正好是两点在圆方树上的圆点个数
然后每次询问建立虚树查询一下即可
[SDOI2018]荣誉称号
题意:将所有二叉树上含有 k+1 个点的路径的 ∑ a i \sum a_i ai 变成 m 的倍数的最小代价
发现一个点与它的 k+1 级祖先同余,也就是说我们只需要考虑 k+1 层
考虑 dp,令 f i , j f_{i,j} fi,j 表示从 i 往下,止于 k+1 层,链的和为 j 的最小代价,转移的话枚举当前边怎么变
发现需要预处理 v a l i , j val_{i,j} vali,j 表示把 a i a_i ai 以及 i 的附属结点的一堆 a i a_i ai,变成 j j j 的最小代价
m d z z mdzz mdzz 预处理是 O ( n m ) O(nm) O(nm) 的,然后发现可以 O ( n ) O(n) O(n) 预处理出 v a l i , 0 val_{i,0} vali,0 然后通过增量法 推到 v a l i , j val_{i,j} vali,j
如何增量? i 的附属结点有先全部充钱,增量为 ∑ b i \sum b_i bi s u m sum sum 可以 O ( n ) O(n) O(n) 处理
但是有些充了 m 的就可以全部不冲,所以要减去 ∑ a i = j m ∗ b i \sum_{a_i=j}m*b_i ai=jmbi,也可以 O ( n ) O(n) O(n) 处理,
用一个 O ( 2 k ∗ m ) O(2^k*m) O(2km) 的数组来存
复杂度是神仙一般的 O ( n + 2 k ∗ m ) O(n+2^k*m) O(n+2km)
[八省联考2018]劈配
花式匈牙利,匈牙利匹配的时候可以强行匹配多个,如果匹配满了,就把那些人全部丢去在同一志愿重新匹配,复杂度是神仙一般严重不满的 O ( m ∗ n 2 ∗ c ) O(m*n^2*c) O(mn2c)
对于第二问,可以二分答案,把排名在它前面的做一次匈牙利,然后再对它做一次看最多能匹配到哪儿
复杂度是 O ( n 3 ∗ m ∗ l o g n ∗ c ) O(n^3*m*logn*c) O(n3mlognc)
然后发现可以暴力记录每次匈牙利完了的结果(前缀),然后就可以跑严重不满的 O ( n 2 ∗ m ∗ l o g n ∗ c ) O(n^2*m*logn*c) O(n2mlognc)
[八省联考2018]林克卡特树lct
冷静分析后发现需要在树上选 k+1 条链,使和最大化
然后可以树形 d p dp dp,令 f i , j , 0 / 1 / 2 f_{i,j,0/1/2} fi,j,0/1/2 表示到 i,选了 j 条链,当前点不在链上,是链的一个端点,或是在链的中间的方案数
f u , j , 0 = m a x ( f u , j , 0 , f u , k , 0 + f v , j − k , 0 ) f_{u,j,0}=max(f_{u,j,0},f_{u,k,0}+f_{v,j-k,0}) fu,j,0=max(fu,j,0,fu,k,0+fv,jk,0)
f u , j , 1 = m a x ( f u , j , 1 , f u , k , 0 + f v , j − k , 1 + w i , f u , k , 1 + f v , j − k , 0 ) f_{u,j,1}=max(f_{u,j,1},f_{u,k,0}+f_{v,j-k,1}+w_i,f_{u,k,1}+f_{v,j-k,0}) fu,j,1=max(fu,j,1,fu,k,0+fv,jk,1+wi,fu,k,1+fv,jk,0)
f u , j , 2 = m a x ( f u , j , 2 , f u , k , 1 + f v , j − k − 1 , 1 + w i , f u , k , 2 + f v , j − k , 0 ) f_{u,j,2}=max(f_{u,j,2},f_{u,k,1}+f_{v,j-k-1,1}+w_i,f_{u,k,2}+f_{v,j-k,0}) fu,j,2=max(fu,j,2,fu,k,1+fv,jk1,1+wi,fu,k,2+fv,jk,0)
每个点递归完后合并 f u , i , 0 = m a x ( f u , i , 0 , f u , i − 1 , 1 , f u , i , 2 ) f_{u,i,0}=max(f_{u,i,0},f_{u,i-1,1},f_{u, i, 2}) fu,i,0=max(fu,i,0,fu,i1,1,fu,i,2)
k ≤ 3 e 5 k\le 3e5 k3e5 时,我们可以在每形成一个链的时加一个 m i d mid mid,然后看最后选出几个链,如果多了就把
m i d mid mid减小,反之加大,又名 dp 凸优化
[FJOI2018]领导集团问题
在一棵树上选一些点,使得祖先比儿子小,问最多选多少个
俗称:树上LIS
类似一般LIS,我们维护大小为1,2…,n 的LIS的最大高度是多少
每次进来一个点的时候,二分到第一个比它小的,然后把它改成当前点的权值
如果没有比它小的,那么把它插入,表示最大长度又大了1
于是用 set 启发式合并就可以了,其实 set 的大小就是 LIS的大小

这篇关于省选 2018 杂题汇总的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/658742

相关文章

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,