UVA818解題報告

2021-08-21 07:17:57 字數 1384 閱讀 3307

/*

* uva 818

*理解了題意和水題差不多

**條件:一些可能相同的無向邊

**要求:

* 構建乙個滿足如下三個要求的圖

* 一、不能有環

* 二、連成一條直線

* 三、所有節點要連在一起

**操作:我們僅可以選中乙個節點來連線不同的線段

* 每當我們選中乙個節點時,該節點與其他節點的連線斷開

* 此時,節點可用於連線線段

**解法:位運算暴力列舉節點狀態(選中或未選中)

**注意:測試資料極強,注意處理相同邊

**ps:因為博主最開始沒有注意到相同邊的情況,所以

* 博主這裡其實採用了一種比較費勁的解法

**測試資料:

sample input

2 1 2 1 2 -1 -1

2 1 2 2 1 1 2 2 1 -1 -1

3 1 2 -1 -1

0sample output

set 1: minimum links to open is 0

set 2: minimum links to open is 0

set 3: minimum links to open is 1

*/#include

#include

#include

#include

using

namespace

std;

#define n 30

#define inf 0x3f3f3f3f

#define _for(i,a,b) for (int i = (a); i < (b); ++i)

int n, cnt;

int vis[n], ma[n][n];

vector

g[n];

void init()

}}int num(int x)

//檢查是否有環

bool dfs(int i, int s, int f)

return

false;

}bool check(int s)

if (res > 2) return

true;

}//檢查是否構成環

cnt = 0;

memset(vis, 0, sizeof(vis));

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

}return

false;

}int slove() }}

return ans;

}int main()

return

0;}

UVa 818 切斷圓環鏈(dfs 二進位制列舉)

題意 有n個圓環,其中有一些已經扣在了一起。現在需要開啟盡量少的圓環,使得所有圓環可以組成一條鏈,例如,有5個圓環,1 2,2 3,4 5,則需要開啟乙個圓環,如圓環4,然 後用它穿過圓環3和圓環5後再次閉合4,就可以形成一條鏈 1 2 3 4 5。思路 從n個圓環中任意選擇圓環,這就是列舉子集。所...

UVa 755 487 3279解題報告

第一道超時題目,資料量太大達到100000,如果要乙個乙個手動模擬比較,肯定會超時。看了別人的 都是用到了stl的map容器。果然是神器,如果不用map還真不知道怎麼在3秒內輸出結果。用了map是1秒多。很清晰,就沒寫注釋。include include include include includ...

uva839解題報告

題目大意就是根據幹槓平衡原理,判斷題目所給出的資料組成的天平能否平衡。注意,此天平可能包含子天平。輸入時,如果w為0,則表示包含子天平,子天平按照先左後右的方法輸入。解題思路 這是二叉樹的問題,資料的輸入就好比先序遍歷。判斷有無子節點就是判斷w是否為0 本題需要思考兩點 第乙個如何判斷子天平平和 第...