1、题目大意:维护一个数据结构,可以实现合并操作,还能询问最小值

2、分析:这种问题当然是可并堆啦

随便写了一个左偏树QAQ

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. #define M 1200000
  7. struct merge_heap{
  8. int l[M], r[M], d[M], value[M];
  9. void init(){
  10. memset(l, 0, sizeof(r));
  11. memset(r, 0, sizeof(r));
  12. memset(d, 1, sizeof(d));
  13. }
  14. int merge(int x, int y){
  15. if(!x) return y;
  16. if(!y) return x;
  17. if(value[x] > value[y]) swap(x, y);
  18. r[x] = merge(r[x], y);
  19. if(d[l[x]] < d[r[x]]){
  20. swap(l[x], r[x]);
  21. }
  22. d[x] = d[l[x]] + 1;
  23. return x;
  24. }
  25. } wt;
  26. int fa[M], tree[M], died[M];
  27. int find(int x){
  28. if(fa[x] == x) return x;
  29. int k = find(fa[x]);
  30. fa[x] = k;
  31. return k;
  32. }
  33. int main(){
  34. int n, m;
  35. scanf("%d", &n);
  36. wt.init();
  37. for(int i = 1; i <= n; i ++){
  38. scanf("%d", &wt.value[i]);
  39. fa[i] = i;
  40. tree[i] = i;
  41. }
  42. scanf("%d", &m);
  43. char str[5];
  44. int a, b;
  45. for(int i = 1; i <= m; i ++){
  46. scanf("%s", str);
  47. if(str[0] == 'M'){
  48. scanf("%d%d", &a, &b);
  49. if(died[a] || died[b]) {
  50. continue;
  51. }
  52. if(find(a) != find(b)){
  53. int af = find(a), bf = find(b);
  54. fa[af] = bf;
  55. tree[bf] = wt.merge(tree[af], tree[bf]);
  56. }
  57. }
  58. else{
  59. scanf("%d", &a);
  60. if(died[a]){
  61. printf("0\n");
  62. continue;
  63. }
  64. int af = find(a);
  65. died[tree[af]] = 1;
  66. printf("%d\n", wt.value[tree[af]]);
  67. tree[af] = wt.merge(wt.l[tree[af]], wt.r[tree[af]]);
  68. }
  69. }
  70. return 0;
  71. }

BZOJ1455——罗马游戏的更多相关文章

  1. [bzoj1455]罗马游戏_左偏树_并查集

    罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...

  2. [BZOJ1455]罗马游戏 左偏树+并查集

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 2285  Solved: 994[Submit][Status][Discuss] ...

  3. Bzoj1455 罗马游戏

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1622  Solved: 679 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人 ...

  4. 【数据结构】bzoj1455罗马游戏

    Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻 ...

  5. bzoj1455: 罗马游戏 + bzoj2809: Dispatching(可并堆)

    昨天看了可并堆是什么,写的是左偏树 大概就是一棵树 1.有左偏性质,即当前根到左叶子节点距离比到右叶子节点距离大 2.有堆性质,堆顶关键字比子树关键字小 合并两个堆的时候,关键字大的插入到关键字小的那 ...

  6. BZOJ1455 罗马游戏 左偏树 可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1455 题意概括 n个人,2种操作. 一种是合并两个人团,一种是杀死某一个人团的最弱的人. 题解 左 ...

  7. [BZOJ1455]罗马游戏(左偏树)

    用并查集和左偏树维护士兵的关系 Code #include <cstdio> #include <algorithm> #define N 1000010 using name ...

  8. BZOJ1455罗马游戏

    左偏树裸题. 题面描述让人意识到了平面几何的重要性. //Achen #include<algorithm> #include<iostream> #include<cs ...

  9. 【BZOJ1455】罗马游戏(左偏树)

    [BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...

随机推荐

  1. BPEL 实例教程

    http://www.oracle.com/technetwork/cn/articles/matjaz-bpel1-090722-zhs.html BPEL 实例教程 作者:Matjaz Juric ...

  2. nginx的在linux系统中的安装

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. n  gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果 ...

  3. ORACLE查看并修改session和连接最大数

    第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show parameter processes NA ...

  4. IE6完美解决fix问题

    解决代码: _position: absolute; _top: expression(documentElement.scrollTop + + "px"); 完整代码: kef ...

  5. Podfile升级后的影响

    之前项目里用的Podfile都是版本 0.39 后面有一天电脑格盘重装以后cocoapods装的版本是 1.0.0.beta.6 那么问题来了,在下载或者clone一下项目后,经常是需要自己安装第三方 ...

  6. (转载)iOS UILabel自定义行间距时获取高度

    本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel 附下载地址 https://github.com/TTTAttrib ...

  7. Django笔记-post与get方法相关出错记录

    1.刚刚调试一个注册的程序,blog.views.register里用了return HttpResponse方法返回了一个注册页面 register.html,后者用了method = " ...

  8. Hibernate整合C3P0实现连接池

    Hibernate整合C3P0实现连接池 hibernate中可以使用默认的连接池,无论功能与性能都不如C3PO(网友反映,我没有测试过),C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI ...

  9. SQL查询表字段的信息

    如题,代码: select * from information_schema.columns where table_name = 'TableName'

  10. [EWS]在exchange中的标识符

    摘要 最近在用ews的方式开发邮箱服务,包括写邮件,查看某封邮件的详情,回复,全部回复及转发功能.在获取收件箱的时候,关于唯一标识符的问题.也有点困惑,在每个邮件item中,存在一个changeKey ...