bzoj1006题解
【题意分析】
给你一张弦图,求图的最小染色数。
【解题思路】
这篇讲稿已经讲得很详尽了。。
直接求完美消除序列,然后倒着染色即可。复杂度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题解的更多相关文章
- 【题解】[HNOI2008]神奇的国度—BZOJ1006。
之前说顺着打BZOJ结果又被自己给鸽了qwq. ------------------------------------ 言归正传这道题应该怎么做. 先给大家普及一下弦图(连接环上俩个不相邻节点的边称 ...
- 【BZOJ1006】神奇的国度(弦图)
[BZOJ1006]神奇的国度(弦图) 题面 BZOJ 题解 直接参考弦图的做法 #include<iostream> #include<cstdio> #include< ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
随机推荐
- Qt【Could not parse stylesheet of object 0x7f7990 】
查找自己所写的 setstylesheet(); 然后看里面的括号标点什么的有没有多余的,删除即可解决.
- 分布式消息中间件(二)ActiveMQ
一.概述 Apache出品,最流行的,能力强劲的开源消息总线. 1.JMS规范 Java消息服务(Java Message Service,即JMS)应用程序接口是一个Java平台中关于面向消息中间件 ...
- v-for 循环 绑定对象 和数组
<!--v-for 迭代数组--> <div id="app11"> <div v-for="info in infos"> ...
- java poi导出Excel合并单元格并设置边框
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...
- 二分+贪心——cf1251D
二分的时候要特别注意一下下界L #include<bits/stdc++.h> using namespace std; #define ll long long #define N 20 ...
- HDU 5251 矩形面积 (旋转卡壳)
2015年百度之星程序设计大赛 - 初赛(1) 1006 比赛链接:2015年百度之星程序设计大赛 - 初赛(1) 题目链接:HDU 5251 Problem Description 小度熊有一个桌面 ...
- 拾遗:Vim 批量删除匹配到的行
删除包含特定字符的行 g/pattern/d (全局删除匹配行) ,5g/pattern/d (删除第1-5行里的匹配行) 删除不包含指定字符的行 v/pattern/d g!/pattern/d ( ...
- EE5111_A0206839W
EE5111 Selected Topics in Industrial Control & Instrumentation Assessment: Implement a simple ...
- nginx打包成rpm
[root@localhost ~ ]#yum -y install lrzsz pcre pcre-devel zlib zlib-devel vim nrt-tools psmisc gcc gc ...
- 使用自己的Python函数处理Protobuf中的字符串编码
我目前所在的项目是一个老项目,里面的字符串编码有点乱,数据库中有些是GB2312,有些是UTF8:代码中有些是GBK,有些是UTF8,代码中转来转去,经常是不太清楚当前这个字符串是什么编码,由于是老项 ...