2023年9月9日開學訓練日記

2021-08-27 16:16:37 字數 4083 閱讀 4672

週六的比賽情況:

前兩個小時做自己的c題,後來發現推不動,容斥複雜度過高,然後就轉移陣地了。

之後:助攻了k題,發現了題意讀錯了,然後修改之後過了。

助攻+完成了g題,一併推出容斥,並完成**提交,**:

#include#include#include#include#include#define maxn 100010

using namespace std;

const long long mo=1000000007;

long long fun;

bool vis[maxn];

long long prime[maxn];

long long inv2,inv3,inv6;

long long fac[32];

long long box[32];

long long tot;

long long total;

long long n,m;

long long qpow(long long x,long long y)

return (ans+mo)%mo;

}void getprime()

long long cal(long long x,long long temp)

void sfind(long long x,long long y,long long z,long long val)

}tree[maxn];

void pushup(long long id)

void build(long long id,long long l,long long r)

long long mid=tree[id].mid();

build(id*2,l,mid);

build(id*2+1,mid+1,r);

pushup(id);

}void update(long long id,long long pos,long long val)

long long mid=tree[id].mid();

if (pos<=mid)

else

pushup(id);

}long long query(long long id,long long l,long long r)

long long mid=tree[id].mid();

if (r<=mid)

else if (l>mid)

else

}struct xtree1

}tree1[maxn];

void pushup1(long long id)

void build1(long long id,long long l,long long r)

long long mid=tree1[id].mid();

build1(id*2,l,mid);

build1(id*2+1,mid+1,r);

pushup1(id);

}void update1(long long id,long long pos,long long val)

long long mid=tree1[id].mid();

if (pos<=mid)

else

pushup1(id);

}long long query1(long long id,long long l,long long r)

long long mid=tree1[id].mid();

if (r<=mid)

else if (l>mid)

else

}int main()

else }}

}做出了g題,被紀翔文告知了思路,後用雙線段樹+離散處理,因為我處理時間過長,紀翔文同時開了樹狀陣列的寫法,最後同時ac,**:

#include

#include

#include

#include

#include

#define maxn 200010

#define maxx 10000010

using namespace std;

long long cntx[maxx];

long long cnty[maxx];

struct pointp[maxn];

bool cmpx(point a,point b)

struct xtree

}treex[maxn];

void pushupx(long long id)

void pushdownx(long long id)

}void buildx(long long id,long long l,long long r)

long long mid=treex[id].mid();

buildx(id*2,l,mid);

buildx(id*2+1,mid+1,r);

pushupx(id);

}void updatex(long long id,long long l,long long r,long long val)

pushdownx(id);

long long mid=treex[id].mid();

if (r<=mid)

else if (l>mid)

else

pushupx(id);

}long long queryx(long long id,long long l,long long r)

pushdownx(id);

long long mid=treex[id].mid();

if (r<=mid)

else if (l>mid)

else

}struct ytree

}treey[maxn];

void pushupy(long long id)

void pushdowny(long long id)

}void buildy(long long id,long long l,long long r)

long long mid=treey[id].mid();

buildy(id*2,l,mid);

buildy(id*2+1,mid+1,r);

pushupy(id);

}void updatey(long long id,long long l,long long r,long long val)

pushdowny(id);

long long mid=treey[id].mid();

if (r<=mid)

else if (l>mid)

else

pushupy(id);

}long long queryy(long long id,long long l,long long r)

pushdowny(id);

long long mid=treey[id].mid();

if (r<=mid)

else if (l>mid)

else

}int main()

sort (p+1,p+n+1,cmpx);

long long totx=1;

memset (cntx,0,sizeof(cntx));

memset (cnty,0,sizeof(cnty));

p[0].x=0;

p[0].y=0;

cntx[p[0].x]=1;

for (i=1;i<=n;i++)

}buildx(1,1,totx);

cnty[p[0].y]=1;

long long toty=1;

sort (p+1,p+n+1,cmpy);

for (i=1;i<=n;i++)

}buildy(1,1,toty);

sort (p+1,p+n+1,cmpid);

long long ansx=0;

long long ansy=0;

for (i=1;i<=n;i++)

cout<然後就廢了,調兩個雙線段樹的**確實很耗費精力,加上上午上完數學物理方程課過來的,就覺得頭很疼。

2023年9月29日開學訓練日記

今天早上學了一下字典樹和0 1字典樹,因為之前周四的比賽中我用暴力過了乙個0 1字典樹的題,想順便學習 補題 我只能說字典樹是乙個比較好用的資料結構,並不是乙個很嚇人的知識點,就是用乙個樹存某個串的狀態,以達到節省空間又能快速訪問多個字串的狀態量的乙個資料結構。0 1字典樹則是乙個特例,是對數字的異...

2023年9月9日訓練日記

這段時間主要看了饒齊部落格的揹包部分和cf題解的前幾道題。然後就是昨天今天兩場網路賽。這兩場網路賽都沒出線,乙個最明顯的感覺就是,為啥別人都會就我們不會?還是和多校的問題一樣。要麼就是簡單的模板題,但是知識點不會 但是現在基本已經解決 另外乙個重要的問題就是題目不難,但是不會。思考原因 1 題量不夠...

2023年9月2日訓練日記

這段時間複習了數字dp的有關內容。之前做過的比較難的題目有一些看不懂了。簡單的題目還是可以看懂的。主要是dp的每一維表示什麼,是否有前導零等條件。經常結合二分使用,求第k個每一數字滿足什麼條件的數這樣的。不過還是只會dfs寫法,普通的for迴圈dp還是只能看懂一小部分。icpc南京網路賽可以說打的不...