【题目链接】:http://hihocoder.com/problemset/problem/1483

【题意】

中文题

【题解】

二分最后的答案;
二分的时候;
对于每一个枚举的值x;
计算小于等于它的值(对应了若干个区间,且这些区间里面,每一个区间的价值(相同对数)都小于等于x)的区间个数ju;
如果ju>=k,则可以再变小一点,同时先记录ans=mid,否则数字变大一点;
计算小于等于x的区间个数;
可以用尺取法;
如果
l..r这个区间的值是符合要求的即区间价值≤x;

l+1..r
l+2..r
l+3..r

r..r
这r-l+1个区间肯定也是符合的;
然后右端点往右走;
新增加的区间价值,可以通过新增加的数字是什么,然后看看前面有多少个数字和它一样,通过O(1)算出来新的区间价值;
然后如果区间价值大于x了,则递增左端点;改变减少的数字的个数;减小区间价值;balabala

【Number Of WA】

0

【完整代码】

#include <bits/stdc++.h>
using namespace std;
#define rep1(i,x,y) for (int i = x;i <= y;i++)
#define LL long longconst int N = 2e5+100;LL k,tot,a[N];
int num[N],n;
map <int,int> dic;LL ju(LL x)
{LL cur = 0,xyx = 0;rep1(i,1,tot) a[i] = 0;int l = 1;rep1(i,1,n){cur += a[num[i]];a[num[i]]++;while (cur>x){a[num[l]]--;cur-=a[num[l]];l++;}xyx+=i-l+1;}return xyx;
}int main()
{//freopen("D:\\rush.txt","r",stdin);int T;cin >> T;while (T--){dic.clear();tot = 0;cin >> n >> k;rep1(i,1,n){int x;cin >> x;if (dic.find(x)==dic.end()) dic[x]=++tot;num[i] = dic[x];}LL l = 0,r = 1LL*n*(n-1)/2,ans = 0;while (l <= r){LL m = (l+r)>>1;if (ju(m)>=k){ans = m;r = m-1;}elsel = m+1;}cout << ans << endl;}return 0;
}

转载于:https://www.cnblogs.com/AWCXV/p/7626394.html

【[Offer收割]编程练习赛10 C】区间价值相关推荐

  1. hihocoder offer收割编程练习赛11 B 物品价值

    思路: 状态压缩 + dp. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> ...

  2. 最简真分数c语言,HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)...

    描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 < ...

  3. hihocoder [Offer收割]编程练习赛14 剑刃风暴

    题目4 : 剑刃风暴 时间限制:20000ms 单点时限:2000ms 内存限制:256MB 描述 主宰尤涅若拥有一招非常厉害的招式--剑刃风暴,"无论是战士还是法师,都害怕尤涅若的武士刀剑 ...

  4. [Offer收割]编程练习赛63

    命名 暴力 1 #include <bits/stdc++.h> 2 using namespace std; 3 char S[1111], T[1111], a[1111], b[11 ...

  5. hihocoder offer收割编程练习赛12 B 一面砖墙

    思路: 就是求哪个长度出现的次数最多. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorit ...

  6. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  7. [Offer收割]编程练习赛15 A.偶像的条件[贪心]

    #1514 : 偶像的条件 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校正面临着废校的大危机.面对学校的危机,小Hi同学们决定从ABC三个班中各挑出一名同 ...

  8. hihocoder [Offer收割]编程练习赛24

    比赛https://hihocoder.com/contest/offers24/problems 应该能拿到个鼠标垫 舒服了 这个oj体验好差,每次都要先因为选错语言CE一发,而且刷新之后还是默认G ...

  9. hihocoder offer收割编程练习赛8 B 拆字游戏

    思路: 模拟,dfs. 注意题目中的trick,输出一块的时候不要把其他块也输出了. 实现: 1 #include <cstring> 2 #include <iostream> ...

最新文章

  1. linux firefox xvfb,自动化测试之linux+xvfb+selenium+firefox+python测试环境搭建与测试
  2. 最新自然语言处理领域顶会论文大合集!
  3. 一张图看懂混合云数据同步一站式解决方案
  4. 最少拦截系统(dp)
  5. MS SQL入门基础:移动数据库
  6. java annotation list_Java 注解 (Annotation)你可以这样学
  7. .NET Core 使用MailKit发送电子邮件
  8. 九.jmeter性能测试基础实践(1)
  9. ajax请求携带tooken_当ajax碰到token的时候
  10. 关于Maven构建的项目依赖范围
  11. GAN生成式对抗网络简介及MINST实现
  12. 计算机单位mb和m大小一样吗,MB和M哪个容量大?
  13. java month_Java MonthDay getMonth()用法及代码示例
  14. 深度丨从零搭建推荐体系
  15. 【Bio】基础生物学 - 基本氨基酸 amino acids
  16. Android 学习网站(资源收集)
  17. 问题解决 | 黑金AX7020使用Petalinux定制Linux系统遇到的坑
  18. python做一个星座分析_利用python输出星座的方法
  19. 如何做一个优秀完整的自我介绍?
  20. 蓝易云:Linux系统【Centos7】如何配置完整的CC攻击防护策略

热门文章

  1. 小孩看python_小朋友,python是否让你有很多问号?
  2. 怎么找网页源文件位置_原神白铁块位置分布图 原神白铁块怎么找
  3. 多项式辗转相除法求最大公约数_点灯游戏、方格填数与 Chebyshev 多项式(续)...
  4. 框架下cookie的使用_aspnetcore自带cookie的认证期限分析
  5. Android ScrollView
  6. Java LocalTime
  7. java 同步块关键字_Java同步关键字,同步方法和块
  8. shell学习之循环命令
  9. C# 编译的DLL文件在其他项目中调用时,看不见注释
  10. 开课吧前端:全栈工程师的职业目的方向是什么呢?