test0710 二分专题

test 0710 二分专题

T1 算术

得分情况

期望\实际:100

题意

已知一个长度为 \(N+2\) 的序列 \(A[0],A[1],\cdots,A[N],A[N+1]\), 这个数列满足如下条件:

\(A[i] = (A[i-1] + A[i+1])/2 - D[i] (0 < i < N+1)\)

现在给出数列 \(D,A[0],A[N+1]\) , 请计算出 \(A[1]\) 的值,我们可以证明 \(A[1]\) 可能的取值存在且唯一(有唯一解)

正解

可以脑补一下,显然 \(A[1]\) 增大时 \(A[N+1]\) 同时增大(后来别人递推发现其实是是一个一次函数……)

直接二分答案即可

T2 比赛

得分情况

期望\实际:0

改后:100

题意

\(2^N\) 名选手正在打石头剪刀布比赛,比赛的规则是两两进行 1v1 淘汰赛,并在 \(N\) 轮后决出唯一的胜利者。

每名选手有一个独一无二的实力分数,代表他在这 \(2^N\) 名选手中的排名(不存在并列的情况) 。

比赛的结果具有随机性,即:对于进行比赛的两名选手,如果两名选手的实力分数的差的绝对值小于等于某个给定的常数 \(K\),则两名选手都有可能获得比赛胜利。

否则,两名选手中分数较低(意味着排名更靠前)的选手一定会取得比赛的胜利。

也因此,比赛的最终胜利者不一定是实力分数最小(排名最靠前)的选手。

给出 \(2^N\)\(K\) ,问:最少需要在这 \(2^N\) 个选手中排多少名(即实力分数最大),才有可能获得整个比赛的最终胜利者?

犯傻原因

一开始看错题了,后来直接跳了写别的题目去了

正解

二分答案

显然我们可以发现比赛可以抽象成一个完全二叉树

那么,当前节点为 &x&

那么我们可以贪心的找到当前大于等于 \(x-k\) 的最小值填入,然后就可以过了……

T3数字三角形

得分情况

期望\实际:40

改后:100

题意

你有一个底部宽为 \(2N-1\) 的金字塔,除了底层以外,每一个位置的数都是下面三个数的中位数。求塔顶的数是多少?

犯傻原因

也是直接跳了……写了个暴力

正解

可以考虑二分答案,大于为 \(1\) 小于 为\(0\)

那么可以手玩一下,然后接可以找到规律

对于大于当前答案的设为 \(1\) 小于的设为 \(0\)

从中间开始往外面找

如果出现了第一个连续的 \(00\) 或者 \(11\) 显然就可以一直上传……

然后就可以过了

T4 digit

得分情况

期望:100

实际:50

改后:100

题意

\(k\) 进制下 \(l\) 位数到 \(r\) 位数中有多少个数的数位和为 \(5\) 的倍数或 \(4\) 的倍数或 \(6\) 的倍数。

犯傻原因

取模没取全…… \(k\) 忘记取模了……

正解

\(f[x][a]\) 为当前长度为 \(x\) 数位和模 \(s\) 时剩 \(a\)

此处 \(s\) 的取值只有 \(4,5,6,12,20,30,60\)

\(f[1][a]=(k-1-i)/s + 1\)

显然 \(f[x][a]=\sum_{i=0}^{i < s}([\frac{k-1-(a-i+s)\%s}{s}]+1) \times f[x-1][i]\)

所以矩阵乘法试试……

试试就逝世……

考试总结

可以手玩一些大样例避免出现取模的问题,然后还可以多思考思考,一开始就看出了这是二分专题,但是还是没能很好的想出怎么判断可行……

posted @ 2020-07-10 19:01  ztz_cpp  阅读(142)  评论(0编辑  收藏  举报