2019诺阃洌客第七場E題 (Find the median) 思維

題意:給n個(gè)操作扇调,每次L_iR_i (1e9范圍內(nèi))即往數(shù)組里面插所有x \in [L_i,R_i] 的所有數(shù),求每次操作后的中位數(shù)

題解:區(qū)間離散化然后二分答案抢肛,因?yàn)樾∮谥形粩?shù)的數(shù)字恰好有tot/2個(gè)狼钮,這顯然具有單調(diào)性。那么問題就轉(zhuǎn)化為如何求小于等于某個(gè)數(shù)x的數(shù)一共有多少個(gè)捡絮。

考慮以下兩種情況:假設(shè)左端點(diǎn)小于等于x的區(qū)間一共有q個(gè)

  • 如果x不落在任何一個(gè)區(qū)間熬芜,那么答案顯然是\sum_{i=1}^q (R_i-L_i+1)
  • 否則假設(shè)x同時(shí)落在m個(gè)區(qū)間中,答案是\sum_{i=1}^{q-m}(R_i-L_i+1)+\sum_{i=q-m+1}^q (x+1-L_i)

做一點(diǎn)點(diǎn)數(shù)學(xué)上的變換:令N_i=R_i+1

  • \sum_{i=1}^q (R_i-L_i+1)=\sum_{N_i\le x}N_i-\sum_{L_i\le x}L_i
  • \sum_{i=1}^{q-m}(R_i-L_i+1)+\sum_{i=q-m+1}^q (x+1-L_i)=\sum_{N_i\le x}N_i-\sum_{L_i\le x}L_i+m(x+1)

注意到在第一種情況下m=0福稳,所以我們就成功歸約到只有一種情況涎拉。對(duì)區(qū)間的左右端點(diǎn)離散化,用兩個(gè)樹狀數(shù)組分別維護(hù)N_i,L_i 的前綴和和m以后的圆,我們就能夠O(\log N)地判斷一個(gè)解是否可行曼库。總復(fù)雜度O(N\log N\log M) 略板,M是因?yàn)槿≈捣秶?e9

#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
const int maxn = 400010;
const int N = maxn << 2;
int n,x[maxn],y[maxn],l[maxn],r[maxn];
int a1,b1,c1,a2,b2,c2,m1,m2;
int z[N];

class Fenwick_tree{
private:
    inline int lowbit(int x) { return x & (-x); }
    int bit[N];
public:

    void add(int x,int v){
        for (; x < N;x+=lowbit(x)){
            bit[x] += v;
        }
    }

    int query(int x){
        int res = 0;
        for (; x;x-=lowbit(x)){
            res += bit[x];
        }
        return res;
    }
};
Fenwick_tree bit1,bit2;

int32_t main(){
    int tot=0,cnt=0;
    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;
    for(int i=1;i<=n;i++){
        tot+=r[i]-l[i]+1;
        int L=lower_bound(z+1,z+cnt,l[i])-z;
        int R=lower_bound(z+1,z+cnt,r[i]+1)-z;
        bit1.add(L,-l[i]);
        bit1.add(R,r[i]+1);
        bit2.add(L,1);
        bit2.add(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;
            int tmp=bit1.query(q)+bit2.query(q)*(mid+1);
            if(tmp<(tot+1)/2){
                left=mid+1;
            }
            else{
                right=mid;
            }
        }
        cout<<left<<endl;
    }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毁枯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叮称,更是在濱河造成了極大的恐慌种玛,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓤檐,死亡現(xiàn)場離奇詭異赂韵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)挠蛉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門祭示,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谴古,你說我怎么就攤上這事质涛。” “怎么了掰担?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵汇陆,是天一觀的道長。 經(jīng)常有香客問我带饱,道長毡代,這世上最難降的妖魔是什么阅羹? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮教寂,結(jié)果婚禮上捏鱼,老公的妹妹穿的比我還像新娘。我一直安慰自己酪耕,他們只是感情好导梆,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著因妇,像睡著了一般问潭。 火紅的嫁衣襯著肌膚如雪猿诸。 梳的紋絲不亂的頭發(fā)上婚被,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音梳虽,去河邊找鬼址芯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窜觉,可吹牛的內(nèi)容都是我干的谷炸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼禀挫,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼旬陡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起语婴,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤描孟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后砰左,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匿醒,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年缠导,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了廉羔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡僻造,死狀恐怖憋他,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情髓削,我是刑警寧澤举瑰,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站蔬螟,受9級(jí)特大地震影響此迅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一耸序、第九天 我趴在偏房一處隱蔽的房頂上張望忍些。 院中可真熱鬧,春花似錦坎怪、人聲如沸罢坝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嘁酿。三九已至,卻和暖如春男应,著一層夾襖步出監(jiān)牢的瞬間闹司,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來泰國打工沐飘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留游桩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓耐朴,卻偏偏與公主長得像借卧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子筛峭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,333評(píng)論 0 2
  • 按照用途分類出以下統(tǒng)計(jì)函數(shù): AVEDEV 用途:返回一組數(shù)據(jù)與其平均值的絕對(duì)偏差的平均值铐刘,該函數(shù)可以評(píng)測(cè)數(shù)據(jù)(例...
    四方院祭司閱讀 2,884評(píng)論 0 3
  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊(cè) 首頁 最新文章 IT 職場 前端 后端 移動(dòng)端 數(shù)據(jù)庫 運(yùn)維 其他...
    Helen_Cat閱讀 3,845評(píng)論 1 10
  • 1、用C語言實(shí)現(xiàn)一個(gè)revert函數(shù)影晓,它的功能是將輸入的字符串在原串上倒序后返回镰吵。 2、用C語言實(shí)現(xiàn)函數(shù)void ...
    希崽家的小哲閱讀 6,253評(píng)論 0 12
  • 伴著清冷的月光和五彩繽紛的燈光俯艰,走在回家的路上捡遍。看著匆匆而過的人們竹握,帶著滿身的疲憊又似乎帶著對(duì)家的急切画株。突然覺得,...
    chihong_d26d閱讀 134評(píng)論 0 3