Codeforces 173E Camping Groups 線段樹

Camping Groups

我們先計算出, 每個點當leader所能掌控的最多人數。 然后我們把詢問離線, 丟到responsibility最大的那個地方去。

然后從大到小往線段樹里加人, 加入完之后處理掉當前的詢問。

?

如果強制在線的話就只能樹套樹啦。

#include<bits/stdc++.h>
#define LL long long
#define LD long double
#define ull unsigned long long
#define fi first
#define se second
#define mk make_pair
#define PLL pair<LL, LL>
#define PLI pair<LL, int>
#define PII pair<int, int>
#define SZ(x) ((int)x.size())
#define ALL(x) (x).begin(), (x).end()
#define fio ios::sync_with_stdio(false); cin.tie(0);using namespace std;const int N = 1e5 + 7;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + 7;
const double eps = 1e-8;
const double PI = acos(-1);template<class T, class S> inline void add(T& a, S b) {a += b; if(a >= mod) a -= mod;}
template<class T, class S> inline void sub(T& a, S b) {a -= b; if(a < 0) a += mod;}
template<class T, class S> inline bool chkmax(T& a, S b) {return a < b ? a = b, true : false;}
template<class T, class S> inline bool chkmin(T& a, S b) {return a > b ? a = b, true : false;}int n, k, q;
int a[N], r[N];
int c[N];int hsa[N], tota;
int hsr[N], totr;int ans[N];vector<PII> vc[N];
vector<pair<PII, int>> qus[N];struct Bit {int a[N];void modify(int x, int v) {for(int i = x; i < N; i += i & -i) a[i] += v;}int sum(int x) {int ans = 0;for(int i = x; i; i -= i & -i) ans += a[i];return ans;}int query(int L, int R) {if(L > R) return 0;return sum(R) - sum(L - 1);}
} bit;struct SegmentTree {
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1int mx[N << 2];inline void pull(int rt) {mx[rt] = max(mx[rt << 1], mx[rt << 1 | 1]);}void update(int L, int R, int val, int l, int r, int rt) {if(R < l || r < L || R < L) return;if(L <= l && r <= R) {chkmax(mx[rt], val);return;}int mid = l + r >> 1;update(L, R, val, lson);update(L, R, val, rson);pull(rt);}int query(int L, int R, int l, int r, int rt) {if(R < l || r < L || R < L) return 0;if(L <= l && r <= R) return mx[rt];int mid = l + r >> 1;return max(query(L, R, lson), query(L, R, rson));}
} Tree;int getPosa(int x) {return lower_bound(hsa + 1, hsa + 1 + tota, x) - hsa;
}
int getPosr(int x) {return lower_bound(hsr + 1, hsr + 1 + totr, x) - hsr;
}int main() {memset(ans, -1, sizeof(ans));scanf("%d%d", &n, &k);for(int i = 1; i <= n; i++) scanf("%d", &a[i]), hsa[++tota] = a[i];for(int i = 1; i <= n; i++) scanf("%d", &r[i]), hsr[++totr] = r[i];sort(hsa + 1, hsa + 1 + tota); tota = unique(hsa + 1, hsa + 1 + tota) - hsa - 1;sort(hsr + 1, hsr + 1 + totr); totr = unique(hsr + 1, hsr + 1 + totr) - hsr - 1;for(int i = 1; i <= n; i++) {vc[lower_bound(hsa + 1, hsa + 1 + tota, a[i]) - hsa].push_back(mk(r[i], 0));}for(int i = 1; i <= tota; i++) {for(auto& t : vc[i]) bit.modify(getPosr(t.fi), 1);for(auto& t : vc[i]) {t.se = bit.query(getPosr(t.fi - k), getPosr(t.fi + k + 1) - 1);}}scanf("%d", &q);for(int i = 1; i <= q; i++) {int x, y; scanf("%d%d", &x, &y);int maxa = max(a[x], a[y]);if(r[x] > r[y]) swap(x, y);qus[lower_bound(hsa + 1, hsa + 1 + tota, maxa) - hsa].push_back(mk(mk(r[y] - k, r[x] + k), i));}for(int i = tota; i >= 1; i--) {for(auto& t : vc[i]) Tree.update(getPosr(t.fi), getPosr(t.fi), t.se, 1, totr, 1);for(auto& q : qus[i]) ans[q.se] = Tree.query(getPosr(q.fi.fi), getPosr(q.fi.se + 1) - 1, 1, totr, 1);}for(int i = 1; i <= q; i++) printf("%d\n", ans[i] == 0 ? -1 : ans[i]);return 0;
}/*
*/

?

轉載于:https://www.cnblogs.com/CJLHY/p/10899452.html

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

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

相關文章

tomcat閃退解決方案

在這幾天&#xff0c;遇到一個Tomcat啟動閃退的問題&#xff0c;通過查閱各種資料&#xff0c;算是完美解決。在此分享給朋友們。 首先&#xff0c;確定你的問題在哪里 1.查詢錯誤&#xff1a;winR 輸入cmd&#xff0c;進入一般處理程序。通過cd 找到你Tomcat的bin文件夾&#…

《古劍奇譚2》詳細測評心得

期待已久的《古劍奇譚2》。仔仔細細的玩下來給我的感覺還是不錯的。燭龍也不愧是國產單機的良心公司了&#xff0c;回合制的戰斗方式改成了即時戰斗類。 的確&#xff0c;國產動作類的游戲經驗目前等于零。《古劍2》一改以往國產網游的作風跳出了回合制的圈子實屬不易&#xff…

LeetCode 581. 最短無序連續子數組(Shortest Unsorted Continuous Subarray)

581. 最短無序連續子數組581. Shortest Unsorted Continuous Subarray 題目描述 給定一個整型數組&#xff0c;你需要尋找一個連續的子數組&#xff0c;如果對這個子數組進行升序排序&#xff0c;那么整個數組都會變為升序排序。 你找到的子數組應是最短的&#xff0c;請輸出它…

NFS4文件鎖機制探秘

2019獨角獸企業重金招聘Python工程師標準>>> 簡介 NFS4實現“租賃鎖”。每個鎖擁有一樣的“租賃期”。客戶端的讀寫操作將刷新“租賃期”。租賃期到期后&#xff0c;鎖將被服務器釋放。NFS4通過下述“模型”實現對鎖的管理&#xff1a; 1) 清晰地劃分客戶端和服務器…

Stay Hungry Stay Foolish——網絡學習平臺分享

從1月24號回家也有一陣子了&#xff0c;今天已經是31號&#xff0c;這一個周的中心思想就是一個字&#xff0c;玩。 學生一但遠離學校&#xff0c;就會碰到許多學習的阻力&#xff0c;有來自外界的&#xff0c;家里有活要干&#xff0c;有親戚要訪&#xff0c;有同學邀約&…

linux_check

linux_check echo "********CPU****************" echo 總核數 物理CPU個數 X 每顆物理CPU的核數 echo " 總邏輯CPU數 物理CPU個數 X 每顆物理CPU的核數 X 超線程數"echo 查看物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| un…

Unity3D學習筆記之四完善Prefab并添加First Person Controller

好久沒學東西并用博客記錄了&#xff0c;這個年過的很懶散&#xff0c;慢慢臨近開學了&#xff0c;也要提前適應一下&#xff0c;寫寫東西&#xff0c;這樣開學才能更好的進入狀態呀&#xff5e;&#xff5e;本次筆記中&#xff0c;我們將來雕琢一個更加完善的Prefab&#xff0…

高精度(壓位+判負數+加減乘+讀寫)

本算法目前屬于還處于測試狀態&#xff0c;歡迎Hack&#xff01; struct gj{bool fu; //是否是負數int tt,mod; //高精的長度int s[40005]; //壓位用的數組inline gj(){ //整體初始化fu0; tt0; mod1e9;memset(s,0,sizeof(s));}inline gj read(){ register char ch; //高精度讀…

Hadoop從安裝Linux到搭建集群環境

簡介與環境準備  hadoop的核心是分布式文件系統HDFS以及批處理計算MapReduce。近年&#xff0c;隨著大數據、云計算、物聯網的興起&#xff0c;也極大的吸引了我的興趣&#xff0c;看了網上很多文章&#xff0c;感覺還是云里霧里&#xff0c;很多不必要的配置都在入門教程出現…

git推送本地分支到遠程分支

場景 有時候我們開發需要開一個分支,這樣可以有效的并行開發. 開分支有兩種方式: 一種是在遠程開好分支,本地直接拉下來;一種是本地開好分支,推送到遠程.遠程先開好分支然后拉到本地 git checkout -b feature-branch origin/feature-branch //檢出遠程的feature-branch分支到…

delphi 函數內創建對象 釋放_JavaScript 的函數底層運行機制

▲ 點擊上方藍字關注我 ▲文 / 景朝霞來源公號 / 朝霞的光影筆記ID / zhaoxiajingjing圖 / 自己畫目錄0 / 題(1)第一題(2)第二題1 / 引用數據類型&#xff1a;object2 / 引用數據類型&#xff1a;function(1)第二題&#xff0c;簡圖(2)創建函數(3)執行函數(4)閉包3 / 練習題(1)…

Unity3D學習筆記之五為Prefab添加材質

本次筆記中&#xff0c;我們將利用unity來創建并使用材質&#xff0c;把材質添加到我們的Prefab中去。這一系列教程以及素材均參考自人人素材翻譯組出品的翻譯教程《Unity游戲引擎的基礎入門視頻教程》&#xff0c;下載鏈接附在第二篇學習筆記中。繼續上次筆記中所記錄的東西&a…

分布式版本控制系統之Git

Git Git 是目前世界上最先進的分布式版本控制系統&#xff08;沒有之一&#xff09;作用 源代碼管理為什么要進行源代碼管理? 方便多人協同開發方便版本控制Git的誕生 作者是 Linux 之父&#xff1a;Linus Benedict Torvalds當初開發 Git 僅僅是為了輔助 Linux 內核的開發&…

oo第三次博客-JML規格

這三周的作業主要是圍繞以JML來約束代碼開發&#xff0c;以確保程序的正確性與魯棒性。 Part 1&#xff1a;三次作業的實現與bug 第一次作業沒有任何算法和數據結構上的難度&#xff0c;對于Path和PathContainer的各個方法的實現按照給出的規格復讀即可。唯一的難點&#xff08…

Kinect開發筆記之一Kinect詳細介紹

畢業設計的課題我選擇了結合Kinect和Unity3D開發體感游戲&#xff0c;這是我十分感興趣的一個課題&#xff0c;所以做好當然責無旁貸。準備再寫一系列Kinect的學習筆記&#xff0c;記錄自己畢設一步一個腳印的歷程。1、Kinect背景介紹眾所周知&#xff0c;Kinect是一款集成了很…

獲取2個地址之間的距離(高德API)

2019獨角獸企業重金招聘Python工程師標準>>> string startLonLat SiteHelper.GetLonLat("大連"); //獲取起始地經度緯度 string endLonLat SiteHelper.GetLonLat("沈陽"); //獲取目的地經度緯度 int distance SiteHelper.GetDistance(star…

WPF屬性學習

一.WPF屬性系統 CLR屬性 .NET中的屬性稱為CLR屬性 轉載于:https://www.cnblogs.com/programme-maker/p/10910166.html

chemdraw怎么連接兩個結構_利用神經結構搜索構建快速準確輕量級的超分辨率網絡...

介紹我們知道&#xff0c;把神經網絡拆解&#xff0c;可以把它歸結為幾個元素的排列組合而成&#xff0c;例如&#xff0c;以卷積神經網絡為例&#xff0c;其主要由卷積層&#xff0c;池化層&#xff0c;殘差連接&#xff0c;注意力層&#xff0c;全連接層等組成&#xff0c;如…

Unity3D學習筆記之六創建更多的Prefab

在寫完第五篇后&#xff0c;因為不知名的原因&#xff0c;我突然不能夠上傳100KB以上的圖片在博客中了。等了幾天還是這樣&#xff0c;所以我用PS把圖片的分辨率一張張調低&#xff0c;讓圖片的大小都在100左右&#xff0c;將積攢了四篇的學習筆記一起發上來&#xff0c;也算彌…

iOS底層探索(二) - 寫給小白看的Clang編譯過程原理

iOS底層探索(一) - 從零開始認識Clang與LLVM 寫在前面 編譯器是屬于底層知識&#xff0c;在日常開發中少有涉及&#xff0c;但在我的印象中&#xff0c;越接近底層是越需要編程基本功&#xff0c;也是越復雜的。但要想提升技術卻始終繞不開要對底層原理的探究&#xff0c;很多資…