牛客練習賽25

2021-08-25 17:38:33 字數 2525 閱讀 4221

我好菜啊。本來是奔著t恤去的

要求 ans

=∑ni

=1∑j

|i1 ans

=∑i=

1n∑j

|i

1注意到我們並不需要什麼奇蹟銀殼,只需要交換列舉主體就可以√n做了

#include 

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

typedef

long

long ll;

void solve(ll n)

printf("%lld\n", ans);

}int main(void)

return

0;}

線段樹裸題

#include 

#include

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

const

int n=200005;

int s[n<<2],ls[n<<2],rs[n<<2],a[n];

int read()

void modify(int now,int tl,int tr,int x,int v)

int mid=(tl+tr)>>1;

if (x<=mid) modify(now<<1,tl,mid,x,v);

else modify(now<<1|1,mid+1,tr,x,v);

ls[now]=ls[now<<1];

if (ls[now]==(mid-tl+1)&&a[mid]1]) ls[now]+=ls[now<<1|1];

rs[now]=rs[now<<1|1];

if (rs[now]==(tr-mid)&&a[mid]1]) rs[now]+=rs[now<<1];

s[now]=std:: max(s[now<<1],s[now<<1|1]);

if (a[mid]1]) s[now]=std:: max(s[now],rs[now<<1]+ls[now<<1|1]);

}int main(void)

printf("%d\n", s[1]);

for (;m--;)

return

0;}

注意到每乙個答案前的係數是一樣的,因此我們只需要o(t)求一波係數然後乘上對應位置的a即可

#include 

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

#define drp(i,st,ed) for (int i=st;i>=ed;--i)

typedef

long

long ll;

const

int mod=1000000007;

const

int n=200005;

ll a[n],b[n],sum;

int n,m;

int read()

int main(void)

ll tmp=1;

rep(i,1,100000)

for (;m--;)

return

0;}

我並沒有做出來,不過可以猜想一波是奇怪篩+指標亂掃的做法

首先圖不聯通肯定impossible

考慮還有什麼時候會impossible,只有存在橋的時候,我們不能夠給這條橋邊定向使得新圖強連通

於是tarjan求橋然後隨意dfs

#include 

#include

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

const

int n=2000005;

const

int e=2000005;

struct edge e[e];

int ls[n],prt[n],edcnt=1;

void add_edge(int x,int y) ; ls[x]=edcnt;

e[++edcnt]=(edge) ; ls[y]=edcnt;

}int dfn[n],low[n],vis[n];

int read()

void dfs(int now,int fa) else

if (e[i].y!=fa)

}}void solve(int now)

}int main(void)

dfs(1,-1);

if (dfn[0]!=n) int cnt=0;

for (int i=2;i<=edcnt;i+=2)

}if (!cnt) else

puts("impossible");

return

0;}

我並沒有做出來

20180824牛客練習賽25 A

q次詢問,每次給乙個x,問1到x的因數個數的和。輸入描述 第一行乙個正整數q 接下來q行,每行乙個正整數 x 輸出描述 共q行,每行乙個正整數表示答案 輸入 4 1 2 3 10 輸出 1 3 5 27 備註 1 q 10 1 x 1e9 方法1 尤拉篩列舉 絕逼炸了,無論是空間還是時間方法2 列舉...

牛客練習賽25 最長區間

其中表示left len right len可以用乙個len i 表示 len i 表示包括i的在i之前的最長遞增序列 用len陣列可以很方便得記錄到從x往左的left len等於多少 然後向由可以推出right len cnt i 計算每乙個長度i的序列有多少個 其中 乙個i的子長度的序列也會記錄...

牛客練習賽9

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 珂朵莉想每天都給威廉送禮物,於是她準備了n個自己的本子 她想送最多的天數,使得每天至少送乙個本子,但是相鄰兩天送的本子個數不能相同 珂朵莉最多送幾天禮物呢 第一行乙個整...