我們定義乙個不正常數列
f[1]=1
f[i]=(a*m+b*i+c) mod (1e9+7)
其中,m是指數列 的中位數
如果數列一共有偶數項,那麼我們定義較小的那個為他的中位數
對於給定的a,b,c和n,求數列f[i]之和
一句話題意:實時更新數列並查詢數列中位數
很顯然,我們可以用兩個堆,儲存這個數列的前半部分和後半部分
這兩個堆的堆頂就是中位數了(具體是哪個堆的堆頂要分情況)
但這樣時間複雜度不優秀,優化的方法如下:
在兩個堆之間連乙個陣列,作為「緩衝區」
那麼每次加入新數的時候,有可能只是數字在緩衝區上移動
並不涉及堆的操作,就可以優化時間複雜度
堆可以使用優先佇列實現
**:#include#define mod 1000000007
#define size1 q1.size()
#define size2 q2.size()
#define ll long long
using namespace std;
ll a,b,c,n,mid,ans;
ll f[2000005];
priority_queueq1;//前面一半的數
priority_queue,greater> q2;//後面一半的數
templateinline void read(t &res)
void insert(ll x)
else if(size1考試的時候wa了7個點,因為答案 \(ans\) 並沒有要求取模
毒瘤出題人。。。
20190925機房測試 不正常國家
有乙個長相驚奇的國家.可以猜到,這個國家有n個城市,每個城市之間有且僅有一條通路 可以猜到,這個國家是長在樹上的 可以猜到,首都是1號節點 可以猜到,每個城市管轄他子樹中的所有城市 可以猜到,每個城市有乙個權值a 兩個城市通訊難度為兩城市路徑異或和 可以猜到,乙個城市的繁忙度定義為它所管轄的城市中通...
20190925機房測試 不正常團夥
有n個人站成一行,每個人有乙個魅力值 相同魅力值的人會形成乙個團夥,定義乙個團夥正常當且僅當團夥人數為2 你的任務是回答m個詢問,每次詢問乙個區間 lr 你需要回答這個區間中所有人各自結成團夥後,處於不正常團夥中的人的魅力值之和一句話題意 區間查詢出現次數不為2的所有數字之和 一看到區間查詢出現次數...
串列埠通訊不正常
筆者在 網淘的一塊 轉串列埠模組,才幾元人民幣。看外觀好像質量還不錯,另外傳輸線纜還帶遮蔽。但是拆開模組,發現使用的是繫結的 大約是為了節省生產成本的原因吧,當然繫結 在質量上常規情況下,要比塑料或陶瓷封閉材料的 差。筆者的模組用於arm linux開發,但是經常遇到乙個情況 正常啟動bootloa...