4.29模拟赛 赛后回顾

1. T1(message)

题目描述:

B e r l a n d Berland Berland 的首都被 n n n 座山峰包围,形成一个圆圈。每座山的山顶都有一个瞭望塔,瞭望塔有高度的区别。如果存在连接两座山峰 A A A B B B 的弧上没有严格比 A A A B B B 高的塔,那么 A A A B B B 可以直接传达信息。输入 n n n 以及 n n n 座塔的高度,输出有多少对瞭望塔可以直接互相传递信息。

数据范围:

3 ≤ n ≤ 1 0 6 3 ≤ n ≤ 10^6 3n106 1 ≤ H ≤ 1 0 9 1 ≤ H ≤ 10^9 1H109

题目解答:

圆上的弧有两条!

CF5E原题。

首先,遇到环优先考虑 倍长破环成链 ,这里发现有一个结论,最高的山一定不会被合法的弧所跨过,证明显然,所以考虑以最高的山为首破环成链,这样问题就转化为了经典的另一道原题。

然后方法就很多了,可以维护一个单调栈再二分,或者维护 3 3 3 个数组 l [ ] , r [ ] , c n t [ ] l[],r[],cnt[] l[],r[],cnt[] ,甚至也可以直接单调栈 d p dp dp

2. T2(cantor)

题目描述:

有这样一种函数,它的定义域和值域都是 [ 0 , 1 ] [0,1] [0,1]

1 / 3 < x < 2 / 3 1/3 < x < 2/3 1/3<x<2/3 时, f ( x ) = 1 / 2 f(x)=1/2 f(x)=1/2

x < 1 / 3 x<1/3 x<1/3 时, f ( x ) = f ( 3 x ) / 2 f(x)=f(3x)/2 f(x)=f(3x)/2

x > 2 / 3 x>2/3 x>2/3 时, f ( x ) = f ( 3 x − 2 ) / 2 + 1 / 2 f(x)=f(3x-2)/2 + 1/2 f(x)=f(3x2)/2+1/2

这个函数叫做康托函数( C a n t o r F u n c t i o n Cantor Function CantorFunction),是一个优美而又神秘的图形。人们发现他看似一个连续的不下降函数,但是函数的任意切线都是水平的。

以你现在的数学水平,还不能很好地理解这个函数,所以你的任务并不难。

你的任务是求 y = f n ( x ) y=f^n(x) y=fn(x) x x x 轴 和 直线 x = 1 x=1 x=1 围成的面积。

输出一个既约分数。

数据范围:

n ≤ 50 n≤50 n50

题目解答:

噩梦T2

你要知道 f n ( 0 ) = 0 f^n(0)=0 fn(0)=0 f n ( 1 ) = 1 f^n(1)=1 fn(1)=1 ,所以就是要你求 f n ( x ) f^n(x) fn(x) 的积分。

分成 3 3 3 段推柿子:

s i = ∫ 0 1 f i ( x ) d x s_i=\int_0^1f^i(x)dx si=01fi(x)dx

1. 1. 1.

∫ 1 3 2 3 f n ( x ) d x = 1 3 ⋅ 2 n \int_{{1}\over{3}}^{{2}\over{3}}f^n(x)dx={{1}\over{3\cdot2^n}} 3132fn(x)dx=32n1

2. 2. 2.

∫ 0 1 3 f n ( x ) d x = ∫ 0 1 3 f n ( 3 x ) / 2 n d x \int_0^{{1}\over{3}}f^n(x)dx=\int_0^{{1}\over{3}}f^n(3x)/2^ndx 031fn(x)dx=031fn(3x)/2ndx

= 1 3 ⋅ 2 n ∫ 0 1 f n ( x ) d x = 1 3 ⋅ 2 n s n ={{1}\over{3\cdot2^n}}\int_0^1f^n(x)dx={{1}\over{3\cdot2^n}}s_n =32n101fn(x)dx=32n1sn

3. 3. 3.

∫ 2 3 1 f ( x ) d x = ∫ 2 3 1 ( f ( 3 x − 2 ) / 2 + 1 2 ) n d x \int_{{2}\over{3}}^1f(x)dx=\int_{{2}\over{3}}^1(f(3x-2)/2+{{1}\over{2}})^ndx 321f(x)dx=321(f(3x2)/2+21)ndx

= 1 3 ∫ 0 1 ( f ( x ) / 2 + 1 2 ) n d x = 1 3 ∫ 0 1 ( f ( x ) + 1 ) n / 2 n d x ={{1}\over{3}}\int_0^1(f(x)/2+{{1}\over{2}})^ndx={{1}\over{3}}\int_0^1(f(x)+1)^n/2^ndx =3101(f(x)/2+21)ndx=3101(f(x)+1)n/2ndx

= 1 3 ⋅ 2 n ∫ 0 1 ( f ( x ) + 1 ) n d x ={{1}\over{3\cdot2^n}}\int_0^1(f(x)+1)^ndx =32n101(f(x)+1)ndx

= 1 3 ⋅ 2 n ∫ 0 1 ∑ i = 0 n C n i f i ( x ) d x ={{1}\over{3\cdot2^n}}\int_0^1\sum_{i=0}^nC_n^if^i(x)dx =32n101i=0nCnifi(x)dx

= 1 3 ⋅ 2 n ∑ i = 0 n C n i ∫ 0 1 f i ( x ) d x ={{1}\over{3\cdot2^n}}\sum_{i=0}^nC_n^i\int_0^1f^i(x)dx =32n1i=0nCni01fi(x)dx

= 1 3 ⋅ 2 n ∑ i = 0 n C n i s i ={{1}\over{3\cdot2^n}}\sum_{i=0}^nC_n^is_i =32n1i=0nCnisi

综上所述:

s n = 1 3 ⋅ 2 n + 1 3 ⋅ 2 n s n + 1 3 ⋅ 2 n ∑ i = 0 n C n i s i s_n={{1}\over{3\cdot2^n}}+{{1}\over{3\cdot2^n}}s_n+{{1}\over{3\cdot2^n}}\sum_{i=0}^nC_n^is_i sn=32n1+32n1sn+32n1i=0nCnisi

3 ⋅ 2 n − 1 − 1 3 ⋅ 2 n s n = 1 3 ⋅ 2 n ( 1 + ∑ i = 0 n − 1 C n i s i ) {{3\cdot2^n-1-1}\over{3\cdot2^n}}s_n={{1}\over{3\cdot2^n}}(1+\sum_{i=0}^{n-1}C_n^is_i) 32n32n11sn=32n1(1+i=0n1Cnisi)

s n = 1 + ∑ i = 0 n − 1 C n i s i 3 ⋅ 2 n − 2 s_n={{1+\sum_{i=0}^{n-1}C_n^is_i}\over{3\cdot2^n-2}} sn=32n21+i=0n1Cnisi

(怎么感觉不太对呢,有错欢迎指出)反正最后得到一个递推式,预处理 C C C 2 i 2^i 2i 就可以了 … \dots 吗?

这个出题人很毒瘤,本题要写 高精度

3. T3

题目描述:

定义 r ( s ) r(s) r(s) 为一个 0 / 1 0/1 0/1 序列 S S S 的取反 + + + 翻转序列(例如: r ( 100011 ) = 001110 r(100011)=001110 r(100011)=001110

现在有一种方法生成一种序列即: s n = s n − 1 + ’ 1 ’ + r ( s n − 1 ) s_n=s_n-1+’1’+r(s_n-1) sn=sn1+’1’+r(sn1)

S 0 = 1 S0=1 S0=1

S 1 = 110 S1=110 S1=110

S 2 = 1101100 S2=1101100 S2=1101100

S 3 = 110110011100100 S3=110110011100100 S3=110110011100100

… \dots
此题所需的序列来自 S 30 S_{30} S30

现在有一个机器人放在 ( 0 , 0 ) (0,0) 00 这个点且面朝东方(上北下南左西右东)
它每秒走一步,然后读 0 / 1 0/1 0/1 序列的一个数,如果是 1 1 1 则向左转否则向右转
求经过 X X X 步后机器人到了哪里

数据范围:

X ≤ 1 0 9 X≤10^9 X109

题目解答:

这题比 T 2 T2 T2 好多了,这个序列显然具有二分递归性质,可以先打一个求 S 3 0 S_30 S30 中第 i i i 个数的函数,改一改就好了(虽然我没打出来)。

4. T4

题目描述:
题目描述
SUPER M是一个很经典的游戏
现在改一下规则
有N个城堡(0到n-1)
每个城堡都有一个KOOPA,注意:有些KOOPA会可能有1个FATHER-KOOPA
公主在最后一个城堡内(N-1)
现在每次只能打一个城堡且必须在T[I]时间内打完(否则游戏结束)
如果(N-1)号城堡打完
游戏结束
如果一个KOOPA至少有2个SON-KOOPA被打败
则必须马上去击败这个KOOPA否则会因为愤怒而做掉公主
现在求
最长游戏时间

输入格式
若干组数据(<=10)
每组开始一个数N
第二行N个数表示T[I](<=100)
第三行N个数表示FATHER-KOOPA所在城堡编号(-1表示无FATHER-KOOPA)(最后一个数一定为-1)
数据以0结尾

输出格式
对于每组数据输出一个数,即最大游戏时间

(原题是个语文题,而出题人语文可能又不好,所以我就简化一下吧)

给定一个森林,点有权,求一个点权和最大的顺序,使得满足: 1. 1. 1. 一个节点的至少两个儿子都已选定,则必须 立刻 选定该节点。 2. 2. 2. 编号为 n − 1 n-1 n1 的节点必须是最后一个。

(好吧我承认我语文也不好)

数据范围:

n ≤ 100000 n≤100000 n100000

题目解答:

感觉比 T 3 T3 T3 还好做?!很容易想到除了 n − 1 n-1 n1 的子树外要全选,子树内的话,就是一个简单的树形 d p dp dp ,对于每个节点分别维护 不选 的最大值,以及子树权值和,状态转移时再分别维护最大值和次大值就可以。方程很好推。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值