CF竞赛题目讲解_CF387E(树状数组+set)
2022-08-08 10:14 作者:Clayton_Zhou | 我要投稿
//https://codeforces.com/problemset/problem/387/E
题意:
已知一个长度为n的数列,每个数在1-n之间且各不相同。你可以从这个数列中删数, 删除规则:
每次选一段连续区间,可以删除这个区间中最小的那个数,然后每次删除得到的分数是这个区间的长度。
题目要你把原序列删成一个规定的长度为k的序列,并要得分最高。
思路:
贪心策略按数据从小到大删,用set来维护b数组,同时二分查找大于当前要删除数据的位置。
假设当前要删的数是3,那么r就是距离3最远的那个数据下标,未删数据,不在set中, (*it)-1
l就是3的前面一个数2的下标+1, 未删数据,不在set中, *(--it)+1
input
3 2
2 1 3
1 3