还是对题目的挖掘不够深入、

一上来看到范围在b~3b之间就感觉非常可疑,一定是3b符合某个很好的性质

还有省会的选取也非常奇特,于是猜测:节点作为省会,剩下的子树小于b的组合,,

然后当时还想到了如果一个子树大小超过b,那他是可以拿出size-b的大小来给其他子树的、

所以就考虑如何用<b的子树和<=size-b的空隙来尽量使子树填满、

于是就构造了一个isa说没有多项式做法的东西、、

其实这个3*b还是很有讲究的,想了半天才明白

对于一个节点,我们只需考虑size<b的子树(size>b的话一定可以独立分配完)。。所以我们最坏情况会留下一个size<b的子树没有分配

这时其他的一合并的集合一定小于2b(<b+<b    <2b)    我们可以往上走,就算上面不给空间了,我们随便找一个下面的集合再加上(<2b+<b  <3b)也是合法的

所以这个3b其实非常的好,,就完全不需要一些决策了(如果是2b似乎就是np了、)

码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#include<queue>
#define N 500005
int sy[N],tot,hou[N],xia[N],zhong[N],b,sh[N],n;
queue<int>q[N>>2];
void jian(int x,int y)
{++tot,hou[tot]=xia[x];xia[x]=tot;zhong[tot]=y;
}
void jia(int x,int y)
{jian(x,y);jian(y,x);
}
void dfs(int o,int fu)
{int lin=0;int i;for(i=xia[o];i!=-1;i=hou[i]){int nd=zhong[i];if(nd==fu)continue;dfs(nd,o);while(!q[nd].empty()){q[o].push(q[nd].front());q[nd].pop();       }if(q[o].size()>=b){  ++tot;sh[tot]=o;while(!q[o].empty())   {sy[q[o].front()]=tot;q[o].pop();}}}   q[o].push(o);
}
int main()
{   int i,x,y;memset(xia,-1,sizeof(xia));scanf("%d%d",&n,&b);for(i=1;i<n;i++){scanf("%d%d",&x,&y);jia(x,y);       }tot=0;dfs(1,1);while(!q[1].empty()){sy[q[1].front()]=tot;q[1].pop();}printf("%d\n",tot);for(i=1;i<=n;i++)printf("%d ",sy[i]);printf("\n");for(i=1;i<=tot;i++)printf("%d ",sh[i]);
}

2017.9.2 王室联邦 失败总结相关推荐

  1. [SCOI2005]王室联邦

    [SCOI2005]王室联邦 类似树分块 >=B,并且<=3B 直接dfs,用一个全局栈记录未规定省份的元素 dfs(y)上来,如果栈内元素>=B,就弹出来变成一个省,并且省会是x( ...

  2. bzoj 1086: [SCOI2005]王室联邦

    Description "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理.他的国家有n个城市,编号为1..n.一些城市之间有 ...

  3. BZOJ1086 [SCOI2005]王室联邦 【dfs + 贪心】

    题目 "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成 员来管理.他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两 ...

  4. 【BZOJ1086】[SCOI2005]王室联邦 树分块

    [BZOJ1086][SCOI2005]王室联邦 Description "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理. ...

  5. BZOJ1086:[SCOI2005]王室联邦——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1086 题面源于洛谷. 题目描述 "余"人国的国王想重新编制他的国家.他想把他的国 ...

  6. bzoj1086[SCOI2005]王室联邦

    传送门 Description "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成 员来管理.他的国家有n个城市,编号为1..n.一些 ...

  7. 【BZOJ】【1086】 【SCOI2005】王室联邦

    树分块 orz vfk && PoPoQQQ http://vfleaking.blog.163.com/blog/static/174807634201231684436977/ h ...

  8. BZOJ 1086: [SCOI2005]王室联邦( )

    其实合法方案一定存在....(B <= N), 构造答案就可以了...然而我是看题解才会的..... ---------------------------------------------- ...

  9. 1086: [SCOI2005]王室联邦

    (大概 打了5天比赛   学习计划 树上莫队一直都没来得及学 今天做了第一道树上分块的题  写挂了5,6次  许多细节没有注意到  慢慢改才发现 orz 继续加油 1086: [SCOI2005]王室 ...

最新文章

  1. 华为:N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求
  2. Scrapy学习-24-集成elasticsearch
  3. mysql忘了root密码_mysql忘记root密码怎么办
  4. Javascript Throttle Debounce
  5. 日语2级语法总结--非190个语法点
  6. SAP Spartacus b2b表格的cell配置解析逻辑
  7. 如何写登录的记住账号
  8. 微软公司将在英国开设三个数据中心
  9. Csharp: create Transparent Images in winform
  10. HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了...
  11. Java经典设计模式(1):五大创建型模式(附实例和详解)
  12. 中控考勤机无线连接不上服务器,中控考勤机安装及常见问题【图解】
  13. 数据库常见导入文件方法
  14. Knockout.js入门级
  15. ubuntu中安装pdf虚拟打印机
  16. unity5.6.5_5.6现在可用并完成了Unity 5周期
  17. 免密登录 蹩脚的“脚本”
  18. bch verilog代码_基于FPGA的多进制BCH编码
  19. matlab中的regress函数总结
  20. Spring Cloud Alibaba 微服务详细笔记

热门文章

  1. Kotlin学习笔记25 协程part5 协程的同步与异步
  2. Android笔记 Android客户端从服务器获取源码乱码demo
  3. Excel中快速调整行高或列宽为适合内容显示的长度
  4. LeetCode-114: 二叉树展开为链表
  5. 卡尔曼滤波对gps轨迹数据清洗_基于GPS的智能交通系统车辆定位精度提升技术
  6. GraphX主要的接口详解
  7. dw上的php代码如何预览在浏览器_13个面向开发人员的JavaScript代码编辑器和IDE
  8. idea 无效的目标发行版_maven构建异常(无效的目标发行版: 1.8)
  9. mybatis mysql5.7_【mysql】mysql5.7支持的json字段查询【mybatis】
  10. 【论文阅读】Drug Similarity Integration Through Multi-view Graph Auto-Encoders | day4、5