qscoj:喵哈哈村的冒菜店(线段树区间合并)
喵哈哈村的冒菜店
发布时间: 2017年3月19日 16:00 最后更新: 2017年3月19日 16:01 时间限制: 1000ms 内存限制: 128M
喵哈哈村的冒菜店开张了,这里的冒菜特别好吃。
星星同学听闻后,就准备去吃冒菜。
星星同学开着自己才花了几十万买的宝马X5,就开进了冒菜店的停车场。
就在她停车的过程中,她发现一个有趣的现象,喵哈哈村的人们总是喜欢停车停在离别人车最远的地方,具体来说就是停在离所有车的距离最小值最大的位置,如果有多个,他们就喜欢停在编号小的位置上。
现在星星同学有一个疑问了:
这个停车场可以看做是拥有一排的停车位,这些停车位编号为1~n,初始都是空的。
如果有若干个汽车进进出出这停车场,那么这些汽车会停在哪些位置呢?
第一行两个整数n,m,表示停车场大小和操作数。
接下来m行,每行两个整数F和x。
F是1表示编号为x的车进停车场。
F是2表示编号为x的车出停车场。
保证操作合法。
满足n,m<=200000,x<=1000000
对于所有操作1,输出一个整数,表示该车车位的编号。
7 11 1 15 1 123123 1 3 1 5 2 123123 2 15 1 21 2 3 1 6 1 7 1 8
1 7 4 2 7 4 1 3
题目:http://qscoj.cn/problem/48/
题解:http://www.cnblogs.com/qscqesze/p/6580390.html
#include<stdio.h>
typedef struct
{int x, y;int v, id;
}Tree;
Tree s[888888];
int car[1000005];
void Atonce(int p)
{if(s[p*2].x>0)s[p].x = s[p*2].x;elses[p].x = s[p*2+1].x;if(s[p*2+1].y>0)s[p].y = s[p*2+1].y;elses[p].y = s[p*2].y;s[p].v = s[p*2].v, s[p].id = s[p*2].id;if(s[p*2].y>0 && s[p*2+1].x>0 && (s[p*2+1].x-s[p*2].y)/2>s[p].v)s[p].v = (s[p*2+1].x-s[p*2].y)/2, s[p].id = (s[p*2+1].x+s[p*2].y)/2;if(s[p*2+1].v>s[p].v)s[p].v = s[p*2+1].v, s[p].id = s[p*2+1].id;
}
void Update(int l, int r, int loc, int p, int type)
{int m;m = (l+r)/2;if(l==r){s[p].x = s[p].y = type*r;return;}if(loc<=m)Update(l, m, loc, p*2, type);elseUpdate(m+1, r, loc, p*2+1, type);Atonce(p);
}
int main(void)
{int n, m, t, k;scanf("%d%d", &n, &m);while(m--){scanf("%d%d", &t, &k);if(t==1){if(s[1].x==0)car[k] = 1;else{if(s[1].x-1>=s[1].v && s[1].x-1>=n-s[1].y)car[k] = 1;else if(s[1].v>=n-s[1].y)car[k] = s[1].id;elsecar[k] = n;}printf("%d\n", car[k]);Update(1, n, car[k], 1, 1);}elseUpdate(1, n, car[k], 1, 0);}return 0;
}
qscoj:喵哈哈村的冒菜店(线段树区间合并)相关推荐
- 树链剖分——线段树区间合并bzoj染色
线段树区间合并就挺麻烦了,再套个树链就更加鬼畜,不过除了代码量大就没什么其他的了.. 一些细节:线段树每个结点用结构体保存,pushup等合并函数改成返回一个结构体,这样好写一些 struct Seg ...
- SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并
Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...
- Tunnel Warfare(HDU1540+线段树+区间合并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540 题目: 题意:总共有n个村庄,有q次操作,每次操作分为摧毁一座村庄,修复一座村庄,和查询与询问的 ...
- CodeForces - 1539F Strange Array(线段树区间合并)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,规定位置 iii 的贡献是:设 x=a[i]x=a[i]x=a[i],选择一个包含 iii 的区间 [l,r][l,r][l,r],将其中 ...
- 牛客 - 求函数(线段树+区间合并/线段树+矩阵维护)
题目链接:点击查看 题目大意:现在有 n 个函数,每个函数都是诸如 f( x ) = k * x + b 的形式,只是每个函数的 k 和 b 都是相互独立的,现在给出两个操作: 1 pos k b:将 ...
- 2021牛客暑期多校训练营7 xay loves monotonicity 线段树区间合并
传送门 文章目录 题意: 思路: 题意: 题面挺绕口的,还是看原题比较好. 大概的意思就是让你从给定的区间中选择一个以左端点为起点的一个上升子序列,让后将这些下标存下来,在bbb中将这些位置拿出来后, ...
- poj-3667(线段树区间合并)
题目链接:传送门 参考文章:传送门 思路:线段树区间合并问题,每次查询到满足线段树的区间最左值,然后更新线段树. #include<iostream> #include<cstdio ...
- HDU3308 线段树区间合并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 ,简单的线段树区间合并. 线段树的区间合并:一般是要求求最长连续区间,在PushUp()函数中实 ...
- HDU1540(线段树区间合并)
很经典的一道题,线段树区间合并非常好的一道入门题,每个节点保存区间连续1的最大左串长度,最大右串长度,以及区间最大长度(常规的三种信息维护),更新操作时注意push_up函数,针对不同的问题,push ...
最新文章
- 独家 | 一文读懂Corda分布式记账技术
- Python多线程中阻塞(join)与锁(Lock)的使用误区
- img 标签 访问图片 返回403 forbidden问题
- Java集合框架:总结
- MySQL学习笔记7:基本查询
- python 类装饰器
- UserDetailsService详解
- 设计模式之抽象状态模式
- matlab实现参数方程求导(paradiff函数)
- 基于Zynq的光流法软硬件协同实现
- 银耳椰椰——Alpha冲刺Day05
- 2021年数据中台行业十大关键词
- 如何修改知乎绑定的手机号(2021)
- 客户成功案例 | 从半导体到终端产品:恩智浦(NXP),利用数据驱动“移动”未来
- 03 JavaScript的学习笔记
- linux查看日志常用命令
- 学习mybatis第一天
- 计算机命令退出,用cmd命令来关闭或重启电脑。
- 如何使用Endnote修改参考文献格式,自定义参考文献样式
- Unicode和字符集
热门文章
- python免费课程400节-海口少儿Python编程语言培训机构
- 接管客厅第一步:联想智能音箱体验评测
- 准备学习研究一下语音识别 请问有哪些值得推荐的书籍 论文 及开源库?
- 计算机装机比赛感想,装机赛 篇一:一次雨露均沾的装机比赛
- 使用vue-qriously插件,在vue项目中生成二维码
- 查看openfrie是否连接mysql_openfire连接mysql数据库的字符集问题解决
- python 在线编程 实现_Python进阶开发之网络编程,socket实现在线聊天机器人
- 支持Linux系统恢复工具,12款Linux系统恢复工具
- C# CookieHelper帮助类
- zookeeper集群节点热扩容和迁移详解