POJ2828 Buy Ticket

傳送門

題目大意:給一段空序列,每次向序列中某一個位置插入一個數,插入的位置后面所有數相應后移。

這個題比較令人頭疼的是后移操作,我們不可能大面積后移。那怎么辦呢?后面的人對前面有影響,那我們能不能通過離線方法,使得它變成沒有影響的狀態?

可以的。我們可以把輸入離線,然后倒著插入。這樣的話,這個數的pos在哪,他應該對應插入在第pos個空格的位置。注意本題序號從0開始,要加一。

這樣就豁然開朗啦!!真是神奇的操作!

看一下代碼。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>
#include<cstring>
#include<utility>
#include<map>
#define pr pair<int,int>
#define mp make_pair
#define fi first
#define sc second
#define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define enter putchar('\n')
using namespace std;
typedef long long ll;
const int M = 200005;
const int N = 10000005;int read()
{int ans = 0,op = 1;char ch = getchar();while(ch < '0' || ch > '9'){if(ch == '-') op = -1;ch = getchar();}while(ch >='0' && ch <= '9'){ans *= 10;ans += ch - '0';ch = getchar();}return ans * op;
}struct node
{int id,val;
}q[M];int n,sum[M<<2],a[M];void clear()
{memset(q,0,sizeof(q));memset(sum,0,sizeof(sum));
}void build(int p,int l,int r)
{if(l == r){sum[p] = 1;return;}int mid = (l+r) >> 1;build(p<<1,l,mid),build(p<<1|1,mid+1,r);sum[p] = sum[p<<1] + sum[p<<1|1];
}void modify(int p,int l,int r,int pos,int val)
{if(l == r){a[l] = val,sum[p]--;return;}int mid = (l+r) >> 1;if(sum[p<<1] >= pos) modify(p<<1,l,mid,pos,val);else modify(p<<1|1,mid+1,r,pos-sum[p<<1],val);sum[p] = sum[p<<1] + sum[p<<1|1];
}int main()
{while(scanf("%d",&n) != EOF){build(1,1,n);rep(i,1,n) q[i].id = read() + 1,q[i].val = read();per(i,n,1) modify(1,1,n,q[i].id,q[i].val);rep(i,1,n) printf("%d ",a[i]);enter;}return 0;
}

?

轉載于:https://www.cnblogs.com/captain1/p/9795207.html

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

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

相關文章

vue從入門到精通之進階篇(四)模塊化工具 webpack

模塊化 webpack命令 npm init -y npm install webpack3.6.0 --save-dev --registry https://registry.npm.taobao.orgpackage.json文件 "scripts": { "test": "webpack ./main.js ./build.js" },命令行運行 npm run test ES6模塊 導入和導出只…

微觀經濟學

chapter1 導論 學經濟學有啥用&#xff1f;找工作有用嗎&#xff1f;沒有用&#xff0c;但是當你失業的時候你就知道為什么了。為什么會有經濟學&#xff1f;資源的稀缺性導致的問題&#xff01; 1.1.稀缺性 既定的資源無法滿足人們的欲望。稀缺性存在于任何地方&#xff0c;產…

樹結構

https://baike.baidu.com/item/%E6%A0%91%E7%BB%93%E6%9E%84/3399688?fraladdin

C#事務提交

using (System.Transactions.TransactionScope transcope new System.Transactions.TransactionScope()) { //code something transcope.Complete(); }轉載于:https://www.cnblogs.com/WuHZ/p/9797373.html

vue從入門到精通之進階篇(五)腳手架vue-cli

vue-cli2.x腳手架的使用 參考鏈接&#xff1a;https://github.com/vuejs/vue-cli/tree/v2#vue-cli-- 安裝&#xff1a; npm install -g vue-cli用法&#xff1a; $ vue init < template-name > < project-name >例&#xff1a; $ vue init webpack my-projec…

ES6 數值的擴展

ES6 規范了二進制和八進制的表示方法&#xff0c;代碼如下&#xff1a; console.log(0o2000 1024) //true 使用0o表示八進制 0是數字0 o是小寫字母oconsole.log(0b10000000000 1024) //true 使用0b表示二進制 0是數字…

樹的定義

https://www.cnblogs.com/jpfss/p/10842521.html

【Java】 劍指offer(27) 二叉樹的鏡像

本文參考自《劍指offer》一書&#xff0c;代碼采用Java語言。 更多&#xff1a;《劍指Offer》Java實現合集 題目  請完成一個函數&#xff0c;輸入一個二叉樹&#xff0c;該函數輸出它的鏡像。 思路 畫圖可以很清晰地得到思路&#xff1a;先前序遍歷&#xff0c;對每個結點交…

vue從入門到精通之進階篇(一)vue-router:導航守衛

vue-router的導航守衛之在導航完成后獲取數據 需求&#xff1a;在導航完成之后加載數據。渲染DOM <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title></title> </head> <body><di…

Unity 新手入門 如何理解協程 IEnumerator yield

Unity 新手入門 如何理解協程 IEnumerator 本文包含兩個部分&#xff0c;前半部分是通俗解釋一下Unity中的協程&#xff0c;后半部分講講C#的IEnumerator迭代器 協程是什么&#xff0c;能干什么&#xff1f; 為了能通俗的解釋&#xff0c;我們先用一個簡單的例子來看看協程可以…

百萬級數據庫優化方案

一、百萬級數據庫優化方案 1.對查詢進行優化&#xff0c;要盡量避免全表掃描&#xff0c;首先應考慮在 where 及 order by 涉及的列上建立索引。 2.應盡量避免在 where 子句中對字段進行 null 值判斷&#xff0c;否則將導致引擎放棄使用索引而進行全表掃描&#xff0c;如&#…

vue從入門到精通之進階篇(二)組件通信:兄弟組件通信

$emit和$on進行組件之間的傳值 注意&#xff1a;emit和emit和emit和on的事件必須在一個公共的實例上&#xff0c;才能夠觸發 需求&#xff1a; ? 1.有A&#xff0c;B&#xff0c;C三個組件&#xff0c;同時掛載到入口組件中 ? 2.將A組件中的數據傳遞到C組件&#xff0c;再將…

樹結構的性質

非空樹的結點總數等于樹種所有結點的度之和加 1度為 K 的非空樹的第 i 層最多有 ki-1 個結點(i > 1)深度為 h 的 k 叉樹最多有(kh - 1)/(k - 1)個結點具有 n 個結點的 k 叉樹的最小深度為 logk(n(k-1)1))

EM算法 小結

猴子吃果凍 博客園首頁新隨筆聯系管理訂閱隨筆- 35 文章- 0 評論- 3 4-EM算法原理及利用EM求解GMM參數過程 1.極大似然估計 原理&#xff1a;假設在一個罐子中放著許多白球和黑球&#xff0c;并假定已經知道兩種球的數目之比為1:3但是不知道那種顏色的球多。如果用放回抽樣方…

Vue UI 框架對比 element VS iview

element VS iview (最近項目UI框架在選型 &#xff0c;做了個分析&#xff0c; 不帶有任何利益相關&#xff09; 主要從以下幾個方面來做對比 使用率&#xff08;npm 平均下載頻率&#xff0c;組件數量&#xff0c;star, issue…) API風格 打包優化 與設計師友好性 1&a…

SPSS-回歸分析

回歸分析&#xff08;一元線性回歸分析、多元線性回歸分析、非線性回歸分析、曲線估計、時間序列的曲線估計、含虛擬自變量的回歸分析以及邏輯回歸分析&#xff09; 回歸分析中&#xff0c;一般首先繪制自變量和因變量間的散點圖&#xff0c;然后通過數據在散點圖中的分布特點選…

Python教程:Python中的for 語句

Python 中的 for 語句與你在 C 或 Pascal 中可能用到的有所不同。 Python教程 中的 for 語句并不總是對算術遞增的數值進行迭代&#xff08;如同 Pascal&#xff09;&#xff0c;或是給予用戶定義迭代步驟和暫停條件的能力&#xff08;如同 C&#xff09;&#xff0c;而是對任意…

二叉樹的基本性質及證明

性質1&#xff1a;一棵非空二叉樹的第i層上最多有2^(i-1)個結點&#xff0c;&#xff08;i>1&#xff09;。 性質2&#xff1a;一棵深度為k的二叉樹中&#xff0c;最多具有2^k-1個結點&#xff0c;最少有k個結點。 性質3&#xff1a;對于一棵非空的二叉樹&#xff0c;度為…

ACM10.14題解

ACM10.14題解 第一次打周賽&#xff0c;感覺還是比較緊張的&#xff0c;應該開完所有的題再做&#xff0c;而不是硬做&#xff0c;沒必要硬杠英語&#xff0c;還是不要抱有僥幸心理&#xff0c;做對一定是完全理解且會&#xff0c;自己小心邊界問題&#xff0c;不要瞎交。 A&am…

vscode: Visual Studio Code 常用快捷鍵

原文章地址&#xff1a; vscode: Visual Studio Code 常用快捷鍵 官方快捷鍵說明&#xff1a;Key Bindings for Visual Studio Code 主命令框 F1 或 CtrlShiftP: 打開命令面板。在打開的輸入框內&#xff0c;可以輸入任何命令&#xff0c;例如&#xff1a; 按一下 Backspace…