HDU 2019 Multi-University Training Contest 10 简要题解?

前言

在?为什么-12
我发现每次我打1004都会出现蜜汁bug并且一直调不对
然后晚上突然就发现自己是个sb然后1A
技不如人,甘拜下风.jpg
博主已经进入贤者模式就只写自己做的了
队友做的咕咕咕了

Valentine’s Day

Description

有n个硬币,第i个硬币有pi的概率正面朝上
你需要选择一些硬币,使得恰好有1个硬币正面朝上的概率最大
n<=10000

Solution

分成两种
pi>0.5,取最大值
pi<0.5,从大到小排序取前缀最大值
证明不存在的

Play Games with Rounddog

Description

给出一个字符串S,每次询问给出S的一个子串T
有两个人在博弈,先手可以选择若干个S的子串X,满足T是X的后缀
对于一个字符串X,如果其在S中出现了p次,则将一堆大小为Wp的石子加入游戏
接着后手可以选择若干堆石子移出游戏(不能全选)
然后两人开始玩最基础的NIM游戏
问先手是否必胜,如果必胜则其最多可以让多少堆石子加入游戏
n<=100000,q<=200000,Wi<2^58

Solution

先考虑游戏,显然只有所有石头的数量在异或的意义下线性无关先手才能获胜
而询问相当于只能在后缀树的一个子树里面选
问题变成,给出一棵树,每个点有点权,每次询问一个子树,在子树内部选择若干个线性无关的数,和的最大值
显然最多选择log W个数,考虑dsu on tree
只需要维护往一个集合中加入一个数
如果这个数和当前集合线性无关则直接加入
否则考虑是否替换当前集合中的最小值
多测不清空爆零两行泪QwQ

Welcome Party

Description

有n个二元组(ai,bi),你需要把这n个二元组分成两个非空集合A和B,最小化 ∣ m a x i ∈ ( a i ) − m a x i ∈ ( b i ) ∣ |max_{i\in}(a_i)-max_{i \in}(b_i)| maxi(ai)maxi(bi)
n<=100000

Solution

枚举A中的最大值ma,mb为ai>ma的bi的最大值,对ai<ma的求一个|bi-ma|的最小值
注意细节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值