BZOJ1455——罗马游戏
1、题目大意:维护一个数据结构,可以实现合并操作,还能询问最小值
2、分析:这种问题当然是可并堆啦
随便写了一个左偏树QAQ
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- #define M 1200000
- struct merge_heap{
- int l[M], r[M], d[M], value[M];
- void init(){
- memset(l, 0, sizeof(r));
- memset(r, 0, sizeof(r));
- memset(d, 1, sizeof(d));
- }
- int merge(int x, int y){
- if(!x) return y;
- if(!y) return x;
- if(value[x] > value[y]) swap(x, y);
- r[x] = merge(r[x], y);
- if(d[l[x]] < d[r[x]]){
- swap(l[x], r[x]);
- }
- d[x] = d[l[x]] + 1;
- return x;
- }
- } wt;
- int fa[M], tree[M], died[M];
- int find(int x){
- if(fa[x] == x) return x;
- int k = find(fa[x]);
- fa[x] = k;
- return k;
- }
- int main(){
- int n, m;
- scanf("%d", &n);
- wt.init();
- for(int i = 1; i <= n; i ++){
- scanf("%d", &wt.value[i]);
- fa[i] = i;
- tree[i] = i;
- }
- scanf("%d", &m);
- char str[5];
- int a, b;
- for(int i = 1; i <= m; i ++){
- scanf("%s", str);
- if(str[0] == 'M'){
- scanf("%d%d", &a, &b);
- if(died[a] || died[b]) {
- continue;
- }
- if(find(a) != find(b)){
- int af = find(a), bf = find(b);
- fa[af] = bf;
- tree[bf] = wt.merge(tree[af], tree[bf]);
- }
- }
- else{
- scanf("%d", &a);
- if(died[a]){
- printf("0\n");
- continue;
- }
- int af = find(a);
- died[tree[af]] = 1;
- printf("%d\n", wt.value[tree[af]]);
- tree[af] = wt.merge(wt.l[tree[af]], wt.r[tree[af]]);
- }
- }
- return 0;
- }
BZOJ1455——罗马游戏的更多相关文章
- [bzoj1455]罗马游戏_左偏树_并查集
罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...
- [BZOJ1455]罗马游戏 左偏树+并查集
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 2285 Solved: 994[Submit][Status][Discuss] ...
- Bzoj1455 罗马游戏
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1622 Solved: 679 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人 ...
- 【数据结构】bzoj1455罗马游戏
Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻 ...
- bzoj1455: 罗马游戏 + bzoj2809: Dispatching(可并堆)
昨天看了可并堆是什么,写的是左偏树 大概就是一棵树 1.有左偏性质,即当前根到左叶子节点距离比到右叶子节点距离大 2.有堆性质,堆顶关键字比子树关键字小 合并两个堆的时候,关键字大的插入到关键字小的那 ...
- BZOJ1455 罗马游戏 左偏树 可并堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1455 题意概括 n个人,2种操作. 一种是合并两个人团,一种是杀死某一个人团的最弱的人. 题解 左 ...
- [BZOJ1455]罗马游戏(左偏树)
用并查集和左偏树维护士兵的关系 Code #include <cstdio> #include <algorithm> #define N 1000010 using name ...
- BZOJ1455罗马游戏
左偏树裸题. 题面描述让人意识到了平面几何的重要性. //Achen #include<algorithm> #include<iostream> #include<cs ...
- 【BZOJ1455】罗马游戏(左偏树)
[BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...
随机推荐
- BPEL 实例教程
http://www.oracle.com/technetwork/cn/articles/matjaz-bpel1-090722-zhs.html BPEL 实例教程 作者:Matjaz Juric ...
- nginx的在linux系统中的安装
1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境. n gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果 ...
- ORACLE查看并修改session和连接最大数
第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show parameter processes NA ...
- IE6完美解决fix问题
解决代码: _position: absolute; _top: expression(documentElement.scrollTop + + "px"); 完整代码: kef ...
- Podfile升级后的影响
之前项目里用的Podfile都是版本 0.39 后面有一天电脑格盘重装以后cocoapods装的版本是 1.0.0.beta.6 那么问题来了,在下载或者clone一下项目后,经常是需要自己安装第三方 ...
- (转载)iOS UILabel自定义行间距时获取高度
本文介绍一下自定义行间距的UILabel的高度如何获取,需要借助一下开源的UILabel控件:TTTAttributedLabel 附下载地址 https://github.com/TTTAttrib ...
- Django笔记-post与get方法相关出错记录
1.刚刚调试一个注册的程序,blog.views.register里用了return HttpResponse方法返回了一个注册页面 register.html,后者用了method = " ...
- Hibernate整合C3P0实现连接池
Hibernate整合C3P0实现连接池 hibernate中可以使用默认的连接池,无论功能与性能都不如C3PO(网友反映,我没有测试过),C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI ...
- SQL查询表字段的信息
如题,代码: select * from information_schema.columns where table_name = 'TableName'
- [EWS]在exchange中的标识符
摘要 最近在用ews的方式开发邮箱服务,包括写邮件,查看某封邮件的详情,回复,全部回复及转发功能.在获取收件箱的时候,关于唯一标识符的问题.也有点困惑,在每个邮件item中,存在一个changeKey ...