https://ac.nowcoder.com/acm/contest/887/E

树状数组做法(代码有注释)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int M=4e5+;
int x[M],y[M],l[M],r[M],ans[M<<],tot;
ll bit1[M<<],bit2[M<<];
int lowbit(int x){
return x&(-x);
}
void add(ll bit[], int p, int x) {
while(p<=tot){
bit[p]+=x;
p+=lowbit(p);
}
}
ll query(ll bit[], int p) {
ll ans = ;
while(p>){
ans+=bit[p];
p-=lowbit(p);
}
return ans;
}
int main(){
int n;
scanf("%d",&n);
ll a1,a2,b1,b2,c1,c2,m1,m2;
scanf("%lld%lld%lld%lld%lld%lld",&x[],&x[],&a1,&b1,&c1,&m1);
scanf("%lld%lld%lld%lld%lld%lld",&y[],&y[],&a2,&b2,&c2,&m2);
for(int i=;i<=n;i++){
if(i>){
x[i]=(a1*x[i-]+b1*x[i-]+c1)%m1;
y[i]=(a2*y[i-]+b2*y[i-]+c2)%m2;
}
l[i]=min(x[i],y[i])+;
r[i]=max(x[i],y[i])+;
ans[++tot]=l[i];
ans[++tot]=r[i]+; }
///离散化处理
sort(ans+,ans+tot+);
tot=unique(ans+,ans+tot+)-ans-;
ll nownum=;
for(int i=;i<=n;i++){ nownum+=(r[i]-l[i]+);///加上当前区间数的数目 ,为了达到用数目找中位数的目的
int L=lower_bound(ans+,ans+tot+,l[i])-ans;///找到l r分别在离散化后的位置
int R=lower_bound(ans+,ans+tot+,r[i]+)-ans;
///bit1 记录的是总共数的数目的前缀和,所以左右端点就那样赋值,前缀和起来就是总数:r[i]-l[i]+1;
add(bit1,L,-l[i]);
add(bit1,R,r[i]+);
//bit2 记录L的数目的前缀和
add(bit2,L,);
add(bit2,R,-);
///二分找
L=,R=1e9;
while(L<R){
int midd=(L+R)>>;
int pos=upper_bound(ans+,ans+tot+,midd)-ans-;
///若查询到query(bit2)不等于0,说明midd前面有若干个左区间端点 没有对应的右区间端点,即query(bit1)算不完全,所以要加还给temp;
ll tmp=query(bit1,pos)+query(bit2,pos)*(midd+);
if(tmp<(nownum+)/){///用数目找中位数
L=midd+;
}else{
R=midd;
}
}
printf("%d\n",L);
}
return ;
}

利用数目找中位数(牛客第七场E)的更多相关文章

  1. 牛客第七场 Sudoku Subrectangles

    链接:https://www.nowcoder.com/acm/contest/145/J来源:牛客网 You have a n * m grid of characters, where each ...

  2. 牛客第七场 Minimum Cost Perfect Matching 规律

    题意:1-n-1个数和1-n-1个数两两匹配,每次匹配将两个数的值进行与运算,要求每次匹配与运算的和相加最小,问满足匹配的配对方式 分析:打表前10个数与运算最小的匹配,我们发现,从n-1开始按位取反 ...

  3. 数据流中的中位数 牛客网 剑指Offer

    数据流中的中位数 牛客网 剑指Offer 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就 ...

  4. 牛客第三场多校 H Diff-prime Pairs

    链接:https://www.nowcoder.com/acm/contest/141/H来源:牛客网 Eddy has solved lots of problem involving calcul ...

  5. 牛客第五场 G max 思维

    链接:https://www.nowcoder.com/acm/contest/143/G来源:牛客网 Give two positive integer c, n. You need to find ...

  6. uestc summer training #9 牛客第三场 BFS计数

    G.coloring tree BFS计数 题目:给你n(<=5000)个节点的一颗树 你有K(<=5000)种颜色 你可以给每一个节点染一种颜色 总共有Kn种染色方法 在一种染色方法中 ...

  7. 牛客网第二场Jfarm(随机化+二维前缀和)

    链接:https://www.nowcoder.com/acm/contest/140/J 来源:牛客网 White Rabbit has a rectangular farmland of n*m. ...

  8. 牛客网第一场E题 Removal

    链接:https://www.nowcoder.com/acm/contest/139/E 来源:牛客网 Bobo has a sequence of integers s1, s2, ..., sn ...

  9. 牛客网第一场 A Monotonic Matrix

    链接:https://www.nowcoder.com/acm/contest/139/A来源:牛客网 Count the number of n x m matrices A satisfying ...

随机推荐

  1. Unity3d游戏代码保护

    现在的游戏项目如果达到一定规模.项目比较创新方竞争对手.项目严重依赖客户端代码那么代码保护还是尽量做,如果不是也没必须瞎折腾. Unity常见代码保护机制: 1.重新编译mono,修改mono_ima ...

  2. 阿里云-容器服务之集群服务 k8s(Jenkins+gitlab+k8s的devops)- 03

    ------------恢复内容开始------------ 1.安装gitlab,选择阿里云提供的编排模板,点击确定:配置域名访问,与jenkins设置一致:这里不再重复赘述: 2.如图,需要给je ...

  3. one_day_one_linuxCmd---光标快捷操作

    <坚持每天学习一个 linux 命令,今天我们来学习 切换光标的常用命令> 摘要:最近经常使用 xshell 软件来远程连接各种机器,在 bin/bash 下输入各种命令,因为都是一些非常 ...

  4. 关于阿里云的远程连接和轻型桌面(xfce4)安装

    这里用的阿里云服务器是轻量应用服务器 先通过网页端的远程连接进入服务器,然后 安装xfce4 (1)先安装更新:apt-get update. (2)安装xrdp:输入apt-get install ...

  5. POJ 1258:Agri-Net Prim最小生成树模板题

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45050   Accepted: 18479 Descri ...

  6. 30 docker swarm service 的创建维护和水平拓展

    运行环境在上两篇文章中已经搭建 1. 创建一个service (与 docker run 类似 ,创建一个 container) docker service create --name demo b ...

  7. 吴裕雄--天生自然 JAVA开发学习: 循环结构

    public class Test { public static void main(String args[]) { int x = 10; while( x < 20 ) { System ...

  8. Java之线程通信的应用:经典例题:生产者/消费者问题

    /** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量 ...

  9. 2019年java后端年终总结(六年开发经验),送给正在努力的你

    长大之后,时间总是过得飞快,转眼之间,今年已经只剩下1天了.小时候总感觉遥不可及.只在科幻小说里面出现的2020年,已经开始进入蓄力期了. 这篇文章主要和大家聊一聊分析2019年java技术的更新给大 ...

  10. windows通过Winscp传输文件给Vbox虚拟机

    1.VirtualBox->设置->网络->高级->端口转发->Rule 1 TCP 127.0.0.1 22 10.0.2.15(在CentOS中通过ip addr命令 ...