首页 > 其他分享 >hihocoder#1707 麻烦的第K大问题

hihocoder#1707 麻烦的第K大问题

时间:2024-01-28 21:12:05浏览次数:19  
标签:cur 1707 int hihocoder mid len times 麻烦 cal

由区间第 \(x\times y\) 大 又到多重集第 \(k\) 大

从普通的元素到我们要求的\(ans\)之间是有大小关系的(在区间内 \(<-->\) 区间第\(x\times y\)大 \(<-->\) 多重集内第\(k\)大)

再加上二分时产生的单调性:

此时设二分的值为 \(mid\) ,标记数组为 \(b[]\)

\[ b_i=\begin{cases} 1 & a_i>mid\\ 0 & a_i \le mid \end{cases}\]

那么对于区间 \([l,l+len\times x-1]\)

其第 \(x \times y\) 比 \(mid\) 大 当且仅当 \(sum\{b_r , b_l-1\}>=k*y\)

把 \(b_i\) 弄成前缀和 统计符合条件的 区间 的个数就完成了 \(check\)

bool check(int mid){
    for (int i = 1;i<=n;++i) b[i] = (a[i] > mid),b[i] += b[i - 1];
    int res = 0;
    for(int i = 1;i * len <= n;++i)
        for (int l = 1,r = l + i * len - 1;r <= n;++l,++r)
            if (b[r] - b[l - 1] >= i * y) ++res;
    return res >= k;
}

时间复杂度 $O(n log^2 $ \(n)\)

再想想正解

对于二分、标记的思路应该大致是不变的

想想对于式子本身的转化/化简

对于 \(i\) 不就是 $\frac{r-l+1}{len} $ 吗

带入两边变成只与 \(r\) 和 \(l\) 这两个下标有关的表达式

\(b_r \times len - r \times y >= b_{l-1} \times y - (l-1) \times y\)

关于 \(i\) 的函数 \(cal(i) = b_i \times len - i \times y\)

\(cal(r) >= cal(l-1) , l<r\)

这不是 逆序对/二维偏序 还是什么,用数据结构(树状数组/权值线段树)维护即可

关键代码(这里用树状数组)
bool check(int x){
	int ans = 0;
	b[0] = 0;
        for(i,1->n) b[i] = b[i-1] + (a[i]>=x);
	for(i,1->n) c[i] = {b[i]*len-i*y,i};
        c[0]={-inf,0},c[n+1] = {0,0};
	sort(c+1,c+n+2);
	int cur = 0;
	for(i,1->n+1){// 离散化
		if(c[i].num != c[i-1].num) ++cur;
		b[c[i].id] = cur;// 再次利用 b ,作为 cal
	}
	for(i,0->n-1){
		for(int j=i;j<=n;j+=len) ans += tree.query(b[j]),tree.add(b[j],1);
		for(int j=i;j<=n;j+=len) tree.add(b[j],-1);
	}
	return ans>=k;
}

标签:cur,1707,int,hihocoder,mid,len,times,麻烦,cal
From: https://www.cnblogs.com/fight-for-humanity/p/17993417

相关文章

  • [CF1707E] Replace
    Replace题面翻译题目描述给定一个长为\(n\)的序列\(a_1,\ldots,a_n\),其中对于任意的\(i\)满足\(1\leqa_i\leqn\)。定义一个二元组函数如下:\[f((l,r))=(\min\{a_l,\ldots,a_r\},\max\{a_l,\ldots,a_r\})(l\leqr)\]你需要回答\(q\)次询问,每次给定\((l_i,r_i)\)......
  • 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号怎么删除
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下......
  • # yyds干货盘点 # 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下图所示:......
  • 接口开放太麻烦?试试阿里云API网关吧
    前言我在多方合作时,系统间的交互是怎么做的?这篇文章中写过一些多方合作时接口的调用规则和例子,然而,接口开放所涉及的安全、权限、监控、流量控制等问题,可不是简简单单就可以解决的,这一般需要专业的开放平台来支撑。但为了开放几个接口就要做一个开放平台,实在是不合算。为此阿里云为......
  • 接口开放太麻烦?试试阿里云API网关吧
    前言我在多方合作时,系统间的交互是怎么做的?这篇文章中写过一些多方合作时接口的调用规则和例子,然而,接口开放所涉及的安全、权限、监控、流量控制等问题,可不是简简单单就可以解决的,这一般需要专业的开放平台来支撑。但为了开放几个接口就要做一个开放平台,实在是不合算。为此阿里云......
  • APP上架太难太麻烦?
    同学们好,咕噜签名分发可爱多来啦。随着互联网的发展,各种APP层出不穷,为用户提供了许多一站式的便捷服务。一旦开发出来,肯定是要投入市场使用的。然而,APP上架的过程并非一帆风顺。许多开发者会在上架过程中遇到麻烦,这其中包括复杂的审核流程、严格的规章制度等等。面对这些困扰,我们应......
  • 麻烦看下这个表格宏命令如何修复?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【......
  • # yyds干货盘点 # 麻烦看下这个表格宏命令如何修复?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【......
  • CF1707 题解
    CF1707题解A考场上1h才出思路...弱智了。我们将参加大于当前智商的行为叫做“摆烂”。我们考虑如果现在摆一次,将来某一次不摆,那么现在不摆,将来那次开摆,中间过程的智商会加1。更优。所以一定一摆就摆到底。而且一定会摆到最后一个。所以我们二分从什么时候开摆,看是否能摆到......
  • 谷歌浏览器置顶了,很麻烦,取消谷歌浏览器置顶
    第一步:右击任务栏-属性-勾选“自动隐藏任务栏” ,关闭chrome浏览器;第二步:重新打开chrome浏览器,将鼠标移到底部后任务栏显示出来,右键属性,把“自动隐藏任务栏”的勾点去;......