[TIOJ] 1410 Comiket
題目連結:http://tioj.ck.tp.edu.tw/problems/1410
很可惜這題式靜態的,又或者不是區間查詢的,如果是的話,就可以寫個刺激的BIT了或者練習其他資料結構了XD
反正就先離散化,然後掃過去,進入的時刻就加一、出去的話就減一,最後求前綴和就是那個時候的人數,有點無聊QQ
很可惜這題式靜態的,又或者不是區間查詢的,如果是的話,就可以寫個刺激的BIT了或者練習其他資料結構了XD
反正就先離散化,然後掃過去,進入的時刻就加一、出去的話就減一,最後求前綴和就是那個時候的人數,有點無聊QQ
#include<bits/stdc++.h> using namespace std; int t; class discretization{ private: vector<int> lisan,status; public: inline vector<int> com(vector<int> a) { status.resize(a.size()); lisan = a; sort(lisan.begin(),lisan.end()); lisan.resize(unique(lisan.begin(),lisan.end())-lisan.begin()); for(int i = 0; i < (int)a.size(); i++) status[i] = lower_bound(lisan.begin(),lisan.end(),a[i])-lisan.begin(); return status; } inline vector<int> model(vector<int> a) { lisan = a; sort(lisan.begin(),lisan.end()); lisan.resize(unique(lisan.begin(),lisan.end())-lisan.begin()); return lisan; } }lis; vector<pair<int,int> > loli; vector<int> he; int com[2000009]; int main() { cin >> t; while(t--) { int a,b; cin >> a >> b; loli.push_back({a,b}); he.push_back(a); he.push_back(b); } he = lis.model(he); for(int i = 0; i < loli.size(); i++) { com[lower_bound(he.begin(),he.end(),loli[i].first)-he.begin()]++; com[lower_bound(he.begin(),he.end(),loli[i].second)-he.begin()+1]--; } int ans = com[0]; for(int i = 1; i <= 2*loli.size(); i++) com[i] += com[i-1], ans= max(ans,com[i]); cout << ans << endl; }
留言
張貼留言