讓我想起了徐州的第一題。。。。還以為比那題更難
第二天早上隊友跟我聊了下這題,然後我發現這題就可以用我徐州第一題的錯誤的思路做(雖然那題因為資料特殊性a了。。。),我們開兩個並查集,對於一段相同的邊,f1表示這段相同的邊之前的連線情況,然後從前向後列舉這段邊,如果能連就連,只更新f2,如果不能連,去f1中看看是不是在同一集合,如果不在,說明這段邊中在這條邊之前有一條邊跟這條邊是等價的,這樣就會形成多棵最小生成樹,需要把一條邊+1,而吧這條邊+1,對之後也沒有影響。
之後再把f2的更新情況同步到f1中去
#include#define maxl 200010
using namespace std;
int n,m,ans;
int f1[maxl],f2[maxl];
struct ed
e[maxl];
struct node
;vector tmp;
bool cmp(const ed &x,const ed&y)
inline void prework()
inline int find1(int x)
inline int find2(int x)
inline void mainwork()
); }
else
}int l=tmp.size();
for(int j=0;jfor(int j=i;j<=nxt;j++)
find1(e[j].u),find1(e[j].v);
i=nxt; }}
inline void print()
int main()
codeforces 1194F 組合數學
傳送門 你有n個事件,你需要按照1 n的順序完成這些事件,每個事件需要 t i 的時間完成,你現在一共有t的時間去做這些事情,每做一件事情的時候,你有0.5的概率花費 t i 的時間完成他,也有0.5的概率花費 t i 1 的時間去完成他,如果在做這個事件的時候時間花完了,你就相當於沒有做成這個事件...
codeforces 1114F 線段樹練習
這是一道用線段樹維區間值的一道題,題意很簡單,就是對於給定的乙個序列,初始時每個數的值不大於300,然後有兩中操作,乙個是對區間 l,r 的每個數乘上以個數x,乙個是詢問區間的乘積的尤拉函式值,首先對於第乙個操作顯然可以用線段樹的延遲更新來完成,對於第二個操作,我最先沒考慮資料,就想著直接維護區間的...
Codeforces 985F 字串雜湊
題目鏈結 題意簡述 給定乙個長度為n n 2e5 的字串s 僅含有小寫字母 有m m 2e5 次查詢。每次查詢給三個數,x,y,len,求在s x s x len 1 和s y s y len 1 是否存在相應位置唯一對應關係。例如aba和brb,aaa和kkk,abs和ert是唯一對應。aab和a...