尤拉迴路 洛谷 P1341 無序字母對

2021-08-02 12:28:32 字數 747 閱讀 4708

很狗的一道題;

這種題在我們紹興一中出題人是要被阿掉的;

首先就是兩個char會出現相同的情況;

然後每個char最多出現52次;

所以n其實不小的;

我靠;

這些東西都沒有很明白的說清楚;

然後我們發現n對關係n+1個點;

就是尤拉迴路;

其實就是一筆畫問題;

度數為奇的點為2或者0的話可以有一筆畫;

那麼對於這兩種情況取字典序最小的乙個點開始dfs,一定可以出結果;

然後資料的話codevs有的;

#include

#define ll long long

using

namespace

std;

const ll n=100;

bool f[n][n];

int a[n*100],a[n];

int n,x,y,m,sum,u1,u2;

int get()

void out()

void dfs(int x,int k)

}int main()

for(int i=99;i;i--)

if(a[i])if(a[i]&1)sum++,u1=i;else u2=i;

if(sum!=0&&sum!=2)

if(sum)dfs(u1,1);else dfs(u2,1);

}

無序字母對 洛谷1341 尤拉迴路

給定n個各不相同的無序字母對 區分大小寫,無序即字母對中的兩個字母可以位置顛倒 請構造乙個有n 1個字母的字串使得每個字母對都在這個字串中出現。第一行輸入乙個正整數n。以下n行每行兩個字母,表示這兩個字母需要相鄰。輸出滿足要求的字串。如果沒有滿足要求的字串,請輸出 no solution 如果有多種...

洛谷1341 無序字母對(尤拉迴路)

點此看題面 大致題意 給你 n 個各不相同的無序字母對 注意 兩個字母可能相同,被這個坑了好幾次 請構造乙個長度為 n 1 的字串包含每個字母對。這是一道裸的尤拉迴路,只不過是字串版的,步驟較經典版略顯麻煩。依照尤拉迴路的思路,我們先統計出每個字母出現的次數。然後對其中奇點的個數分類討論 若沒有奇點...

洛谷 P1341 無序字母對

這道題第一眼以為是一道字串的題,但細想一下是一道求尤拉路的圖論題。把每一對對應關係看成一條邊,本題即求這張圖上是否存在乙個尤拉迴路或尤拉路,並要求字典序最小的方案,那麼我們在dfs的時候就要從該點所連的最小的點開始便利,並將所得的結果存在乙個陣列中,最後逆序輸出。include include in...