pojBuy Tickets2828線段樹或者樹狀數組(隊列中倒序插隊)

 
這題開始的思路就是模擬:就像數組中插點一樣,每一個想買票的人都想往前插隊!
但是這樣的話肯定TLE, 看了別人的思路之后才恍然大悟!
正解:將開始的正序插入,變成倒序插入,這樣的話,想一想:第 i 個人想要插在 p[i]的位置上,那么就要保證所插入的位置之前一定要有 p[i]-1個空位!因為一定會有p[j]<p[i](0<=p[j]<=j,每個人都想往前插隊) 的第j個人插在p[i]的位置的前邊! 如果i<j; && p[i]==p[j], 倒序插入中,第j個人先插入, 那么第i個人在保證插入的位置之前有p[i]-1個空位的同時,又要插入到第 j 個人的后邊! 
 

?



1
#include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #define M 200005 6 using namespace std; 7 8 pair<int, int>per[M]; 9 int ret[M]; 10 int tree[M*4]; 11 int n; 12 13 void buildT(int p, int ld, int rd){ 14 if(ld==rd){ 15 tree[p]=1; 16 return ; 17 } 18 int mid=(ld+rd)>>1; 19 buildT(p<<1, ld, mid); 20 buildT(p<<1|1, mid+1, rd); 21 tree[p]=tree[p<<1]+tree[p<<1|1]; 22 } 23 24 void updateT(int p, int ld, int rd, int pos, int val){ 25 if(ld==rd){ 26 tree[p]=0; 27 ret[ld]=val; 28 return ; 29 } 30 int mid=(ld+rd)>>1; 31 if(tree[p<<1]>pos) 32 updateT(p<<1, ld, mid, pos, val); 33 else 34 updateT(p<<1|1, mid+1, rd, pos-tree[p<<1], val); 35 36 tree[p]=tree[p<<1]+tree[p<<1|1]; 37 } 38 39 int main(){ 40 int i; 41 while(scanf("%d", &n)!=EOF){ 42 buildT(1, 1, n); 43 for(i=1; i<=n; ++i) 44 scanf("%d%d", &per[i].first, &per[i].second); 45 for(i=n; i>=1; --i) 46 updateT(1, 1, n, per[i].first, per[i].second); 47 48 printf("%d", ret[1]); 49 for(i=2; i<=n; ++i) 50 printf(" %d", ret[i]); 51 printf("\n"); 52 } 53 return 0; 54 }

?

 1 //樹狀數組~~不解釋
 2 #include<iostream>
 3 #include<cstring>
 4 #include<cstdio>
 5 #include<algorithm>
 6 
 7 #define N 200005
 8 using namespace std;
 9 
10 int tree[N];
11 int pos[N], val[N];
12 int ret[N];
13 int n;
14 
15 int lowbit(int x){
16     return x&(-x);
17 }
18 
19 void buildT(){
20     for(int i=1; i<=n; ++i){
21         tree[i]=0;
22         for(int j=i-lowbit(i)+1; j<=i; ++j)
23             tree[i]+=1;
24     }
25 }
26 
27 void updateT(int x){
28     while(x<=n){
29         tree[x]-=1;
30         x+=lowbit(x);
31     }
32 }
33 
34 int getSum(int x){
35     int s=0;
36     while(x>0){
37         s+=tree[x];
38         x-=lowbit(x);    
39     }
40     return s;
41 }
42 
43 int main(){
44     while(scanf("%d", &n)!=EOF){
45         buildT(); 
46         for(int i=1; i<=n; ++i){
47             scanf("%d%d", &pos[i], &val[i]);
48             ret[i]=-1;
49         }
50         for(int i=n; i>=1; --i){
51             int ld=1, rd=n;
52             bool flag=false;
53             while(ld<=rd){
54                 int mid=(ld+rd)>>1;
55                 int s=getSum(mid);
56                 //如果當前的位置沒有人插入并且該位置的之前的人數恰好為pos[i] 
57                 if(ret[mid]==-1 && s==pos[i]+1){ 
58                     updateT(mid);
59                     ret[mid]=val[i];
60                     flag=true;//已經找到不用在繼續尋找了 
61                     break;
62                 }
63                 else if(s>=pos[i]+1)
64                     rd=mid-1;
65                 else ld=mid+1;
66             }
67             if(!flag) ret[rd+1]=val[i];//直到找到當前的位置沒有人插入并且該位置的之前的人數恰好為pos[i]  
68         }
69         printf("%d", ret[1]);
70         for(int i=2; i<=n; ++i)
71              printf(" %d", ret[i]);
72         printf("\n"); 
73     } 
74     return 0; 
75 }

?

轉載于:https://www.cnblogs.com/hujunzheng/p/3885134.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531830.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531830.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531830.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

減去字符串_從文本字符串中提取指定值的6個超級技巧解讀

在實際的工作中&#xff0c;從指定的字符串中提取指定文本也是常用的技巧之一&#xff0c;除了手動操作之外&#xff0c;下文的8種應用技巧也是必須要掌握的。一、Left函數法。功能&#xff1a;從指定文本字符串的第一個字符開始&#xff0c;提取指定長度的字符串。語法結構&am…

如果用計算機錄制歌曲需要,網絡歌手怎么用電腦錄音軟件錄歌

現在網上有很多網絡歌手主要分為兩類&#xff0c;一類是原創&#xff0c;一類是翻唱。可是不管是原創還是翻唱都需要自己唱歌錄歌&#xff0c;要有屬于自己的歌曲(自己唱的)。要錄歌就要有設備&#xff0c;畢竟網路歌手剛開始大多數都是草根沒有錢找音樂工作室&#xff0c;只能…

中國剩余定理證明過程

原網址&#xff1a;http://blog.csdn.net/wtq493841534/article/details/5452720 中國剩余定理 中國剩余定理可以描述為&#xff1a; 若某數x分別被d1、、…、dn除得的余數為r1、r2、…、rn&#xff0c;則可表示為下式&#xff1a;xR1r1R2r2…RnrnRD其中R1是d2、d3、…、dn的公…

關閉瀏覽器前提示_win7系統ie總彈出查看和跟蹤下載的關閉方法

今天小編給大家分享的是win7系統ie總彈出查看和跟蹤下載的關閉方法&#xff0c;使用ie瀏覽器上網的時候&#xff0c;有些用戶會遇到ie總彈出查看和跟蹤下載的窗口&#xff0c;很多用戶想關閉掉此提示&#xff0c;卻不知如何關閉查看和跟蹤下載的窗口&#xff0c;那么請參照以下…

html引入百度地圖報錯,vue引入百度地圖BMapGL,或者其他個性化地圖

3.jpgvue的百度地圖早就有vue-baidu-map這里就不贅述了&#xff0c;自己去直接對著API寫就好了&#xff0c;基本上已經滿足絕大多數需求了還簡單方便。vue-baidu-map 傳送門 https://dafrok.github.io/vue-baidu-map/#/zh/index這里主要是在vue里面引入BMapGL&#xff0c;或者其…

Sort the Array

1 /*2 思路&#xff1a; 3 找到單調下降串的起始位置[l, r]4 如果左邊 0...l-1中的最大值 > l...r中的最小值 或者5 r1...n中的最小值 < l...r中的最大值 都是不能實現排序的&#xff01; 6 */7 #include<iostream>8 #include<cstdio>9 #include…

排序千萬級數據_從千萬級房產成交量排名,窺探中國城市的真實家底

原標題&#xff1a;從千萬級房產成交量排名&#xff0c;窺探中國城市的真實家底 文&#xff0f;孫不熟 來源/城市戰爭 如果你有1000萬以上的買房預算&#xff0c;你的選擇其實很少&#xff0c;總共不超過10個城市&#xff0c;這就是中國城市和樓市的真實家底。 昨天推送了一篇《…

html 實現列表組并排,列表組--自定義列表組

Bootstrap框加在鏈接列表組的基礎上新增了兩個樣式&#xff1a;?list-group-item-heading&#xff1a;用來定義列表項頭部樣式?list-group-item-text&#xff1a;用來定義列表項主要內容這兩個樣式最大的作用就是用來幫助開發者可以自定義列表項里的內容&#xff0c;如下面的…

poj1006生理周期(中國剩余定理)

1 /*2 中國剩余定理可以描述為&#xff1a;3 若某數x分別被d1、、…、dn除得的余數為r1、r2、…、rn&#xff0c;則可表示為下式&#xff1a;4 xR1r1R2r2…RnrnRD5 其中R1是d2、d3、…、dn的公倍數&#xff0c;而且被d1除&#xff0c;余數為1&#xff1b;&#xff08;稱為R1相對…

queryselectorall 怎么取name_用這個方法,我爬取了《王者榮耀》《英雄聯盟》等游戲皮膚圖片...

本文簡介&#xff1a;本文使用Python制作爬蟲&#xff0c;來爬取《英雄聯盟》《王者榮耀》《神之浩劫》等游戲官方網站的英雄皮膚圖片。可以作為新手爬蟲的練手實戰案例&#xff01;&#xff01;愛打游戲的各位肯定也是對游戲里面制作精美&#xff0c;嫵媚無比或是帥氣逼人的皮…

云端計算機可以玩游戲么,手機掌上云電腦是什么?為什么可以玩PC游戲?

原標題&#xff1a;手機掌上云電腦是什么&#xff1f;為什么可以玩PC游戲&#xff1f;經常會在一些短視頻平臺上看到別人用云電腦的應用在手機上玩PC游戲&#xff0c;那么這個掌上云電腦的應用到底是什么呢&#xff1f;為什么可以玩PC游戲呢&#xff1f;按照以往的理解&#xf…

codeforces——Little Pony and Sort by Shift

1 /*2 題目大意&#xff1a;給你一個序列&#xff0c;不斷地將最后邊的數值移動到最前邊&#xff0c;問最少經過多少次可以變成一個單調遞增的序列&#xff01; 3 如果不能則輸出-1。 4 如果該序列按照不斷從后向前移動排序成功&#xff0c;那么該序列要么只有一個單調遞增的…

用python玩轉數據慕課答案第三周_大學慕課用Python玩轉數據答案公眾號

抹灰用石灰膏的熟化時間不少于多少天&#xff1f;16只兔子&#xff0c;分別裝在5個籠子里&#xff0c;每個籠子里的小兔子只數都不相等&#xff0c;籠子里最不可能出現的只數是( )。患者&#xff0c;女&#xff0c;44歲。患心肌梗死住院治療&#xff0c;首次靜脈泵入硝酸甘油時…

計算機組策略怎么設置遠程桌面,組策略 之 ? 自動啟用客戶端遠程桌面功能

在企業里進行管理的時候&#xff0c;有時需要利用遠程桌面來管理客戶端計算機&#xff0c;在一般情況下&#xff0c;往往需要客戶端啟用此功能&#xff0c;有沒有好的辦法&#xff0c;讓客戶端自動啟用呢&#xff1f;當然可以&#xff0c;我們可以通過組策略的形式來完成。實施…

codeforces——Little Pony and Expected Maximum

1 /*2 我們枚舉每次選擇最大數值的情況&#xff1a;m個數&#xff0c; 投擲n次3 最大值是1&#xff1a; 1種4 2&#xff1a; 2^n-15 3: 3^n-2^n6 .....7 m: m^n-(m-1)^n8 9 所以最后的結果sum((k/m)^n …

華北水利水電大學c語言程序設計四_我校代表隊在“中國高等計算機大賽——團體程序設計天梯賽” 中喜獲佳績...

近日&#xff0c;第四屆“中國高校計算機大賽——團體程序設計天梯賽”全國總決賽獲獎名單公布&#xff0c;我校以全國高校排名第84位&#xff0c;河南省高校第4名的成績獲得河南省高校二等獎。我校派出的“NCWU_面壁者”&#xff0c;“NCWU_彈星者”和“NCWU_執劍人”三支隊伍…

計算機控制基礎知識,最新 分析計算機控制系統及其運算基礎知識-精品

分析計算機控制系統及其運算基礎知識系統程序層的工作基礎建立在控制系統改造和擴充過的機器&#xff0c;下文就是關于控制系統及其運算基礎知識論文。隨著技術的飛進發展&#xff0c;計算機控制系統及其操作過程的運算程序研究已成為一個熱門話題&#xff0c;本文主要對計算機…

當我不再依賴你的時候說說_不要依賴任何人說說 不要指望別人的經典話

1、靜下心慢慢變得沉穩&#xff0c;不再依賴任何人&#xff0c; 珍惜身邊人 &#xff0c;不強求不勉強每天都要很開心。2、的確沒什么人可以陪你一輩子&#xff0c;所以在那些難熬的日子過去之后&#xff0c;將會不再依賴任何人成長。3、自己一個人走在路上&#xff0c;才發現依…

Uvaoj 11624 - Fire!

1 /*************************************************************************2 > File Name: test.cpp3 > Author: HJZ4 > Mail: 2570230521qq.com 5 > Created Time: 2014年08月03日 星期日 07時26分58秒6 ********************************…

android 版本更新工具類_報表分析工具FastReport .Net 2021年超大版本更新,實現了對.NET 5的支持...

在FastReport .NET 2021.1的新版本中&#xff0c;我們實現了對.NET 5的支持。添加了新條形碼-Deutsce Post Leitcode。將RTF轉換為報告對象的算法已得到顯著改進。并且還添加了用于轉換數字的新功能。歡迎下載體驗。&#xff08;點擊下方按鈕下載&#xff09;立即點擊下載FastR…