如何用长尾词策略解决codeforce-1201-C题,实现高效编程?
- 内容介绍
- 文章标签
- 相关推荐
本文共计941个文字,预计阅读时间需要4分钟。
题目:给你一个包含n个整数的数组A(n为奇数),对A进行以下k次操作:+ 对数组排序,使数组以非递减顺序排列。+ 选择数组的中位数,然后加一。+ 最终使得数组的中间数最大。+ 输入:第一行输入n k(用空格分隔)
题目:给你一个包含n个整数的数组A(n为奇数),对A做k次以下操作:
- 对数组排序使数组以非递减顺序排列。
- 选取数组的中位数,然后加一
最终使得数组的中位数最大。
输入:第一行输入两个数字 n 和 k ——数组大小和进行的操作次数
输出:输出最大中位数
栗子:输入 3 2
1 3 5
输出 5
(对于这个问题笔者刚开始想的按数组进行二分但是时间复杂度为O(kn)爆了所以更改思路按值进行二分)
思路:最大中值,那么计算结束数组应该满足--从中间开始到中间后i位的值相等且等于最大中位数。
首先定义一个的右值(右值应大于数组中的每一个元素,只要大于题目中给的1e9即可),求出其中位数。其次判断此中位数是否满足最大中位数的定义,若是,那么左值为此中位数(要求的是最大中位数)。
本文共计941个文字,预计阅读时间需要4分钟。
题目:给你一个包含n个整数的数组A(n为奇数),对A进行以下k次操作:+ 对数组排序,使数组以非递减顺序排列。+ 选择数组的中位数,然后加一。+ 最终使得数组的中间数最大。+ 输入:第一行输入n k(用空格分隔)
题目:给你一个包含n个整数的数组A(n为奇数),对A做k次以下操作:
- 对数组排序使数组以非递减顺序排列。
- 选取数组的中位数,然后加一
最终使得数组的中位数最大。
输入:第一行输入两个数字 n 和 k ——数组大小和进行的操作次数
输出:输出最大中位数
栗子:输入 3 2
1 3 5
输出 5
(对于这个问题笔者刚开始想的按数组进行二分但是时间复杂度为O(kn)爆了所以更改思路按值进行二分)
思路:最大中值,那么计算结束数组应该满足--从中间开始到中间后i位的值相等且等于最大中位数。
首先定义一个的右值(右值应大于数组中的每一个元素,只要大于题目中给的1e9即可),求出其中位数。其次判断此中位数是否满足最大中位数的定义,若是,那么左值为此中位数(要求的是最大中位数)。

