牛客練習賽39

2021-09-10 15:58:11 字數 1570 閱讀 8392

b:進行根、右、左的樹遍歷。然後求最長上公升子串行長度。

#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

const int maxn = 2e5+22;

int to[maxn][2];

vectorx;

int val[maxn];

void dfs(int u)

int d[maxn];

int main()

else

} printf("%d\n",len);

}

c:

對於每一場流星雨單獨求貢獻。

為 前一場出現流星雨的概率*(pi+p)+前一場不出現流星雨的概率*pi.

快速冪寫錯,**。

#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

const int maxn = 2e5+22;

const ll mod = 1e9+7;

ll qkm(ll base,ll mi)

return ans;

}ll x[maxn],y[maxn],w[maxn],p[maxn],up[maxn];

int main()

ll p=a*qkm(b,mod-2)%mod;

ll ans=0;

ans+=p[1]*w[1]%mod;

ans%=mod;

ll pre=p[1];

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

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

}

d:

開bitset儲存這個聯通塊和哪幾個異色點連了線。

在同色加邊為並查集合並操作。合併操作更新biset。

操作3則為&操作,然後count。

並查集寫錯。**

#include#include#include#include#include#include#includeusing namespace std;

#define ll long long

const int maxn = 2e5+22;

const ll mod = 1e9+7;

bitset<50022> bt[50013];

int cor[50013];

int fa[50013];

int findi(int x)

void add(int x,int y)

int wt,bk;

int main()

int x,y;

for(int i=1;i<=m;++i)

}else

}else if(op==2)else

printf("%d\n",wt);

}elseelse

} }}

(dfs LIS)牛客練習賽39 選點

時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 有一棵n個節點的二叉樹,1為根節點,每個節點有乙個值wi。現在要選出盡量多的點。對於任意一棵子樹,都要滿足 如果選了根節點的話,在這棵子樹內選的其他的點都要比根節點...

牛客練習賽39D

首先操作2用並查集就行了。題解說的好啊!考慮操作一,連的兩個點如果同色,直接合併,然後這個顏色的聯通塊 1,然後合併bitset,就是或一下。bitset維護的是相連的異色結點。如果兩個點異色,那麼我們就不管他們,直接在兩個bitset裡分別把對方設為1。對於操作三 直接 b x b y count...

(概率dp)牛客練習賽39 C

現在一共有n天,第i天如果有流星雨的話,會有wi顆流星雨。第i天有流星雨的概率是pi。如果第一天有流星雨了,那麼第二天有流星雨的可能性是p2 p,否則是p2。相應的,如果第i 1 i 2 天有流星雨,第i天有流星雨的可能是pi p,否則是pi。求n天後,流星雨顆數的期望。因為當天的概率只與前一天的概...