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,最小化maxi(ai)maxi(bi)|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|的最小值
注意细节

上一篇:【NOI2010】超级钢琴 题解(贪心+堆+ST表)


下一篇:PTA找鞍点(C语言+ 详细注释)