>传送门<

题意:给n个操作,每次 (1e9范围内)即往数组里面插所有 的所有数,求每次操作后的中位数
思路:区间离散化然后二分答案,因为小于中位数的数字恰好有个,这显然具有单调性。那么问题就转化为如何求小于等于某个数x的数一共有多少个。

考虑以下两种情况:假设左端点小于等于x的区间一共有q

  • 如果x不落在任何一个区间,那么答案显然是
  • 否则假设x同时落在m个区间中,答案是

做一点点数学上的变换:令

注意到在第一种情况下m=0,所以我们就成功归约到只有一种情况。对区间的左右端点离散化,用两个树状数组分别维护 的前缀和和m以后,我们就能够地判断一个解是否可行。总复杂度 ,M是因为取值范围是1e9

Code

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn = 400010; ll n, cnt, tot;
ll x[maxn], y[maxn], l[maxn], r[maxn];
int a1, b1, c1, a2, b2, c2, m1, m2;
ll z[maxn<<1], bit1[maxn<<1], bit2[maxn<<1]; void add(ll a[], int i, int x) {
while (i<=cnt) {
a[i] += x;
i += i&(-i);
}
}
ll query(ll a[], int i){
ll res = 0;
while (i>0) {
res += a[i];
i -= i&(-i);
}
return res;
}
void read() {
cin>>n;
cin>>x[1]>>x[2]>>a1>>b1>>c1>>m1;
cin>>y[1]>>y[2]>>a2>>b2>>c2>>m2;
for(int i = 1; i <= n; i++){
if(i>2){
x[i] = (a1*x[i-1]+b1*x[i-2]+c1)%m1;
y[i] = (a2*y[i-1]+b2*y[i-2]+c2)%m2;
}
l[i] = min(x[i],y[i])+1;
r[i] = max(x[i],y[i])+1;
z[++cnt] = l[i]; z[++cnt] = r[i]+1;
}
sort(z+1,z+cnt+1);
cnt = unique(z+1,z+cnt+1)-z-1;
} int main()
{
read();
for(int i = 1; i <= n; i++) {
tot += r[i]-l[i]+1;
int L=lower_bound(z+1,z+cnt+1,l[i])-z, R=lower_bound(z+1,z+cnt+1,r[i]+1)-z;
add(bit1,L,-l[i]), add(bit1,R,r[i]+1);
add(bit2,L,1), add(bit2,R,-1);
//二分查找
int left = 1, right = 1e9;
while(left<right) {
int mid = (left+right)/2;
int q = upper_bound(z+1,z+cnt,mid)-z-1;
ll tmp = query(bit1, q)+query(bit2, q)*(mid+1);
if(tmp<(tot+1)/2) left = mid+1;
else right = mid;
}
cout<<left<<endl;
}
return 0;
}

有的地方没用long long 就WA了,在蕊芬学姐的指导下改过来了~

2019牛客暑期多校训练营(第七场)E-Find the median(思维+树状数组+离散化+二分)的更多相关文章

  1. 2019牛客暑期多校训练营(第九场)D-Knapsack Cryptosystem(思维+子集和)

    >传送门<题意:给你一个有n个元素的数组,一个sum,让你找到数组的子集使得子集元素和等于sum,保证只有一个解决方案. (其中1≤n≤36,0≤ sum<9*1018,0<a ...

  2. 2019牛客暑期多校训练营(第二场)J-Subarray(思维)

    >传送门< 前言 这题我前前后后看了三遍,每次都是把网上相关的博客和通过代码认真看了再思考,然并卵,最后终于第三遍也就是现在终于看懂了,其实懂了之后发现其实没有那么难,但是的的确确需要思维 ...

  3. 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)

    题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才 ...

  4. 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...

  5. 2019牛客暑期多校训练营(第一场) B Integration (数学)

    链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...

  6. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  7. 2019牛客暑期多校训练营(第二场)F.Partition problem

    链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...

  8. 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...

  9. [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem

    链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  10. 2019牛客暑期多校训练营(第一场)-A (单调栈)

    题目链接:https://ac.nowcoder.com/acm/contest/881/A 题意:给定两个长度均为n的数组a和b,求最大的p使得(a1,ap)和(b1,bp)等价,等价的定义为其任意 ...

随机推荐

  1. 【Java基础】Java 语言概述

    Java 语言概述 主要应用场景 JavaEE.大数据.Android 开发方向. 基础知识概述 编程语言核心结构 变量.基本语法.分支.循环.数组.- Java 面向对象的核心逻辑 OOP.封装.继 ...

  2. 【C++】《Effective C++》第九章

    杂项讨论 条款53:不要轻忽编译器的警告 请记住 严肃对待编译器发出的警告信息.努力在你的编译器的最高(最严苛)警告级别下争取"无任何警告"的容易. 不要过度依赖编译器的报警能力, ...

  3. show slave status常用参数备忘

    mysql> show slave status\G*************************** 1. row *************************** Slave_IO ...

  4. 【RAC】Oracle 10g RAC相关启停命令,维护命令

    Oracle10g RAC关闭及启动步骤   情况1:需要关闭DB(所有实例),OS及Server. a.首先停止Oracle10g环境 $ lsnrctl stop (每个节点上停止监听,也可以用s ...

  5. 【ORACLE】awr报告问题分析

    本文转自:http://www.linuxidc.com/Linux/2015-10/123959.htm 感谢分享 1.问题说明 运维人员都有"节日休假恐怖症",越到节日.休假和 ...

  6. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  7. window10系统安装

    准备工作: 一个U盘,大概8GB左右的存储,用于存放windows镜像文件与驱动精灵离线版网卡驱动以及相关的应用应用软件等. window10镜像文件(iso文件) 微PE工具软件 软件下载: 前提: ...

  8. webapi Swagger 配置 services.BuildServiceProvider() 报警 ASP0000 问题处理

    问题起源 网上的常见配置 Swagger 配置 在Startup类的 ConfigureServices 使用 services.BuildServiceProvider() ,其中有段代码如下: v ...

  9. 人工智能"眼睛"——摄像头

    摄像头机器视觉人工智能的"眼睛",其重要性在嵌入式领域不言而喻.但是如何理解和使用摄像头却是一个非常棘手的问题.本文主要针对调试摄像头过程中遇到的问题,对摄像头的基本原理及概述进行 ...

  10. The Garbage Collection Handbook

    The Garbage Collection Handbook The Garbage Collection Handbook http://gchandbook.org/editions.html ...