【题意分析】

  给你一张弦图,求图的最小染色数。

【解题思路】

  这篇讲稿已经讲得很详尽了。。

  直接求完美消除序列,然后倒着染色即可。复杂度O(n2+nm)。

【参考程序】

  求完美消除序列我是用的MCS(lexBFS都不会怎么办啊QAQ)。

 #include <cctype>
#include <cstdio>
#define REP(I,start,end) for(int I=(start);I<=(end);I++)
#define PER(I,start,end) for(int I=(start);I>=(end);I--)
inline int space()
{
return putchar(' ');
}
inline int enter()
{
return putchar('\n');
}
inline int getint()
{
char ch=getchar();
for(;!isdigit(ch)&&ch!='+'&&ch!='-';ch=getchar());
bool impositive=ch=='-';
if(impositive)
ch=getchar();
int result=;
for(;isdigit(ch);ch=getchar())
result=(result<<)+(result<<)+ch-'';
return impositive?-result:result;
}
template<typename integer> inline int write(integer n)
{
integer now=n;
bool impositive=now<;
if(impositive)
{
putchar('-');
now=-now;
}
char sav[];
sav[]=now%+'';
int result=;
for(;now/=;sav[result++]=now%+'');
PER(i,result-,)
putchar(sav[i]);
return result+impositive;
}
template<typename T> inline bool getmax(T &target,T pattern)
{
return pattern>target?target=pattern,true:false;
}
template<typename T> inline bool getmin(T &target,T pattern)
{
return pattern<target?target=pattern,true:false;
}
//=====================Header Template=====================
#pragma optimize(2)
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
typedef vector<int> vecint;
typedef vecint::iterator vecnode;
bool used[];
int q[],label[],color[];
vecint edge[],rec[];
int main()
{
int n=getint();
memset(edge,,sizeof(edge));
for(int m=getint();m--;)
{
int u=getint(),v=getint();
edge[u].push_back(v);
edge[v].push_back(u);
}
REP(i,,n)
sort(edge[i].begin(),edge[i].end());
memset(used,,sizeof(used));
memset(label,,sizeof(label));
memset(rec,,sizeof(rec));
int best=label[]=;
REP(i,,n)
rec[].push_back(i);
REP(i,,n)
{
for(;;best-=rec[best].empty())
{
for(;!rec[best].empty()&&used[rec[best].back()];rec[best].pop_back());
if(!rec[best].empty())
{
used[q[i]=rec[best].back()]=true;
break;
}
}
int now=q[i];
for(vecnode it=edge[now].begin();it!=edge[now].end();it++)
{
int p=*it,pv=++label[p];
rec[pv].push_back(p);
getmax(best,pv);
}
}
memset(color,,sizeof(color));
int ans=;
REP(i,,n)
{
int now=q[i];
memset(used,,sizeof(used));
for(vecnode it=edge[now].begin();it!=edge[now].end();it++)
used[color[*it]]=true;
REP(j,,n)
if(!used[j])
{
color[now]=j;
getmax(ans,j);
break;
}
}
write(ans);
enter();
return ;
}

bzoj1006题解的更多相关文章

  1. 【题解】[HNOI2008]神奇的国度—BZOJ1006。

    之前说顺着打BZOJ结果又被自己给鸽了qwq. ------------------------------------ 言归正传这道题应该怎么做. 先给大家普及一下弦图(连接环上俩个不相邻节点的边称 ...

  2. 【BZOJ1006】神奇的国度(弦图)

    [BZOJ1006]神奇的国度(弦图) 题面 BZOJ 题解 直接参考弦图的做法 #include<iostream> #include<cstdio> #include< ...

  3. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  4. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  5. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  6. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  7. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  8. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  9. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

随机推荐

  1. MyBatis 通过包含的jdbcType类型

    BIT         FLOAT      CHAR           TIMESTAMP       OTHER       UNDEFINED TINYINT     REAL       V ...

  2. Mysql学习笔记(001)-常见命令

    常见命令 SHOW DATABASES; /* use test; create database myemployees; use myemployees; create table employe ...

  3. vue-cli下的vuex的极简Demo(实现加1减1操作)

    1.vue-cli搭建好项目之后,使用npm安装vuex npm install vuex --save 2.在项目目录中构建vuex目录(这里我新建了store的文件夹,里面新建了store.js文 ...

  4. js 加载验证码

    <img id="captchaPic" src="{{captcha_src('math')}}" onclick="this.src='{{ ...

  5. Android编程:解决异常“android.view.InflateException: Binary XML file line # : Error inflating class”

    今天写程序发现一个问题,就是XML中报出android.view.InflateException异常,可能的原因有: 1.XML中使用到得组件名称是否书写正确(包名+类名),可以使用crtl+鼠标点 ...

  6. DUBBO+Zookeeper在Centos7中本地搭建及小案例

    环境: 1.centos7 2.jdk-7u76-linux-x64.tar.gz 2.tomcat:apache-tomcat-7.0.59.tar.gz 3.zookeeper-3.4.6.tar ...

  7. elementUI拿到当前表格行的数据的另一种写法

    背景: 这里是通过点击“修改”按钮后才拿到当前行的数据,不是点击当前行任意位置拿到数据,所以不能用 @row-click 方法 改用点击的时候直接拿到这个表里面的这一条数据 1.绑定事件 <te ...

  8. TESTNG听录音笔记

    1. 是什么:有了它可以管理测试用例,做数据驱动,多线程模式下case的鲍旭类型 2. 如何生成testng的xml文件 -- based on Eclipse Eclipse里装上testn插件,指 ...

  9. 行内元素与块级元素的区别,行内块级元素在IE8-的兼容性

    行内元素与块级元素的区别 行内元素最好不要包裹块级元素,但是块级元素可以任意的包裹行内元素 行内元素如果其上一个元素也是行内元素,则他们会分布在统一水平线上,即在一行上排列,块级元素不论上一个元素是行 ...

  10. css布局方面小结

    1 ####css选择器 1 .left-word.moreinfor{} 这样是找不到选择器的.中间需要一个空格 但是div.moreinfor 是可以的. 2 max-width的作用: p元素只 ...