A
浪哥的烦恼
时间限制:1000ms 内存限制:131072kb
通过率:55/82 (67.07%)
正确率:55/254 (21.65%)
题目描述
最近学校大检查,要求上课认真听讲,这让浪哥很是烦恼,因为这样他就不能上课刷题了。但经过不懈的观察,他发现领导检查是有一定的规律的。不妨把每层楼的教室看成一排,从 1 1 到 n n 标号,领导每检查完一个教室,就会从相邻的一个或两个教室中选择一个继续检查,一个教室可能被检查不止一次。
已知时刻 0 0 领导在 1 1 号教室,从 i i 号教室走到 i+1 i+1 号教室需要 ti ti 时间,从 i+1 i+1 号教室走到 i i 号教室也需要 ti ti 时间 (i=1,2,⋯,n−1) (i=1,2,⋯,n−1),检查一个教室的时间极短可忽略不计,放学时刻为 m m 。
浪哥想要知道,放学之前(包括 m m )的哪些时刻,领导是不可能检查到他所在的 n n 号教室的。
输入
第一行包含一个正整数 T T ,表示有 T T 组测试数据。
接下来依次给出每组测试数据。对于每组测试数据:
第一行包含两个正整数 n n 和 m m。
第二行包含 n−1 n−1个正整数 t1,t2,⋯,tn−1 t1,t2,⋯,tn−1。
1≤T≤200,2≤n≤100,1≤m≤500,1≤ti≤m 1≤T≤200,2≤n≤100,1≤m≤500,1≤ti≤m
输出
对于每组数据输出一行,包含一些正整数,按升序给出,表示 n n 号教室不可能被检查的时刻。
对于本题,输出中在一行的每个整数之间用恰好一个空格隔开,不能有其他额外空格。
输入样例
1
3 10
2 3
输出样例
1 2 3 4 6 7 8 10
样例解释
在放学前,领导有两种不同的检查方式会检查到 3
号教室,分别是 1 -> 2 -> 3
和 1 -> 2 -> 1 -> 2 -> 3
,其中到达 3
号教室的时刻分别为 5
和 9
。
北航解题思路:
有 1 到 n 共 n 个点
在 i 到 i + 1 之间移动需要 ti 时间
问从 1 出发走到 n 的耗时不超过 m 的情况下,不可能是哪
些时长
1 ≤ T ≤ 200,2 ≤ n ≤ 100,1 ≤ m ≤ 500;
令 f(i,j) 表示能否恰好用 i 时间走到 j
f(i,j) → f(i + tj,j + 1) if j < n f(i,j) → f(i + tj−1,j −1) if j > 1 从 f(0,1) 开始扩展,以广度优先搜索 (BFS) 的形式实现,时
间复杂度 O(nm);
B
前前前世
时间限制:2000ms 内存限制:131072kb
通过率:5/7 (71.43%)
正确率:5/26 (19.23%)
题目描述
taki
——泷
和 mitsuha
——三叶
分别位于时间树两个结点。
世界的开端只有一个结点,但是由于在不同时刻采取不同的行动,会引起世界线变动,从而分裂为两个后续状态。因此我们用二叉树来描述整个世界时间分支,称之为时间树——一棵无穷大的二叉树。 taki
和 mitsuha
的故事开启于时间树的某一个结点 p p ,所以两人存在于以 p p 为根结点的时间树子树之中。 mitsuha
在一个较早的时间结点, taki
在相对较后的时间结点,具体来说,他们相差 3
年。
时间树结点的编号从 1
开始,按照层数,层内从左到右编码。如:
1
2 3
4 5 6 7
8 9 10 11 12 13 14 15
换句话说,这棵树的第 i i 层有 2i−1 2i−1 个结点 (i=1,2,3,⋯) (i=1,2,3,⋯) ,而对于每个编号为 j j 的结点,它的两个孩子结点的编号分别是 2j 2j 和 2j+1 2j+1,它的父结点(如果存在)的编号为 ⌊j2⌋ ⌊j2⌋ 。
古老的传说启示:如果两个人位于时间树的两个不同的结点,且一个结点是另一个结点的前前前结点(父结点的父结点的父结点),且满足两个点的编号模 k k 意义下均与 1 1 同余,命运的结绳(产灵,Musubi
)将连接两人,在日落时分,彼此思念的两人能够穿越时间树相见。
只考虑结点 p p 开始的 n n 层时间树子树(即作为第 1
层结点的 p p 与其他的层数不超过 n n 且是 p p 的间接子结点的结点组成的树),那么有多少种不同的可能,满足 taki
能与 mitsuha
相见?即 taki
所在结点的前前前结点是 mitsuha
所在结点。
由于答案可能很大,你只需要给出答案对 109+7 109+7 取模的值。
输入
第一行包含一个正整数 T T ,表示有 T T 组测试数据。
接下来依次给出每组测试数据。对于每组测试数据:
仅一行,包含三个整数 k,n k,n 和 p p ,表示传说中的值,以及时间子树的层数限制、子树根结点编号。
1≤T<1000,2≤n<50000,1<k<1018,1≤p<1018 1≤T<1000,2≤n<50000,1<k<1018,1≤p<1018
输出
对于每组数据输出一行,包含一个整数,表示答案对 109+7 109+7 取模的值。
输入样例
3
7 4 1
5 4 1
8 5 4
输出样例
2
1
1
样例解释
前两个样例均以整个时间树的 1
号结点作为子树根结点。
对于 4
层 k=7 k=7 的情况,仅存在两种可能 (1,8)
和 (1,15)
满足传说启示。
对于 4
层 k=5 k=5 的情况,仅存在一种可能 (1,11)
满足传说启示。
第三个样例以 4
为子树根结点,子树层数为 5
, k=8 k=8 ,仅存在一种可能 (9,73)
满足传说启示。
给出一棵无穷结点的二叉树,根节点为 1 ,并且
对于结点 i ,它的两个子结点分别是 2i 和 2i + 1
在结点 p 的前 n 层子树中寻找两个结点 x 和 y ,满足 y 是 x 的子结点的子结点的子结点,且 x ≡ y ≡ 1 (mod k) 问可能的二元组 (x,y) 的数目模 109 + 7 的值
1 ≤ T < 1000,2 ≤ n < 50000,1 < k < 1018,1 ≤ p < 1018;
由祖先关系可知 y = 8x + d,d ∈ [0,23)
由同余关系可知 1 ≡ y ≡ 8x + d ≡ 8 + d (mod k)
当 k ≥ 15 时, 8 ≤ 8 + d ≤ 15 ,无解;
令 fk(i,j) 表示长度为 2i 且最小数字模 k 意义下为 j 的整数
区间里模 k 意义下为 1 的数字个数
fk(0,1) = 1,fk(0,j) = 0 (0 ≤ j < k,j 6= 1) fk(i,j) = fk(i−1,j) + fk(i−1,(j + 2i−1) mod k) 对于每个 k 可以 O(kn) 预处理,然后 O(n) 回答询问
预处理的复杂度为 O(k2n) ,预处理前缀和后可以 O(1) 回答;
C
蚂蚁求偶
时间限制:5000ms 内存限制:131072kb
通过率:57/76 (75.00%)
正确率:57/260 (21.92%)
题目描述
今年情人节, Dshawn
给喜欢的妹子送了一只笔筒并开玩笑说“人吃藕就要多学习”。妹子十分感动然后拒绝了他。
这天闷得发慌的 DShawn
看着笔筒,发现笔筒的内壁有一只蚂蚁,外壁也有一只蚂蚁。内壁里面那只蚂蚁好像约了外壁的那只蚂蚁,正在以最短的距离向外壁的蚂蚁爬行。我们可以将蚂蚁认为是质点,笔筒的厚度忽略不计。因为笔筒底部有水,蚂蚁不愿意碰到笔筒底部!
Dshawn
就静静地看着小蚂蚁爬行,你知道小蚂蚁要爬多远吗?
为了方便计算,我们把笔筒的底面圆心放在原点,竖直放置笔筒。
输入
第一行包含一个正整数 T T ,表示有