噩夢+級別的題,最近的題又難想又難調,還都是第一次打
以前做過和這個題很像的題,,但並沒有想到、
注意字首和的應用,似乎很多題都想不到用字首和化成點。
然後就是套路:每個點到乙個點的距離==每個點到根+查詢點到根*n-2*,
lca就是查詢點往上找的邊與其他點往上走的第乙個交點
然後由於是在鏈剖上進行,所以單次是 log*log 的這樣處理乙個點就要額外建log次建log個點,比一次建log^2個點省事
然後就是主席樹的標記永久化。。。yy了好久,學長講的也只知道大體怎麼做。。。
所以就是標記不下傳,並且當前點必須儲存子樹的答案,, 所以查詢時一路加 標記,最後乙個點直接統計子樹即可
注:1、分清原樹和鏈剖線段樹
2、同樣數取最靠左:l就是答案
同樣數取最靠右:額外記錄答案
碼(第一次打標記永久):
#include#include#include#includeusing namespace std;
#define n 150005
int rt[n*30],lliinn,tot,a,b,zhong[n<<1],xia[n],zhi[n<<1],lin[n],hson[n],top[n],hou[n<<1],lll,rrr,n,i,j,q,a,sz[n],fu[n],ch[20000000][2],bj[20000000],dui[n];
long long v[20000000],ans,c,dh[n],bh[n],d[n];
void jian(int a,int b,int c)
void jia(int a,int b,int c)
struct la
aa[n];
bool cmp(la a,la b)
}void dfs2(int o,int tap)
}void gai(int last,int o,int l,int r)
if(l<=a&&r>=b)
else if(l<=a&&b<=r)
else if(l>=a&&b<=r)
int mid=(l+r)>>1;
if(a<=mid)
if(b>mid)
}void cha(int last,int o,int l,int r)
lliinn+=bj[o]-bj[last];
int mid=(l+r)>>1;
if(a<=mid)cha(ch[last][0],ch[o][0],l,mid);
if(b>mid)cha(ch[last][1],ch[o][1],mid+1,r);
lliinn-=bj[o]-bj[last];
}int main()
for(i=1;irrr)swap(lll,rrr);
int l=1,r=n+1;c=0;
while(l>1;
if(aa[mid].v>1;
if(aa[mid].v<=rrr)c=mid,l=mid+1;
else r=mid;
}rrr=c;
ans=1ll*(rrr-lll+1)*d[o]+1ll*(dh[rrr]-dh[lll-1]);
while(o!=0)
printf("%lld\n",ans);
}
}
2017 10 18離線賽總結
個人感覺day2比day1還水 沒有ak對不起自己 前面兩題發揮穩定,後面一題強行又把複雜度算錯,不敢雜湊。套乙個高精,結構常數太大te了十分 題解 c題 由於a1 a2 a3等已知,而未知數只有乙個x,且取值範圍固定 1 1000000 可嘗試逐個帶入,但由於a1,a2,a3是巨大的數,若使用高精...
培訓失敗總結
1.培訓內容總結 該培訓的主要內容是側重於物件導向思想,如何通過物件導向思想去設計系統。物件導向思想,根據需求分析,把握最主要的業務,分析業務獲取業務物件,然後按照設計原則進行封裝操作和屬性 2.貴公司的系統架構 為什麼這樣架構有哪些優點,又有那些缺點 採用spring vmc tern 該公司自主...
專案團隊失敗總結
在一次創業專案中,我獲得了大量的經驗教訓,我深刻反思了一下作為技術人員自身的問題,包括團隊中其他人的行為,也包括我個人的錯誤處理方法。產品方向 專案團隊自認為對gamebryo非常了解,專案負責人宣揚客戶端人員實力可以重新打造更加優化的3d引擎版本,實踐說明我們的團隊不具備相應的實力,而且我們開發遊...