HNOI2008 神奇的國度

2022-05-01 22:57:17 字數 1392 閱讀 2780

最大團數=最小色數

最大獨立集=最小團覆蓋

第一行兩個整數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)

網上一搜才找到是最大勢演算法(完美消除序列,弦圖問題),具體的核心思想參考乙個貼吧,但具體的還不是很懂。

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#pragma comment(linker, "/stck:1024000000,1024000000")

#define lowbit(x) (x&(-x))

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

#define min(x,y) (x<=y?x:y)

#define max 100000000000000000

#define mod 1000

#define pi acos(-1.0)

#define ei exp(1)

#define pi 3.1415926535897932384626433832

#define ios() ios::sync_with_stdio(true)

#define inf 1044266558

#define mem(a) (memset(a,0,sizeof(a)))typedef

long

long

ll;vector

v[10006

];bool vis[10006

];int g[10006],n,m,d[10006],hash[10006],col[10006],x,y,cnt=0

;int

main()

memset(vis,

0,sizeof

(vis));

d[0]=-1

;

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

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

printf(

"%d\n

",cnt);

return0;

}

HNOI2008 神奇的國度

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

HNOI2008 神奇的國度

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

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 這道題,嘿嘿.clj大神說染色問題貌似是np完全問題,話說np問題是神馬啊?...