暑期集訓補題系列Day 3樹 佇列 棧

2021-08-28 06:32:43 字數 3410 閱讀 4460

a.useful decomposition codeforces 981c

題意:給你一棵n個結點的樹,然後輸入n-1條邊。要求將該樹拆成若干條簡單路徑,並且這些路徑都經過乙個公共節點。給出任意乙個解決方案,如不存在輸出no

思路:鄰接表存圖建雙向邊,如果乙個點的出度》2,那麼他就是那個共享的點,如果有兩個共享的點,一定為no。

我們把出度為1的點,存到乙個陣列中。如果有共享點,直接輸出:共享點~這個陣列中所有的點即可。

如果沒有共享點,那麼就是一條鏈的情況,輸出兩個出度為1的點即可。

#include

using namespace std;

const

int maxn =

100005

;int n, xx;

vector<

int> g[maxn]

, s;

intmain()

vector<

int> x;

int cnt =

0, s =0;

for(

int i =

1; i <= n; i++)if

(cnt >=2)

printf

("no\n");

else

else

}return0;

}

c - kefa and park codeforces 580c

#include

#include

#include

#include

using namespace std;

const

int maxn =

1e5+10;

int hascat[maxn]

, vis[maxn]

;int n, m, ans;

vector<

int> g[maxn]

;int

dfs(

int cur,

int ret)

else

if(ret > m || vis[cur]

) vis[cur]=1

;int ans =0;

if(cur >

1&& g[cur]

.size()

==1)for

(int i =

0; i < g[cur]

.size()

; i++

)return ans;

}int

main()

int u, v;

for(

int i =

1; i <= n -

1; i++

)dfs(1

,0);

printf

("%d\n"

,dfs(1

,0))

;//fclose(stdin);

return0;

}

我寫的dfswa在了第8個樣例,加上對n != 1的考慮後wa在了第9個樣例。還沒有到底為什麼wa了,看下ac**,發現在dfs時帶上fa引數非常有用,可以避免第二次訪問。(所以我為什麼傻到沒有弄個vis!!!)

e - recursive queries codeforces 932b

#include

#define ll long long

using namespace std;

int ans[10]

[1000005

],q,l,r,k;

intop

(int x)

//f(n)函式的功能實現

if(as<10)

return as;

x=as;}}

intmain()

else ans[i]

[j]=ans[i]

[j-1];

}}scanf

("%d"

,&q)

;while

(q--

)return0;

}

g - okabe and boxes codeforces 821c

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

#define ll long long

#define rep(i,a) for(int i = 0; i < (a); i++)

#define pb push_back

#define sz(a) (a).size()

#define mp make_pair

#define all(a) (a).begin(),(a).end()

#define fs first

typedef vector<

int> vi;

typedef pair<

int,

int> pii;

intmain()

else

if(str[0]

=='r'

)else

} curr++;}

} cout << ans << endl;

}

i - producing snow codeforces 948c

#include

#include

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

const

int n=

1e5+5;

ll t[n]

,sum[n]

,v[n]

;//sum[i]是t[i]的字首和

intmain()

for(

int i=

1;i<=n;i++

)for

(int i=

1;i<=n;i++

)printf

("%lld%c"

,ans,i==n?

'\n'

:' ');

}return0;

}

2020牛客國慶集訓派對day3(補題)

補題j flowers 題目鏈結 tot 為花的貢獻和 本題給出資料n,m,n為花卉種類,m為每束花應該有m種,check中的x為x束花,假設有x束花,則應該有xm朵花,在n種花中,check過程 如果a i x則說明花的數量大於花束的數量,這種花可以用在每一種,而且還多出來,tot中加上x,反之第...

北京集訓DAY3

消去合法的序列 剩下的不合法序列一定是 3兩種括號個數各加1除2 手算一下即可4 5 include 6 include 7 include 8 9const int maxn 100010 10 11int len,top,cnt 1213 char s maxn 1415 inthh 25int...

省隊集訓DAY3

一共要使用六根木棍,那麼分割的方法就兩種,那麼關鍵就是要計算2,3的數量。cnt1 i 表示每種長度的木棍的方案數 cnt2 i 最初表示用不同的木棍拼成長度為i邊的方案數,後來表示選出四根木棍構成的方案數。cnt22 i 表示用兩個長度相同的不同木棍拼成長度為i的邊的方案數。cnt3 i 表示用三...