省选 2017 杂题汇总

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

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

[ZJOI2017]仙人掌
发现可以把一个仙人掌看做所有环组成的图,如果不是环而是单个边,我们可以手动给它填一条边变成环
考虑一棵树怎么做?
就是在树上选若干条互不相交的链的方案数,考虑树形 d p dp dp
f i f_{i} fi 表示到 i 的子树的方案数, g i g_i gi 表示一个点有 i 条边相连,两两配对或者单身的方案数
g i = g i − 1 + ( i − 1 ) ∗ g i − 2 g_i=g_{i-1}+(i-1)*g_{i-2} gi=gi1+(i1)gi2,前面表示当前边单身,后面表示当前边配对
考虑转移的时候无论如何都会从下面窜出来一条,还要考虑父亲那条边,于是有
f u = ∏ f v ∗ g ∣ s o n ∣ + 1 f_u=\prod f_v*g_{|son|+1} fu=fvgson+1,根不算父亲那条边就可以了
[ZJOI2017]树状数组
考虑他写的跟正确的有什么变化
如果用后缀表示,首先他求的是 S r − S l − 1 S_{r}-S_{l-1} SrSl1,而正确的是 S l − S r + 1 S_{l}-S_{r+1} SlSr+1
发现 S r − S l − 1 = − A l − 1 + S r − S l S_r-S_{l-1}=-A_{l-1}+S_r-S_l SrSl1=Al1+SrSl, S l − S r + 1 = S l − S r + A r S_l-S_{r+1}=S_l-S_r+A_r SlSr+1=SlSr+Ar
于是求的就是 A l − 1 A_{l-1} Al1 A r A_r Ar 相同的概率
考虑直接维护 a i a_i ai a j a_j aj 相等的概率
如果 a i ∈ [ 1 , l − 1 ] a_i \in [1,l-1] ai[1,l1] a j ∈ [ l , r ] a_j \in [l,r] aj[l,r] ,有 1 l e n \frac{1}{len} len1 的概率改变
如果 a i ∈ [ l , r ] a_i \in [l,r] ai[l,r] a j ∈ [ l , r ] a_j \in [l,r] aj[l,r],有 2 l e n \frac{2}{len} len2 的概率改变
如果 a i ∈ [ l , r ] a_i \in [l,r] ai[l,r] a j ∈ [ r + 1 , n ] a_j \in [r+1,n] aj[r+1,n],有 1 l e n \frac{1}{len} len1 的概率改变
然后可以用线段树维护一下这个矩阵,加上一个概率的时候需要合并
假如原来有 p 的概率相同,当前有 q 的概率改变,那么最后相同的概率就是 p ∗ ( 1 − q ) + ( 1 − p ) ∗ q p*(1-q)+(1-p)*q p(1q)+(1p)q
我们注意到,find 函数中如果 x = 0,直接返回 0
问的是前缀和后缀相同的概率
对于 [ l , r ] [l,r] [l,r] 的修改, [ 1 , l − 1 ] , [ r + 1 , n ] [1,l-1], [r+1,n] [1,l1],[r+1,n]一定改变, [ l , r ] [l,r] [l,r] 不变的概率为 1 l e n \frac{1}{len} len1
所以在维护二维线段树的同时需要在维护一棵一维的线段树
[BJOI2017]树的难题
考虑点分,如何合并?
把子树按颜色排序,维护两棵线段树,与到分治中心的距离为下标,一棵维护当前颜色,一棵维护之前出现的颜色,线段树可以写成单点修改区间查最大
[BJOI2017]魔法咒语
代码分块,对于 L ≤ 100 L\le 100 L100时,和 L ≤ 2 L\le2 L2分别考虑
前面那个就是一个比较裸的 dp,后面那个可以用矩阵乘,
由于 L ≤ 2 L\le 2 L2,于是要把 f i f_{i} fi f i − 1 f_{i-1} fi1都放进去
[HNOI2017]单旋
手玩一下 s p l a y splay splay 到根,发现树的形态基本不变,于是就可以用 L C T LCT LCT 模拟了,顺便维护一下 d e p dep dep
插入操作用 set 查一下该插到哪儿,然后就可以慢慢去 d e b u g debug debug
[HNOI2017]影魔
考虑一个点 i ,左边第一个比它大的 l i l_i li,右边第一个比它大的 r i r_i ri
那么区间 [ l , r ] [l,r] [l,r] p 1 p_1 p1 的贡献
区间 [ l + 1 − − i , r − 1 ] [l+1--i,r-1] [l+1i,r1] p 2 p_2 p2 的贡献
区间 [ l + 1 , i + 1 − − r ] [l+1,i+1--r] [l+1,i+1r] p 2 p_2 p2 的贡献
于是我们可以把这些操作排序,扫到 l i l_i li 的时候更新一下 r i r_i ri
扫到 l i + 1 l_i+1 li+1 的时候更新一下 i + 1 − − r i+1--r i+1r
然后将询问离线,考虑一个 [ l , r ] [l,r] [l,r]的询问,我们可以将刚刚排序的在 [ l , r ] [l,r] [l,r] 之间的加一遍,然后查区间 [ l , r ] [l,r] [l,r]的答案,反过来想就是 r 的答案 - l-1 的答案就可以了
[SDOI2017]遗忘的集合
背包的套路:考虑生成函数, a i a_i ai 表示 i 是否出现在集合中
则生成函数是 f ( x ) = ∑ ( 1 1 − x i ) a i f(x)=\sum(\frac{1}{1-x^i})^{a_i} f(x)=(1xi1)ai
两边取 ln, − l n ( f ( x ) ) = ∑ a i ∗ l n ( 1 − x i ) -ln (f(x))=\sum a_i*ln(1-x^i) ln(f(x))=ailn(1xi)
l n ( 1 − x i ) ln(1-x^i) ln(1xi) 求导,类似付公主的背包,可以得到
l n ( f ( x ) ) = ∑ T = 1 ( ∑ d ∣ T a d ∗ d T ) x T ln(f(x))=\sum_{T=1} (\sum_{d|T}a_d*\frac{d}{T})x^T ln(f(x))=T=1(dTadTd)xT
ln 后调和级数枚举一下贡献即可

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



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

相关文章

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【Kubernetes】常见面试题汇总(一)

目录 1.简述 etcd 及其特点? 2.简述 etcd 适应的场景? 3.简述什么是Kubernetes? 4.简述 Kubernetes和 Docker的关系? 1.简述 etcd 及其特点? (1)etcd 是Core0s 团队发起的开源项目,是一个管理配置信息和服务发现(service discovery)的项目,它的目标是构建一个高可用的分布式键值(keyvalue)数据

IEEE会议投稿资料汇总http://cadcg2015.nwpu.edu.cn/index.htm

最近投了篇IEEE的顶级会议文章,一下是比较有用的一些资料,以供参考。 1.会议主页:http://cadcg2015.nwpu.edu.cn/index.htm     (The 14th International Conference on Computer-Aided Design and Computer Graphics (CAD/Graphics 2015)) 2.I

App Store最低版本要求汇总

1,自此日期起: 2024 年 4 月 29 日 自 2024 年 4 月 29 日起,上传到 App Store Connect 的 App 必须是使用 Xcode 15 为 iOS 17、iPadOS 17、Apple tvOS 17 或 watchOS 10 构建的 App。将 iOS App 提交至 App Store - Apple Developer 2,最低XCode版本 Xcod

C++常见异常汇总(三): fatal error: google/protobuf/port_def.inc

文章目录 1、fatal error : sw/redis++/redis.h2、fatal error: dwarf.h: No such file or directory3、fatal error: elfutils/libdw.h: No such file or directory4、fatal error: libunwind.h: No such file or directo

[JAVA基础知识汇总-1] 创建线程的几种方式

文章目录 1. 继承Thread类2. 实现Runnable接口3. 实现Callable接口4. 线程池 可以认为有四种方式,也可以认为有一种,因为都跟Runnable接口有关 1. 继承Thread类 代码 public class Thread1ExtendsThread extends Thread {// public Thread1(String n

RK3288 资源汇总

用了一段时间的RK3288做开发,现汇总一下网上的学习资源: 1、九鼎创展: 源代码仓库:https://gitlab.com/9tripod/x3288_linux_new 百度云文档资料: 链接:http://pan.baidu.com/s/1qYcsAaK    密码:wmvi 更多可查看九鼎创展社区:http://bbs.9tripod.com/forum.php?mod=fo

Android开发中遇到的各类问题汇总

Q1: Error:The number of method references in a .dex file cannot exceed 64K.Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html 应用中的Dex 文件方法数超过了最大值65536的上限

C语言操作符汇总(上)

目录 前言 一、操作符的分类 二、⼆进制和进制转换 1. 二进制转10进制 2. 10进制转2进制数字 3.  2进制转8进制和16进制 3.1 2进制转8进制 3.2 二进制转16进制  三、原码、反码、补码  四、移位操作符 1. 左移操作符 2. 右移操作符  五、位操作符:&、|、^、~ 1.按位与: 2.按位或:  3.异或 4.按位取反   5.趁热