天梯賽賽前模擬賽補題 2020

2021-10-10 20:52:22 字數 3853 閱讀 8966

一、 暢通工程之最低成本建設問題

這道題是用最小生成樹做的,之前最小生成樹練的很少,比賽時沒寫出來,也沒考慮用最小生成樹,還是練得少。

這個題可以用kruskal演算法做,先將每條路的花費從小到大排序,然後再從頭開始加每條邊花費的**,從頭開始用並查集判斷兩個點的根節點是否相同,如果相同說明出現了環,就continue;否則就加上兩點之間修一條路的**。

最後用並查集判斷一下是否只有乙個連通分量。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const ll inf =

0x3f3f3f3f

;const

int maxn =

2e5+10;

int vis[maxn]

,start;

int g[

1005][

1005];

int p,n,k,val[

1005][

1005

],m;

int f[

1005];

struct node

e[maxn]

;bool

cmp(node a,node b)

intfind

(int x)

return f[x];}

bool

union

(int u,

int v)

return

false;}

intmain()

sort

(e+1

,e+m+

1,cmp)

;int cnt=0;

int sum=0;

for(

int i=

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

(cnt==n-1)

break;}

int num=0;

for(

int i=

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

(num>1||

!num)

//沒有通路,不是完全圖

printf

("impossible\n");

else

printf

("%d\n"

,sum)

;return0;

}

二、進製轉換

這個題不是很難,有乙個測試點沒過,因為沒有判斷結果是0時的輸出情況,如果等於0,就不用輸出符號,如果大於零就不用輸出』+『。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const ll inf =

0x3f3f3f3f

;const

int maxn =

3e5+10;

intmain()

int len = str.

size()

;int flag=0;

char op;

stacks;

for(

int i=

0; i((str[i]

>=

'0'&&str[i]

<=

'9')

||(str[i]

>=

'a'&&str[i]

<=

'f')

||(str[i]

>=

'a'&&str[i]

<=

'f'))}

ll base=1;

ll ans=0;

while

(!s.

empty()

)if(ans==0)

cout<<

0

return0;

}

三、說反話-加強版

感覺當時做這個題的時候真憨,用的十分暴力的方法,樣例還全沒過…後來換了種方法.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const ll inf =

0x3f3f3f3f

;const

int maxn =

3e5+10;

intmain()

for(

int i=ans.

size()

-1; i>=

0; i--

) cout

}

四、列車廂排程

if語句中有多個判斷條件時,先按照運算子的優先順序來,同級的從左到右依次。如果是 && 運算,前面的有乙個不滿足,後面的不會再判斷;如果是|| 運算,前面的有乙個滿足,後面的也不會再判斷。

在這個題中,我因為將s_.empty() 放在了s1.top()==s2.top()後面,導致了段錯誤。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

using

namespace std;

const ll inf =

0x3f3f3f3f

;const

int maxn =

2e5+10;

intmain()

for(

int i=str2.

size()

-1; i>=

0; i--

)int flag=1;

while

(!s2.

empty()

)elseif(

!s3.

empty()

&&s3.

top(

)==s2.

top())

elseif(

!s2.

empty()

&&s1.

empty()

&&s3.

top(

)!=s2.

top())

else}if

(!flag)

else

}return0;

}

2020天梯賽模擬賽

include using namespace std intmain void include using namespace std intmain void include using namespace std intmain void cout a b endl return0 inclu...

天梯賽補題 2020 10 11

這次天梯還湊合吧只能說,25分的題目自己基本都會相關的演算法,運氣好一些,35分的題就不會了 這裡補一下鍊錶去重的那個題 題目大意 給予頭指標和相關的鍊錶數目,然後求出絕對值不同的鍊錶,然後再求出需要刪除的鍊錶 解題思路 include include include include include...

ACM 天梯賽賽前複習

寒假集訓被學校巨佬們震撼 苦心刷題,終於有空在天梯賽前把板題湊合整理一下,賽前來波自我安慰 hdu 2199 wa了兩次,第二次再做時沒有審清題,題目鎖定了答案在0到100之間,其餘的輸出為no solution!然而預設只有小於零才輸出。還有注意資料型別 double ac include inc...