【题解】[HNOI2008]神奇的国度—BZOJ1006。
之前说顺着打BZOJ结果又被自己给鸽了qwq。
————————————————————————————————————
言归正传这道题应该怎么做。
先给大家普及一下弦图(连接环上俩个不相邻节点的边称为弦)和mcs算法(最小染色数=最大完全子图)的概念(会的可以直接跳代码)。
没错这题就是弦图最小涂色,直接一遍mcs就搞定了(仿佛没说一样。
将弦图分成多组的问题可以看做给弦图上的点染色且两个有直接边相连的点不能同色,这样就转化成了弦图的最小染色问题。
优先队列可以实现O(nlogn+m)的复杂度,其实还是很慢,我做这个题好几次T(真悲伤。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<queue>
#define rg register
using namespace std;
inline int read(){
rg int s=0,f=0;
rg char ch=getchar();
while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return f?-s:s;
}
int n,m,cnt=-1;
const int MAX=2000015;
int head[MAX];
bool vis[MAX],used[MAX];
int seq[MAX],label[MAX],color[MAX];
struct edge{
int nxt;
int to;
}e[MAX];
void add(int u,int v){
e[++cnt].nxt=head[u];
e[cnt].to=v;
head[u]=cnt;
}
typedef pair<int,int>p;
priority_queue<p>q;
void mcs(){
for(rg int i=1;i<=n;++i) q.push(p(0,i));
for(rg int i=n;i>=1;--i){
while(vis[q.top().second]) q.pop();
int u=q.top().second;
q.pop();
seq[i]=u;
vis[u]=1;
for(rg int i=head[u];~i;i=e[i].nxt){
if(!vis[e[i].to]) q.push(p(++label[e[i].to],e[i].to));
}
}
}
int solve(){
int res=0;
for(rg int i=n;i>=1;--i){
memset(used,0,sizeof(used));
for(rg int j=head[seq[i]];~j;j=e[j].nxt){
used[color[e[j].to]]=1;
}
for(color[seq[i]]=1;used[color[seq[i]]];++color[seq[i]]);
res=max(res,color[seq[i]]);
}
return res;
}
int main(){
memset(head,-1,sizeof(head));
n=read(),m=read();
for(rg int i=1;i<=m;++i){
int u=read(),v=read();
add(u,v);
add(v,u);
}
mcs();
printf("%d\n",solve());
return 0;
}
【题解】[HNOI2008]神奇的国度—BZOJ1006。的更多相关文章
- 【bzoj1006】[HNOI2008]神奇的国度
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3114 Solved: 1401[Submit][Sta ...
- bzoj1006 [HNOI2008]神奇的国度
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 2304 Solved: 1043 Description ...
- bzoj 1006 [HNOI2008]神奇的国度 弦图+完美消除序列+最大势算法
[HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 4370 Solved: 2041[Submit][Status][D ...
- BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)
题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K 国禁止四边关系,五边关系等 ...
- 【BZOJ】1006: [HNOI2008]神奇的国度 弦图消除完美序列问题
1006: [HNOI2008]神奇的国度 Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则. 他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的 ...
- bzoj 1006: [HNOI2008]神奇的国度 弦图的染色问题&&弦图的完美消除序列
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1788 Solved: 775[Submit][Stat ...
- BZOJ 1006: [HNOI2008]神奇的国度( MCS )
弦图最小染色...先用MCS求出完美消除序列然后再暴力染色... ------------------------------------------------------------------- ...
- bzoj 1006: [HNOI2008]神奇的国度 -- 弦图(最大势算法)
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角 ...
- BZOJ 1006 [HNOI2008]神奇的国度==最大势算法
神奇的国度 K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在. ...
随机推荐
- 批处理TOMCAT8.0自动重启任务
@echo title tomcat重启 set num=7001 //端口号,根据tomcat的设置项设置set JAVA_HOME=D:\software\Java\jdk1.8.0_131 / ...
- 非常可乐(杭电hdu1495)bfs
非常可乐 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- python常用内置函数1
1,abs 求绝对值 >>> abs( -1 ) 1 >>> abs( 1 ) 1 >>> 2,max, min求序列最大值与最小值 >&g ...
- Code Signal_练习题_growingPlant
Each day a plant is growing by upSpeed meters. Each night that plant's height decreases by downSpeed ...
- django使用小贴士
问题一: RuntimeError: Model class user.models.UserAccount doesn't declare an explicit app_label 解决方案 方案 ...
- PHP实现批量删除(封装)
前台 <!DOCTYPE html> <html> <head> <title>批量删除</title> </head> < ...
- 一些css属性的理解和运用。
1,弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器 常用flex来编写盒子横向分布; 一: flex-direction flex-directi ...
- 洛谷P2045 方格取数加强版(费用流)
题意 题目链接 Sol 这题能想到费用流就不难做了 从S向(1, 1)连费用为0,流量为K的边 从(n, n)向T连费用为0,流量为K的边 对于每个点我们可以拆点限流,同时为了保证每个点只被经过一次, ...
- 【读书笔记】iOS-网络-Web Service协议与风格
协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...
- 如何在Oracle数据库中查看哪些用户在执行哪些SQL
对于DBA来说,这是一个非常常见的问题,DBA需要找出以下问题: 1.哪些用户在跑哪些SQL? 2.一个特定的SQL是被哪个用户在执行? 3.一个特定的用户在跑哪些SQL? 从这些问题中可以很明显的看 ...