#D. 讨厌的线段树

    传统题 文件IO:segmenttree 1000ms 256MiB

讨厌的线段树

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

小明讨厌线段树,因为他根本不会证明时间复杂度什么的,虽然他的老师说,访问任意一个区间,在线段树上最多需要遍历O(logn)O(logn)个节点,但他根本不信。

所以今天,你作为小明的好朋友,需要写个程序让他认识到什么叫lognlogn

具体的情况是这样的:

你有一棵静态开点的线段树,下标的范围是[1,n][1,n],每个点表示的区间[l,r][l,r],如果不是叶子结点,那么左子树是[l,(l+r)/2][l,(l+r)/2],右子树是[(l+r)/2+1,r][(l+r)/2+1,r]

每次询问一个区间,会从根节点开始递归:

case 1:如果当前节点完整被询问区间包含,则return。

case 2:如果左子树跟询问区间有交集,就往左子树递归。

case 3:如果右子树跟询问区间有交集,就往右子树递归。

如果case 2和case 3同时成立,则需要往两边各自递归。

我们定义一次询问[L,R][L,R]的代价是本次询问涉及到的节点个数。

例如,在1010个点的线段树中,询问区间[2,6][2,6]会涉及到下图中1111个节点。

image

请帮助小明计算,对于所有可能的询问区间[L,R](1LRn)[L,R](1\leq L\leq R\leq n),涉及了1,2,3,...,k1,2,3,...,k个节点的询问各有多少个。

输入格式

第一行输入n,kn,k

输出格式

一行kk个数字,表示答案。

样例输入 #1

10 11

样例输出 #1

1 2 4 10 11 9 6 6 3 1 2

样例解释 #1

解释太费劲,涉及到1111个节点的询问只有[2,6][2,6][2,9][2,9]

数据范围

对于30%的数据:1n1031\leq n \leq 10^3

对于70%的数据:1n1051\leq n\leq 10^5

对于100%的数据:1n1091k1201\leq n\leq 10^9,1\leq k \leq 120

8/1 提高组

未参加
状态
已结束
规则
IOI
题目
4
开始于
2024-8-1 18:00
结束于
2024-8-3 18:00
持续时间
48 小时
主持人
参赛人数
14