HNOI2008 神奇的國度(最大勢演算法)

2022-03-17 00:33:52 字數 1000 閱讀 3546

給一張弦圖,求它的最小染色

最小染色:將點用最少的顏色染色,使得相鄰點顏色不同

弦:連線環中不相鄰的兩個點的邊

弦圖:乙個無向圖稱為弦圖當圖中任意長度大於3的環都至少有乙個弦

具體參照這篇部落格

最大勢演算法

待補充求出原圖的完美消除序列,從序列的最後乙個開始每次選擇目前可以選的最小顏色

在本題中做法即為:初始化每個點的\(label\)值為0,每次選出乙個未被選過的\(label\)值最大的點,固定它的\(label\)值,然後將與它直接連邊的未被選過點的\(label\)值\(+1\),這個過程用鍊錶實現即可

code:

#include#define n 10005

#define m 1000005

#define max(x,y) ((x)>(y)? (x) : (y))

using namespace std;

int n,m;

int label[n],nxt[n<<1],las[n<<1],best=0;

bool vis[n];

struct edge

edge[m<<1];int head[n],cnt=1;

void add_edge(int from,int to)

template void read(t &x)

void add(int i)

void del(int i)

int main()

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

}} int maxx=-1;

for(int i=1;i<=n;++i) maxx=max(maxx,label[i]);

cout

}

HNOI2008 神奇的國度

最大團數 最小色數 最大獨立集 最小團覆蓋 第一行兩個整數n,m。1 n 10000,1 m 1000000.表示有n個人,m對認識關係.接下來m行每行輸入一對朋 友輸出乙個整數,最少可以分多少隊 4 51 2 1 42 4 2 33 4 3一種方案 1,3 2 4 網上一搜才找到是最大勢演算法 完...

HNOI2008 神奇的國度

傳送門 好像是一道非常神仙的題 本題中具體的概念可以參見cdq大神的 弦圖與區間圖 我們直接來說吧。從這道題中的描述可以看出,由所有人向其認識的人連一條邊,構成的是一張標準的弦圖。而題目要求我們求出這張弦圖的最小染色數。有乙個非常重要的定理 對於一張弦圖,團數 色數 這個證明很難懂不過可以自己領會 ...

HNOI2008 神奇的國度

bzoj1006 這個題就是經典的最小點染色問題的模型。對於弦圖 題目中保證只有三角形,一定是弦圖 可以按其完美序列 乙個點的排列,使得每個點都是字尾的單純點 鄰居節點構成完全圖的點 逆序依次染色,即可求得最小染色。求完美序列可以用最大勢能法 mcs 演算法的過程為每次找出乙個勢能最大的點,放到當前...