bzoj 1006: [HNOI2008]神奇的国度
这是个标准的弦图,但如果不知道弦图就惨了=_=
趁着这个机会了解了一下弦图,主要就是完美消除序列,求出了这个就可以根据序列进行贪心染色。
貌似这个序列很神,但是具体应用不了解……
这道题为什么可以这么做不理解……
我真是太弱了……
上代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <queue>
#define N 100100
#define M 2000100
using namespace std;
struct sss
{
int num;
int du;
};
int n, m;
int p[N] = {}, next[M], v[M], bnum = ;
int du[N] = {}, vis[N] = {}, qu[N];
priority_queue<sss> q;
int hcolor[N] = {}, color[N] = {}, colornum = , huse[N] = {}; bool operator < (sss x, sss y)
{
return x.du < y.du;
} void addbian(int x, int y)
{
bnum++; next[bnum] = p[x]; p[x] = bnum; v[bnum] = y;
bnum++; next[bnum] = p[y]; p[y] = bnum; v[bnum] = x;
} void make_queue()
{
for (int i = ; i <= n; ++i)
{
sss x; x.num = i; x.du = ;
q.push(x);
}
int dc = ;
while (dc < n)
{
sss y = q.top(); q.pop();
while (vis[y.num])
{
y = q.top();
q.pop();
}
vis[y.num] = ;
qu[++dc] = y.num;
int k = p[y.num]; sss ne;
while (k)
{
if (!vis[v[k]])
{
du[v[k]]++; ne.du = du[v[k]];
ne.num = v[k]; q.push(ne);
}
k = next[k];
}
}
} void color_dian()
{
for (int i = ; i <= n; ++i)
{
int x = qu[i];
int k = p[x];
int all = ;
while (k)
{
if (color[v[k]] != ) all = ;
huse[color[v[k]]] = x;
k = next[k];
}
int pd = ;
for (int i = ; i <= colornum; ++i)
if (huse[i] != x)
{
pd = ;
color[x] = i;
break;
}
if (!pd) color[x] = ++colornum;
}
printf("%d\n", colornum);
} int main()
{
scanf("%d%d", &n, &m);
for (int i = ; i <= m; ++i)
{
int x, y; scanf("%d%d", &x, &y);
addbian(x, y);
}
make_queue();
color_dian();
return ;
}
bzoj 1006: [HNOI2008]神奇的国度的更多相关文章
- BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)
题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K 国禁止四边关系,五边关系等 ...
- 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]神奇的国度 弦图+完美消除序列+最大势算法
[HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 4370 Solved: 2041[Submit][Status][D ...
- [BZOJ 1006] [HNOI2008] 神奇的国度 【弦图最小染色】
题目链接: BZOJ - 1006 题目分析 这道题是一个弦图最小染色数的裸的模型. 弦图的最小染色求法,先求出弦图的完美消除序列(MCS算法),再按照完美消除序列,从后向前倒着,给每个点染能染的最小 ...
- ●BZOJ 1006 [HNOI2008]神奇的国度(弦图最小染色数)○ZOJ 1015 Fishing Net
●赘述题目 给出一张弦图,求其最小染色数. ●题解 网上的唯一“文献”:<弦图与区间图>(cdq),可以学习学习.(有的看不懂) 摘录几个解决改题所需的知识点: ●子图和诱导子图(一定要弄 ...
- BZOJ 1006 [HNOI2008]神奇的国度==最大势算法
神奇的国度 K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在. ...
- BZOJ 1006: [HNOI2008]神奇的国度(弦图染色)
http://www.lydsy.com/JudgeOnline/problem.php?id=1006 题意: 思路: 这个就是弦图染色问题,弦图啥的反正我也不懂,具体看论文https://wenk ...
随机推荐
- mysql 线程级别的缓冲区
线程栈信息使用内存(thread_stack) 主要用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一个线程栈分配多大的内存 ...
- Java核心技术卷二部分笔记
第1章 流与文件 1.2 文本输入与输出 第3章 网络 3.3 可中断套接字 第4章 数据库编程 4.5.2 读写LOB 4.6 可滚动和可更新的结果集 4.8 元数据 第6章 高级Swing 6.1 ...
- 终端I/O之终端选项标志
http://www.cnblogs.com/nufangrensheng/p/3575752.html 中的表18-1至表18-4中列出的所有选项标志(除屏蔽标志外)都用一位或几位(设置或清除)表示 ...
- 话说C语言const用法
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable). 我们来分情况看语法上它该如何被使用. 1.函数体内修饰局部变量. 例: void ...
- The Kernel Newbie Corner: Kernel Debugging with proc "Sequence" Files--Part 3
转载:https://www.linux.com/learn/linux-career-center/44184-the-kernel-newbie-corner-kernel-debugging-w ...
- Cows
Farmer John's cows have discovered that the clover growing along the ridge of the hill (which we can ...
- 【阿里云产品公测】利用PTS服务优化网站数据库读写性能
[阿里云产品公测]利用PTS服务优化网站数据库读写性能 作者:阿里云用户千鸟 写这个帖子主要也是因为在用PTS测试网站的时候,手动访问网站进入报错页面,主要原因是数据库连接对象存在问题,导致并发多的时 ...
- [Android]AndroidDesign中ActionBar探究1
概述 从Google IO 2013大会以来越来越多的Android应用开始遵循Android的设计风格,简单的就是google play和Gmail,在国内我们常用的软件像知乎.印象笔记,主要的界面 ...
- jQuery选择器之属性选择器Demo
测试代码: 06-属性选择器.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...
- 关于JSON的总结
本文总结自百度百科 JSON 语法规则 JSON 语法是 JavaScript 对象表示语法的子集. 数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对 JSON 数 ...