题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5919
——————————————————————————————————————
Sequence II
Time Limit: 9000/4500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1654 Accepted Submission(s): 420
Problem Description
Mr. Frog has an integer sequence of length n,which can be denoted as @H_404_11@
a@H_404_11@@H_404_11@@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@2@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@n@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ There are m queries.
In the @H_404_11@
i@H_404_11@−@H_404_11@t@H_404_11@h@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ query,you are given two integers @H_404_11@
l@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ and @H_404_11@
r@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@. Consider the subsequence @H_404_11@
a@H_404_11@@H_404_11@@H_404_11@l@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@l@H_404_11@@H_404_11@@H_404_11@i@H_404_11@+@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@l@H_404_11@@H_404_11@@H_404_11@@H_196_301@i@H_404_11@+@H_404_11@2@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@r@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@.
We can denote the positions(the positions according to the original sequence) where an integer appears first in this subsequence as @H_404_11@
p@H_404_11@(@H_404_11@i@H_404_11@)@H_404_11@1@H_404_11@,@H_404_11@p@H_404_11@(@H_404_11@@H_48_404@i@H_404_11@)@H_404_11@2@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@p@H_404_11@(@H_404_11@i@H_404_11@)@H_404_11@k@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ (in ascending order,i.e.,@H_404_11@
p@H_404_11@(@H_404_11@i@H_404_11@)@H_404_11@1@H_404_11@<@H_404_11@p@H_404_11@(@H_404_11@i@H_404_11@)@H_404_11@2@H_404_11@<@H_404_11@⋯@H_404_11@<@H_404_11@p@H_404_11@(@H_404_11@i@H_404_11@)@H_404_11@k@H_404_11@i@H_404_11@)@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@.
Note that ki is the number of different integers in this subsequence. You should output p(i)⌈ki2⌉for the i-th query.
Input
In the first line of input,there is an integer T @H_404_11@
(@H_404_11@T@H_404_11@@H_404_11@≤@H_404_11@2@H_404_11@)@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ denoting the number of test cases.
Each test case starts with two integers n @H_404_11@
(@H_404_11@n@H_404_11@≤@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@2@H_404_11@×@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@10@H_404_11@@H_404_11@@H_404_11@5@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@)@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ and m @H_404_11@
(@H_404_11@m@H_404_11@≤@H_404_11@2@H_404_11@×@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@10@H_404_11@@H_404_11@@H_404_11@5@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@)@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@. There are n integers in the next line,which indicate the integers in the sequence(i.e.,@H_404_11@
a@H_404_11@@H_404_11@@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@2@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@a@H_404_11@@H_404_11@@H_404_11@n@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@0@H_404_11@≤@H_404_11@a@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@≤@H_404_11@2@H_404_11@×@H_404_11@10@H_404_11@@H_404_11@@H_404_11@5@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@).
There are two integers @H_404_11@
l@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ and @H_404_11@
r@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ in the following @H_404_11@
m@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ lines.
However,Mr. Frog thought that this problem was too young too simple so he became angry. He modified each query to@H_404_11@
l@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@r@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@(@H_404_11@1@H_404_11@≤@H_404_11@l@H_404_11@‘@H_404_11@i@H_404_11@≤@H_404_11@n@H_404_11@,@H_404_11@1@H_404_11@≤@H_404_11@r@H_404_11@‘@H_404_11@i@H_404_11@≤@H_404_11@n@H_404_11@)@H_404_11@.@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@As a result,the problem became more exciting.
We can denote the answers as @H_404_11@
a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@2@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@m@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@. Note that for each test case @H_404_11@
a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@0@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@=@H_404_11@0@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@.
You can get the correct input li,ri from what you read (we denote them as @H_404_11@
l@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@r@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@)by the following formula:
@H_404_11@
l@H_404_11@i@H_404_11@=@H_404_11@m@H_404_11@i@H_404_11@n@H_404_11@(@H_404_11@l@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@+@H_404_11@a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@i@H_404_11@−@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@)@H_404_11@@H_404_11@@H_404_11@mod@H_404_11@@H_404_11@@H_404_11@n@H_404_11@+@H_404_11@1@H_404_11@,@H_404_11@(@H_404_11@r@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@+@H_404_11@a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@i@H_404_11@−@H_404_11@@H_385_1301@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@)@H_404_11@@H_404_11@@H_404_11@mod@H_404_11@@H_404_11@@H_404_11@n@H_404_11@+@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@
@H_404_11@
r@H_404_11@i@H_404_11@=@H_404_11@m@H_404_11@a@H_404_11@x@H_404_11@(@H_404_11@l@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@+@H_404_11@a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@@H_694_1403@i@H_404_11@−@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@)@H_404_11@@H_404_11@@H_404_11@mod@H_404_11@@H_404_11@@H_404_11@n@H_404_11@+@H_404_11@1@H_404_11@,@H_404_11@(@H_404_11@r@H_404_11@‘@H_404_11@@H_404_11@@H_404_11@i@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@+@H_404_11@a@H_404_11@n@H_404_11@s@H_404_11@@H_404_11@@H_404_11@i@H_404_11@−@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@)@H_404_11@@H_404_11@@H_404_11@mod@H_404_11@@H_404_11@@H_404_11@n@H_404_11@+@H_404_11@@H_303_1502@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@
Output
You should output one single line for each test case.
For each test case,output one line “Case #x: @H_404_11@
p@H_404_11@@H_404_11@@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@p@H_404_11@@H_404_11@@H_404_11@2@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@p@H_404_11@@H_404_11@@H_404_11@m@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@”,where @H_404_11@
x@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ is the case number (starting from 1) and @H_404_11@
p@H_404_11@@H_404_11@@H_404_11@1@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@p@H_404_11@@H_404_11@@H_404_11@2@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@,@H_404_11@⋯@H_404_11@,@H_404_11@p@H_404_11@@H_404_11@@H_404_11@m@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@ is the answer.
Sample Input
2
5 2
3 3 1 5 4
2 2
4 4
5 2
2 5 2 1 2
2 3
2 4
Sample Output
Case #1: 3 3
Case #2: 3 1
Hint
————————————————————————————————————————————
题目大意:
给定一个长度为n的序列,然后有m个查询,问你在@H_404_11@
[@H_404_11@l@H_404_11@,@H_404_11@r@H_404_11@]@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@区间中所有不相同元素第一次出现的位置,按这个位置升序以后的中间(向上取整)的那个位置是多少(这个位置指的是原序列)?
解题思路:
因为这个题对@H_404_11@
l@H_404_11@,@H_404_11@r@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@的限制,这题强制在线,就不能离线树状数组做了,只能主席树做了,
然后他说在询问区间,不相同元素第一次出现的位置的中间那个,
如果是从正序挂到主席树上的话 确实不好维护,
考虑倒叙插入到主席树上,那么每次都只会记录最左边的数,更新的时候如过当前数出现过就删去之前的那个,
就不需要排序过程了,只需要在区间内找第中间的那个就行了
查询的时候我们只要对rt[l]进行查找就行了
于是就变成了找区间内不同数的个数,
然后找区间内第k大的问题,
这样的话就是主席树的基本操作了,
总体复杂度@H_404_11@
O@H_404_11@(@H_404_11@n@H_404_11@log@H_404_11@@H_404_11@n@H_404_11@)@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@@H_404_11@
@H_404_11@
附本题代码
——————————————————————————————————————————————