刷題記錄 luoguP1341 無序字母對

2021-08-03 14:41:24 字數 1004 閱讀 8066

這是一道尤拉路徑的問題

尤拉路徑:對於無向圖,當且僅當奇數度為0或2時,存在尤拉路徑,即可以不重複的經過每一條邊。

(1)當奇數度為0時,即所有節點的邊數都是偶數時,肯定能回來(n條邊,n/2條出來,n/2條回來),故叫做尤拉迴路

(2)當奇數度為2時,這兩個相應的奇數度節點一定乙個是起點,乙個是終點,否則做不到不重複的經過每一條邊。

*************************************

對於這題,可以把字母對拆開,

對於樣例:

4

aztz

xtax

可拆成:a z t x

然後連無向邊,比如az就把a和z連起來

計算節點的度數,相應的按照尤拉路徑來處理,

對於(1),可按照優先順序搜尋,儲存邊的vector可以排序,很方便

對於(2),設兩點為v u,如果v

注意:記錄使用的b陣列(或者說「used」陣列),是記錄邊的使用,不是節點的使用情況

如果記錄節點,那麼可能是az zt ta,這樣會炸的。

***************************************

#include

#include

#include

#include

#include

#define maxn 3005

#define maxm 65

using namespace std;

int n;

vectorg[maxm];

int b[maxm][maxm];

int ans[maxn];

int temp[maxm];

int cnt;

int dfs(int x,int k)

for(int i=0;i>x>>y;

x-='a'; y-='a';

if(x==y)

else

}    

for(int i=0;i

OI刷題記錄

2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...

面試刷題記錄

寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...

刷題記錄 2015 11 14

現在每天做的題都記錄一下,免得不知道自己在幹什麼。poj2406 用next陣列的定義求迴圈節 poj3261 字尾陣列 題 spoj705 同上,這題我wa了幾次,結果發現 我以為字串只有大寫字母,其實有小寫。如下 poj2406 author duyixian date 2015 11 14 1...