一、 暢通工程之最低成本建設問題
這道題是用最小生成樹做的,之前最小生成樹練的很少,比賽時沒寫出來,也沒考慮用最小生成樹,還是練得少。
這個題可以用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...