2020牛客暑期多校訓練營(第一場)解題報告

2022-05-27 10:21:13 字數 2613 閱讀 4103

簽到題。

#include using namespace std;

#define ll long long

ll input()

const int n=2e5+7;

string s1,s2;

int main()

}

數學推導題。

\[\int_^x^n(1-x)^n = \frac(1-x)^ndx^n+1 \\

= \frac(x^(1-x)^n)\bigg|^_+n\int_0^1x^(1-x)^dx\\

=\frac\int_0^1x^(1-x)^dx \\

\int_0^1x^(1-x)^dx=\frac(1-x)^\bigg|_0^1+(n+1)\int_0^1x^(1-x)^dx\\

\int_0^1x^n(1-x)^dx=\frac\int_0^1x^(1-x)^dx \\

\int_0^1x^(1+x)^dx=\frac\int_0^1x^(1-x)^dx\\

\vdots\\

\int ^1_0x^(1-x)^dx=\frac\int_0^1 x^(1-x)^dx\\

\int_0^1x^dx=\frac\\

\int^1_0x^n(1-x)^ndx=\frac\times\frac\times\frac\cdots\frac\times\frac

\]

#include using namespace std;

#define ll long long

ll input()

const ll mod=998244353;

const int n=2e6+7;

ll powmod(ll a,ll b)

return res;

}ll dp[n];

int main()

const int n=5007;

const ll inf=0x3f3f3f3f3f3f3f;

#define pii pair #define fr first

#define sc second

#define mp make_pair

struct mincostflow

}; ll v=0,h[n],dis[n],pv[n],pe[n];

vector g[n];

inline void init(ll n)

inline void ins(ll u,ll v,ll f,ll c)

pii mcmf(ll s,ll t,ll flow)}}

if(dis[t]==inf) break;

for(ll i=0;i<=v;i++) h[i]+=dis[i];

newflow=flow;

for(ll x=t;x!=s;x=pv[x]) newflow=min(newflow,g[pv[x]][pe[x]].f);

flow-=newflow,flow+=newflow,cost+=newflow*h[t];

ld.push_back(mp(newflow*h[t],newflow));

for(ll x=t;x!=s;x=pv[x])

} return mp(flow,cost);

}}a;

int main()

pii ans=a.mcmf(s,t,inf);

sort(a.ld.begin(),a.ld.end());

ll q=input();

while(q--)else if(ct帶花樹開花演算法。

被我用最大流水過去了。最大流在判奇環時會出現錯誤。

測試資料:

3 31 1 1

1 22 3

3 1no

最大流建模就是每乙個點拆成出點和入點,入點於源點相連,流量為該點的\(d[i]\)值,出點於匯點相連,流量為該點的\(d[i]\)值,對於乙個入點與乙個出點之間有一條流量為1的邊的條件是在圖上與之相連的。對於這個網路跑最大流,如果最大流等於\(d\)陣列之和,則是"yes",否則為"no"。

#include using namespace std;

#define ll long long

ll input()

const int n=200;

const int m=4007;

const int inf=0x3f3f3f3f;

#define clr(a,b) memset(a,b,sizeof(a))

int n,m,s,t;

int cnt=0;

int head[n];

int dis[n],q[n];

int d[n];

vector g[n];

struct edgee[m];

void ins(int u,int v,int w);head[u]=cnt++;

e[cnt]=(edge);head[v]=cnt++;

}int mklevel()else dis[e[i].v]=-1;}}

return cost;

}int dinic()

int main()

s=0,t=2*n+1;

// cout《待補

待補

牛客暑期多校訓練營B Boundary

給定n個點,然後確定乙個過原點的圓,要使這n個點盡可能多的存在與圓上,最後輸出最多的存在於圓上的點的個數 三點確定乙個圓,我們已知這個圓必定經過原點,所以再依次利用三點求圓心的公式列舉每兩個點與原點 三點不共線 確定的圓心,最後選擇確定次數最多的圓心構成的圓 include include incl...

2020牛客暑期多校訓練營(第一場)

g baxianguohai,gexianshentong h minimum cost flow i 1 or 2 j easy integration 2020牛客暑期多校訓練營 第一場 兩個字串a和b,對aaaa 和bbbb 字串a和b無限重複 方法一 字串a和b從第一位開始比較,當比到其中最...

2020牛客暑期多校訓練營 第一場

開始堇業,把之前欠的債補上。這題就是類似於觀察一下性質。其實可以發現把長度最長的那個串拼成兩倍,之後在這個範圍內一定能比較出大小。畫個圖,把相同的拼一拼就行了。如果到了兩倍還沒比較出大小就說明一定相等。include using namespace std typedef long long ll ...