/*
掃瞄線 事件點
0集合(描述了每一種咖啡的溫度區間):(l,r) l:+1 r+1:-1
1集合(描述了每乙個查詢區間): (l,r) l: +i r+1:-i
top記錄n集合的差分字首和;now記錄q集合的差分字首和。
構造好事件點後按l(r)排一遍序;按順序往後掃。
(if cnt1>k) ans+=區間長度*i
*/#include
#include
#include
#include
using
namespace
std;
int n, k, q;
struct node
} haoyu[500050];
int main();
haoyu[++cnt] = (node);//記左不記右!!!
}for(int i = 1; i <= q; i++);
haoyu[++cnt] = (node);
}sort(haoyu+1, haoyu+cnt+1);//掃瞄線千萬記得排序!!!
int top = 0;
long
long now = 0, ans = 0;
for(int i = 1; i <= cnt; i++)
cout
<< ans << endl;
return
0;}
牛客提高D1t2 最小生成鏈
分析 我們發現可以把題目轉化為 有乙個序列a,問它的排列中相鄰兩個值異或的最大值的最小值 我們發現序列的構成一定是前幾位全是一樣的 從某一位開始左面全是0右面全是1 所以只要找到一種方案是的交界兩個值異或最小即可 把是0的插入01trie,每次拿是1的查詢異或最小值 include include ...
暑假 D2 T2 熱點
輸入 輸入檔案為hotspot.in。輸入的第一行為兩個正整數n,m。接下來的m行,每行描述乙個事件。輸出 輸出檔案為hotspot.out。輸出僅一行,n個整數,第i個數表示第i個人總共收到的動態數。輸入輸出樣例1 hotspot.in hotspot.out 2 8 s 1 s 2 l 1 2 ...
NOIp 2015 對D1T2的一些拓展研究
隨便口胡,錯誤一大堆,歡迎打臉 d1t2因為只有n條邊,所以只存在簡單環,那我們把這個問題複雜一下,每個人可能能告訴多個人,也就是邊的數量大於n,那麼這樣的話就會出現複雜環了。如果還是直接用tarjan求的話肯定是錯的,因為tarjan每次找的是一整個大環。在這裡想到了一種比較簡單的解法。我們每次選...