[Bzoj5179][Jsoi2011]任务调度(左偏树)
5179: [Jsoi2011]任务调度
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 5 Solved: 4
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
ADD
ADD
MIN
WORK
TRANS
MIN
ADD
TRANS
MIN
DEC
MIN
DEC
WORK
Sample Output
-
ERROR
分析:
裸裸的可并堆题,用左偏树乱搞即可
代码:
# include <iostream>
# include <cstdio>
# include <algorithm>
using namespace std;
const int N = 3e5 + ;
int d[],n,m,k;
struct node{
int w,d,lc,rc,fa;
}t[N];
int merge(int x,int y)
{
if(!x)return y;
if(!y)return x;
if(t[x].w > t[y].w)swap(x,y);
t[x].rc = merge(t[x].rc,y);
t[t[x].rc].fa = x;
if(t[t[x].rc].d > t[t[x].lc].d)swap(t[x].rc,t[x].lc);
t[x].d = t[t[x].rc].d + ;
return x;
}
void erase(int x,int y,int z)
{
int u = merge(t[y].lc,t[y].rc),g = t[y].fa;
if(d[x] == y)d[x] = u;
if(t[g].lc == y)t[g].lc = u;
else if(t[g].rc == y)t[g].rc = u;
t[u].fa = g;t[y].lc = t[y].rc = t[y].fa = t[y].d = ;
t[y].w += z;
d[x] = merge(d[x],y);
}
int main()
{
scanf("%d %d %d",&n,&m,&k);char ch[];int x,y,z;
while(k--)
{
scanf("%s",ch);
if(ch[] == 'A')
{
scanf("%d %d %d",&x,&y,&z);
t[y].w = z;
d[x] = merge(d[x],y);
}
if(ch[] == 'D')
{
scanf("%d %d %d",&x,&y,&z);
erase(x,y,-z);
}
if(ch[] == 'T')
{
scanf("%d %d",&x,&y);
d[y] = merge(d[x],d[y]);
d[x] = ;
}
if(ch[] == 'M')
{
scanf("%d",&x);
printf("%d\n",t[d[x]].w);
}
if(ch[] == 'W')
{
scanf("%d %d",&x,&y);
bool flag = true;int l = t[d[x]].lc,r = t[d[x]].rc;
if(l && t[l].w == t[d[x]].w)flag = false;
if(r && t[r].w == t[d[x]].w)flag = false;
if(flag)erase(x,d[x],y);
else puts("ERROR");
}
}
}
[Bzoj5179][Jsoi2011]任务调度(左偏树)的更多相关文章
- BZOJ 1455 罗马游戏 ——左偏树
[题目分析] 左偏树的模板题目,大概就是尽量维护树的深度保持平衡,以及尽可能的快速合并的一种堆. 感觉和启发式合并基本相同. 其实并没有快很多. 本人的左偏树代码自带大常数,借鉴请慎重 [代码] #i ...
- 【BZOJ-1455】罗马游戏 可并堆 (左偏树)
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1355 Solved: 561[Submit][Status][Discuss] ...
- 【bzoj2809】[Apio2012]dispatching 左偏树
2016-05-31 15:56:57 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2809 直观的思想是当领导力确定时,尽量选择薪水少的- ...
- zoj 2334 Monkey King/左偏树+并查集
原题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1389 大致题意:N只相互不认识的猴子(每只猴子有一个战斗力值) 两只 ...
- POJ3016-K-Monotonic(左偏树+DP)
我觉得我要改一下签名了……怎么会有窝这么啰嗦的人呢? 做这题需要先学习左偏树<左偏树的特点及其应用> 然后做一下POJ3666,这题的简单版. 思路: 考虑一下维护中位数的过程原数组为A, ...
- POJ3666-Making the Grade(左偏树 or DP)
左偏树 炒鸡棒的论文<左偏树的特点及其应用> 虽然题目要求比论文多了一个条件,但是……只需要求非递减就可以AC……数据好弱…… 虽然还没想明白为什么,但是应该觉得应该是这样——求非递减用大 ...
- bzoj 1455: 罗马游戏 左偏树+并查集
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 668 Solved: 247[Submit][Status] Descriptio ...
- 左偏树(Leftist Heap/Tree)简介及代码
左偏树是一种常用的优先队列(堆)结构.与二叉堆相比,左偏树可以高效的实现两个堆的合并操作. 左偏树实现方便,编程复杂度低,而且有着不俗的效率表现. 它的一个常见应用就是与并查集结合使用.利用并查集确定 ...
- 黄源河《左偏树的应用》——数字序列(Baltic 2004)
这道题哪里都找不到. [问题描述] 给定一个整数序列a1, a2, … , an,求一个不下降序列b1 ≤ b2 ≤ … ≤ bn,使得数列{ai}和{bi}的各项之差的绝对值之和 |a1 - b1| ...
随机推荐
- Android手机app耗电量测试工具 - Gsam Battery Monitor
这段时间需要测试一个Android手机app的耗电量,在网上找了一个工具,Gsam Battery Monitor,觉得挺好用,和大家分享一下. 安装app后打开,可以看到主界面是这样的 点击一下上图 ...
- JavaScript 字符串与数字的相互转换
js字符串转换成数字 js 字符串转换数字方法主要有三种:转换函数.强制类型转换.利用JS变量弱类型特点进行转换 1. 转换函数:js提供了parseInt()和parseFloat()两个转换函数. ...
- 我来说说java的NIO
Java NIO的出现旨在提高文件的读写速度,当然IO用NIO重新实过,所以我们不用显示的调用NIO也能享受这种高效的文件读写. Java NIO的高效得益于其两大"助手":C ...
- linux截图工具
推荐:deepin-scrot 满足功能: 能够自定义快捷键(Ctrl+Alt+A) 小巧快速自定义选择区域进行截图 有简单的绘图功能 可以快速的保存到剪切版(双击图片) P.S.:双重截图
- Android(java)学习笔记184:多媒体之 MediaPlayer使用
MediaPlayer类可用于控制音频/视频文件或流的播放.关于如何使用这个类的方法还可以阅读VideoView类的文档. 1.MediaPlayer 状态图 对播放音频/视频文件和流的控 ...
- VBA Promming——入门教程
VBA Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言.主要能用来 ...
- vue 异步请求数据后,用v-if,显示组件,这样初始化的值就在开始的时候传进去了
请求到数据才会有的一个组件,并把数据传进组件中 https://www.cnblogs.com/LuckyWinty/p/6246698.html
- 去除ie下select框箭头
select::-ms-expand { display: none;}兼容ie10及以上
- 深搜DFS
POJ-1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有 ...
- 5. 在Datadir目录外创建单独表空间
5. 在Datadir目录外创建单独表空间 要在MySQL dadadir之外的位置创建单独表空间,请使用该子句: DATA DIRECTORY = '/path' 在目标目录中,MySQL会创建一个 ...