K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系等等的存在.所谓N边关系,是指N个人 A1A2...An之间仅存在N对认识关系:(A1A2)(A2A3)...(AnA1),而没有其它认识关系.比如四边关系指ABCD四个人 AB,BC,CD,DA相互认识,而AC,BD不认识.全民比赛时,为了防止做弊,规定任意一对相互认识的人不得在一队,国王相知道,最少可以分多少支队。

很显然,题目给出一个有特殊限制的图,求它的最小染色数。

这道题的关键是这个有特殊限制的图是弦图。一般图的最小染色是 NP 问题,而弦图是可以贪心染色的。也就是说,每次选一个已染色相邻点个数最大的未染色点进行染色。为什么是正确的呢?好像是因为这样做模拟了弦图的完美消除序列生成的方式,而弦图的完美消除序列中从后往前边选边删所有点与其相邻点集构成一个团,所以这样保证了染色是正确的。

随便写了一个堆,竟然在 bzoj 上跑了第四。。。

Code :

#include <cstdio>
#include <cstdlib>
#include <cstring>#define maxn 10007
#define maxm 2000007void getint(int & a)
{char c = getchar();while ('0' > c || c > '9') c = getchar();a = c - '0', c = getchar();while ('0' <= c && c <= '9') a = a * 10 + c - '0', c = getchar();
}void swap(int & a, int & b) {int c = a; a = b, b = c;}struct da{int t; da * n;} ve[maxm], * adj = ve, * edge[maxn];
int n, m, top, tot, ans;
int a[maxn], h[maxn], d[maxn], to[maxn];void up(int p)
{for (; p >> 1 && d[h[p]] > d[h[p >> 1]]; p >>= 1)swap(h[p], h[p >> 1]), to[h[p]] = p;to[h[p]] = p;
}void down(int p)
{for (int q; p << 1 <= tot; p = q){if (p << 1 == tot) q = tot;else q = d[h[p << 1]] > d[h[p << 1 | 1]] ? p << 1 : p << 1 | 1;if (d[h[q]] > d[h[p]]) swap(h[p], h[q]), to[h[p]] = p;else break;}to[h[p]] = p;
}int main()
{freopen("kingdom.in", "r", stdin);freopen("kingdom.out", "w", stdout);int i, j, k; da * e;for (getint(n), getint(m), k = m; k; -- k){getint(i), getint(j);* ++ adj = (da) {j, edge[i]}, edge[i] = adj;* ++ adj = (da) {i, edge[j]}, edge[j] = adj;}for (i = 1; i <= n; ++ i) h[i] = to[i] = i;for (i = 1, tot = n; i <= n; ++ i){a[++ top] = h[1], h[1] = h[tot --], down(to[h[1]] = 1);if (d[a[top]] > ans) ans = d[a[top]];for (e = edge[a[top]]; e; e = e->n) ++ d[e->t], up(to[e->t]);}printf("%d\n", ans + 1);return 0;
}

[HNOI 2008] 神奇的国度 kingdom相关推荐

  1. [HNOI2008]神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec  Memory Limit: 162 MB [Submit][Status][Discuss] Description ...

  2. 弦图与完美消除序列(bzoj 1006: [HNOI2008]神奇的国度)

    诱导子图:子图中任意一条边的两个端点一定也都在这个子图中 最大团:团中任意两点之间一定都有边,而包含顶点最多的团就是最大团 最小团覆盖:用最少的团覆盖图中所有的点 最大独立集:独立集中任意两点之间一定 ...

  3. BZOJ 1006: [HNOI2008]神奇的国度( MCS )

    弦图最小染色...先用MCS求出完美消除序列然后再暴力染色... ------------------------------------------------------------------- ...

  4. 【BZOJ 1006】 [HNOI2008]神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec   Memory Limit: 162 MB Submit: 2000   Solved: 897 [ Submit] ...

  5. BZOJ1006神奇的国度

    1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MB Submit: 2789 Solved: 1255 Description ...

  6. P3196 [HNOI2008]神奇的国度(弦图的最小染色问题)

    整理的算法模板合集: ACM模板 题目传送门 K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国 ...

  7. 神奇的国度(HYSBZ-1006)

    Problem Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K国禁止 ...

  8. 解题:HNOI 2008 玩具装箱

    题面 搞了一晚上斜率优化,大概懂了一点,写写 原来常用的优化dp方法:做前缀和,预处理,数据结构维护 现在有转移方程长这样的一类dp:$dp[i]=min(dp[i],k[i]*x[j]+y[j]+c ...

  9. BZOJ 1006 神奇的国度(弦图的染色数)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...

最新文章

  1. 数组-丢失的数字(哈希表法)
  2. MATLAB怎么表示均布荷载,MATLAB平面四节点等参元分析程序说明
  3. TiDB 源码阅读系列文章(十八)tikv-client(上) 1
  4. 2019三星比2018好在哪_2019年全球可穿戴设备销量榜:苹果第一小米第二,华为排名很给力...
  5. python类的应用_python中文件类的应用
  6. 解决安装软件时出现的error1723,以安装破解版Endnote X9为例(附资源)
  7. Code Smell 检测工具调研
  8. GAE+bottle+jinja2+beaker快速开发demo - Python,GAE - language - ITeye论坛
  9. FPGA 学习笔记(十一) VGA驱动的实现
  10. Python文件读写模式与光标的移动
  11. eclipse32位安装教程_Maya2015 (64位) 软件安装教程
  12. 女人喜欢大男人还是小男人
  13. 点云缩放—python open3d
  14. 2023MyBatis全新面试题【30题】
  15. yii2.0域名目录绑定(二级域名)以及url美化 url伪静态 Apache ,Ngnix和 IIS
  16. 2.8 CSS3新特性
  17. iOS AppStore上架流程图文详解​
  18. 3个iPhone设置让你成为“人类高质量iPhone用户”
  19. java代码实现excel文件数据导入
  20. centos上安装和卸载mysql

热门文章

  1. git远程分支强制覆盖本地分支
  2. 一篇很好的EDP入门介绍文章——了解AUX,PSR,ASSR 以及EDP版本的差异
  3. 全网首发!老大众奥迪碟盒通信协议破解,可以模拟数码碟盒,外接AUX蓝牙U盘等音频设备
  4. 计算机基础常用缩略语
  5. 【解决】ocam录制失败。 导致: WASRecord: pAudioClient- Initialize failed. (hr=0x80070005
  6. 苹果cms重复采集重名视频解决方法
  7. 开发小组共同使用协同文档
  8. opencv+directshow采集视频图像
  9. python计算导数_python计算导数并绘图的实例
  10. 三子棋(井字棋) 保姆级详解