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

前言

智商回复训练
鸽子博主终于开始打ACM了
代码有一些是队友写的所以就不贴了

Rikka with Quicksort

Description

定义
g m ( i ) = 0 , 1 ≤ i ≤ m g_m(i)=0,1\le i\le m gm(i)=01im
g m ( i ) = i − 1 + 1 i ( ∑ j = 1 i g m ( j − 1 ) + g m ( i − j ) ) , i > m g_m(i)=i-1+{1\over i}(\sum_{j=1}^{i}g_m(j-1)+g_m(i-j)),i\gt m gm(i)=i1+i1(j=1igm(j1)+gm(ij)),i>m
给出n,m,求 g m ( n ) g_m(n) gm(n)对10^9+7取模之后的结果
n,m<=10^9

Solution

求前缀和S,答案为S(n)-S(n-1)
递推式为 S ( n ) = S ( n − 1 ) ∗ n + 2 n + n − 1 S(n)=S(n-1)*{n+2\over n}+n-1 S(n)=S(n1)nn+2+n1
简单化一下式子就是 S ( n ) = ( n + 1 ) ∗ ( n + 2 ) ∗ ∑ i = m + 1 n i − 1 ( i + 1 ) ∗ ( i + 2 ) S(n)=(n+1)*(n+2)*\sum_{i=m+1}^{n}{i-1\over (i+1)*(i+2)} S(n)=(n+1)(n+2)i=m+1n(i+1)(i+2)i1
后面那个东西分段打表即可

Rikka with Cake

Description

有一块n*m的蛋糕,用k条射线切开
保证任意两个射线不会在同一行或同一列
问这块蛋糕被分成了多少块
n,m<=1e9,k<=1e5

Solution

显然答案为交点个数+1
扫描线+数据结构即可

Rikka with Mista

Description

有n个数,问所有2^n种出现情况中,所有数的和的十进制表示下4的个数之和
n<=40

Solution

又在迫害米4达了(为什么不放04)
折半搜索,枚举位置i,考虑有多少个a+b这一位是4
只需要考虑所有数的后i位,枚举一个a,那么可行的b是两段区间(进位或不进位)
只需要排序+扫描线就可做到线性
排序可以用上一层的结果做双关键字桶排也可优化到线性
复杂度O(2^n/2*log W)

Rikka with Geometric Sequence

Description

问有多少个公比>1的,值域为[1,n]的自然数的等比数列
n<=5*10^17

Solution

被pow的精度坑了[○・`Д´・ ○]
枚举公比为 p q , ( p , q ) = 1 {p\over q},(p,q)=1 qp,(p,q)=1
枚举项数为t+1,那么我们可以搞出一个形如 a q t . . . a p t aq^t...ap^t aqt...apt的等比数列
显然这样可以不重不漏
项数为1和2直接算,剩下的部分形如 ∑ q ≥ 1 ∑ p &gt; q ∑ t ≥ 2 , p t ≤ n ⌊ n p t ⌋ \sum_{q\ge 1}\sum_{p\gt q}\sum_{t\ge 2,p^t\le n}\lfloor {n\over p^t}\rfloor q1p>qt2,ptnptn
后面部分与q无关,所以答案为 ∑ p ≥ 2 ∑ t ≥ 2 , p t ≤ n ⌊ n p t ⌋ φ ( p ) \sum_{p\ge2}\sum_{t\ge 2,p^t\le n}\lfloor {n\over p^t}\rfloor\varphi(p) p2t2,ptnptnφ(p)
t>=3可以暴力
t=2可以杜教筛

Rikka with Game

Description

有一个字符串,两个人在玩游戏
每一次每个人可以选择一个位置上的字符shift,或者直接结束游戏
先手希望最小化字典序,后手希望最大化
问最终的字符串
|S|<=100

Solution

字典序考虑前缀
手玩一下发现前缀y两人都不会去动,先手动y后手直接结束,后手动y先手再动变成a
前缀有一个<y先手会直接结束
前缀有一个z那么先手会把它变成a,后手再变成b,先手停
没了

Rikka with Coin

Description

有4种货币,面值为10,20,50,100
现在有n种组合,每种组合的金额为wi,问至少需要携带多少个货币才能支付所有组合
n<=100

Solution

显然10最多1个,20最多4个,50最多1个,先求出这些选多少种的所有方案
枚举每个状态,求出需要多少张100即可
注意细节

Rikka with Travels

Description

给出一棵树,问从中选两条不相交的路径,其长度二元组(l1,l2)的数量
n<=10^5

Solution

考虑断掉一条边,求出两边直径,那么我们有矩形[1,l1]-[1,l2]合法,最后求个并
前面的东西可以换根Dp

Rikka with Stable Marriage

Description

有n个男生,n个女生,你需要给这2n个人配对
定义第i个男生和第pi个女生配对,每个男生女生对都有自己的满意度
定义一种配对方式为合法的当且仅当不存在一对二元组(i,j),满足i相对于pi更喜欢pj且pj相对于j更喜欢i
求满足这个条件下,最大的 ∑ i = 1 n ( a i ⊕ b p i ) \sum_{i=1}^{n}(a_i\oplus b_{p_i}) i=1n(aibpi)
n<=10^5

Solution

猜想答案为每次选择最大的一对 a ⊕ b a\oplus b ab配对
这个的做法可以对两边都建trie,对于a中的每个点算出其往哪个儿子走可以得到最大值
然后每次删掉一个a中的点就对这条链上的点重新算一次这个值
证明不存在的

Rikka with Traffic Light

没人搞
待填

Rikka with Defensive Line

没人搞
待填

Rikka with Segment Tree

Description

定义F(i,n)表示根节点为长度为n的线段树中[i,i]的深度
∑ n = L R ∑ i = 1 n F ( i , n ) ∗ i \sum_{n=L}^{R}\sum_{i=1}^{n}F(i,n)*i n=LRi=1nF(i,n)i
L<=R<=10^18

Solution

大概是考虑把后面的式子拆开
需要维护 S ( n ) = ∑ i = 1 n F ( i , n ) ∗ i , C ( n ) = ∑ i = 1 n F ( i , n ) , A n s ( n ) = ∑ i = 1 n S ( i ) S(n)=\sum_{i=1}^{n}F(i,n)*i,C(n)=\sum_{i=1}^{n}F(i,n),Ans(n)=\sum_{i=1}^{n}S(i) S(n)=i=1nF(i,n)iC(n)=i=1nF(i,n)Ans(n)=i=1nS(i)
每次都会折半

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值