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 ;
}

最新文章

  1. 无聊拆中国银行密码器和农业银行U盾
  2. SQLserver技巧
  3. URL 路径长度限制(错误:指定的文件或文件夹名称太长)
  4. ios 数组排序
  5. iframe在ipad safari的显示
  6. Ant学习---第三节:使用Ant实现一个最小的项目编译
  7. VS2003 下GridControl的列显示成图片+文字的形式实现
  8. Ibatis中sqlmap参数map中还需要套list的情况如何写?
  9. Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析
  10. php 支持递归函数.递归函数就是调用函数本身.
  11. Spring Security(05)——异常信息本地化
  12. Failed to load c++ bson extension, using pure JS version
  13. 基于Avocado 的 QData MySQL自动化测试.md
  14. app后端设计(11)-- 系统架构(2014.12.05更新)
  15. 自定义注解(spring)
  16. 进一步聊聊weight initialization
  17. DB2在dbvisualizer 客户端执行begi/end 语句块
  18. 实现数据导出为.csv表格
  19. 系统wmiprvse.exe占用CPU非常高,求解决
  20. JDK7 AutoCloseable

热门文章

  1. JS高级学习笔记(2)之js多线程
  2. 游戏引擎UE4详解!
  3. UML-GRASP后4种模式
  4. MySQL--InnoDB 启动、关闭与恢复
  5. java 练习题带答案
  6. vscode显示当前文件完整路径信息
  7. 史上最难PHPer笔试题,40分就能月薪过万!附答案
  8. Struts 2 的常规配置
  9. 并发与高并发(四)-java并发的优势和风险
  10. 架构之道(5) - APP和Web的后台架构