#线段树#洛谷 3988 [SHOI2013]发牌
分析
fake:此题不就是链表模拟题吗,我一开始还真这么想
貌似链表什么用都没有,根据题意很清楚,要找一个支持删除和查询区间第\(k\)大的数据结构
解释一下为什么题目可以转换为查询区间第\(k\)大,
如果记录一下上一次删除的位置(这里指的是排名)和总牌数,是不是可以从\(上一次删除位置+kth\)对总牌数取模以重新找到下一次查询的排名,这样周而复始
那这个数据结构要找什么呢平衡树
平衡树当然可以,但是我目前只敲过模板,所以还是算了
也可以用线段树,维护区间未被删除的数的个数,查询第\(k\)大时,如果左区间未被删除的数的个数不小于在当前区间的排名,那么往左边走,否则往右边走
时间复杂度是\(O(n \log n)\)。(当然可以用树状数组+倍增解决,时间复杂度相同)
然而跑得比多带一个log的树状数组+二分还要慢
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
int w[2800011],n;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline void build(int k,int l,int r){
if (l==r) {w[k]=1; return;}
rr int mid=(l+r)>>1;
build(k<<1,l,mid),build(k<<1|1,mid+1,r);
w[k]=w[k<<1]+w[k<<1|1];
}
inline void update(int k,int l,int r,int x){
if (l==r) {w[k]=0; return;}
rr int mid=(l+r)>>1;
if (x<=mid) update(k<<1,l,mid,x);
else update(k<<1|1,mid+1,r,x);
w[k]=w[k<<1]+w[k<<1|1];
}
inline signed kth(int k,int l,int r,int x){
if (l==r) return l;
rr int mid=(l+r)>>1;
if (w[k<<1]>=x) return kth(k<<1,l,mid,x);
else return kth(k<<1|1,mid+1,r,x-w[k<<1]);
}
signed main(){
n=iut(),build(1,1,n);
for (rr int i=1,now=1;i<=n;++i,putchar(10)){
rr int t=(iut()+now)%w[1],del; if (!t) t=w[1];
print(del=kth(1,1,n,now=t)),update(1,1,n,del);
}
return 0;
}
#线段树#洛谷 3988 [SHOI2013]发牌的更多相关文章
- BZOJ 4415 洛谷 3988 [Shoi2013]发牌
[题解] 权值线段树.查询当前牌堆顶的牌并且删掉就好了. #include<cstdio> #include<algorithm> #define N 3000010 #def ...
- 线段树 洛谷P3932 浮游大陆的68号岛
P3932 浮游大陆的68号岛 题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无 ...
- [线段树]洛谷P5278 算术天才⑨与等差数列
题目描述 算术天才⑨非常喜欢和等差数列玩耍. 有一天,他给了你一个长度为n的序列,其中第i个数为a[i]. 他想考考你,每次他会给出询问l,r,k,问区间[l,r]内的数从小到大排序后能否形成公差为k ...
- 区间连续长度的线段树——洛谷P2894 [USACO08FEB]酒店Hotel
https://www.luogu.org/problem/P2894 #include<cstdio> #include<iostream> using namespace ...
- 洛谷 P3998 [SHOI2013]发微博
洛谷 P3998 [SHOI2013]发微博 洛谷传送门 题目描述 刚开通的 SH 微博共有n个用户(1Ln标号),在这短短一个月的时间内, 用户们活动频繁,共有m 条按时间顺序的记录: ! x 表示 ...
- AC日记——校门外的树 洛谷 P1047
题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种 ...
- 带修主席树 洛谷2617 支持单点更新以及区间kth大查询
题目链接:https://www.luogu.com.cn/problem/P2617 参考博客:https://blog.csdn.net/dreaming__ldx/article/details ...
- 洛谷 P3989 [SHOI2013]阶乘字符串 解题报告
P3989 [SHOI2013]阶乘字符串 题目描述 给定一个由前\(n(\le 26)\)个小写字母组成的串\(S(|S|\le 450)\).串\(S\)是阶乘字符串当且仅当前 \(n\) 个小写 ...
- 洛谷 P3990 [SHOI2013]超级跳马 解题报告
P3990 [SHOI2013]超级跳马 题目描述 现有一个\(n\) 行 \(m\) 列的棋盘,一只马欲从棋盘的左上角跳到右下角.每一步它向右跳奇数列,且跳到本行或相邻行.跳越期间,马不能离开棋盘. ...
- [bzoj4417] [洛谷P3990] [Shoi2013] 超级跳马
Description 现有一个n行m列的棋盘,一只马欲从棋盘的左上角跳到右下角.每一步它向右跳奇数列,且跳到本行或相邻行.跳越期间,马不能离开棋盘.例如,当n = 3, m = 10时,下图是一种可 ...
随机推荐
- 微服务程序运行步骤及nameko入门案例
首先一个微服务应用程序需要有服务的生产者和服务的消费者,另外还需要一个注册中心来管理和调度服务 1.服务提供方,即生产者启动服务,并将服务提交到注册中心注册服务 2.服务需求方,即消费者连接到注册中心 ...
- 【Azure Developer】调用Microsoft Graph API获取Authorization Token,使用的认证主体为 Azure中的Managed Identity(托管标识)
问题描述 在常规情况下,如果要从Azure中获取Authorization Token,需要在Azure AAD中注册一个应用主体,通过Client ID + Client Secret生成Token ...
- C# 多线程(17):小总结
前言 本篇内容是小总结和过渡,看完这篇后,就要开始继续学习 C# 多线程中的知识点啦~. 前面,经过 16 篇的学习,我们学习了多线程.锁.线程池.任务.同步.异步等知识,还没有使用到 async.a ...
- 当云原生网关遇上图数据库,NebulaGraph 的 APISIX 最佳实践
本文介绍了利用开源 API 网关 APISIX 加速 NebulaGraph 多个场景的落地最佳实践:负载均衡.暴露接口结构与 TLS Termination. API 网关介绍 什么是 API 网关 ...
- PHP项目&RCE安全&调试&追踪&代码执行&命令执行
常见漏洞关键字 SQL注入:select.insert.update.mysql_query.mysqli等 文件上传:$_FILES.type="file".上传.move_up ...
- C++ //类模板与继承 //类模板与继承 //注意: //1.当子类继承父类是一个类模板时,子类在声名的时候,要指定出父类中T的类型 //2.如果不指定,编译器无法给子类分配内存 //3.如果想灵活指定出父类中的T的类型,子类也需要变为类模板
1 #include <iostream> 2 #include <string> 3 #include<fstream> 4 using namespace st ...
- 新零售SaaS架构:订单履约系统架构设计(万字图文总结)
什么是订单履约系统? 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程. 它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理.物流配送),确保信息流顺畅.操作协同,提升整 ...
- Learning by teaching --- 费曼学习法
世界上存在成千上万种学习法,如果上天只让我掌握一种,那一定就是"费曼学习法". 介绍 费曼学习法是由诺贝尔物理学奖获得者理查德·费曼提出的一种学习方法,其核心思想是将所学内容用自己 ...
- 虚拟机 centos web nodejs服务 外网映射
虚拟机 centos web nodejs服务 外网映射 起因 为了不买云服务器也是拼了 1. 安装虚拟机 VMware-Workstation-Lite-15.5.1-15018445精简官方中文安 ...
- 【开源库推荐】#5 Android高亮引导库
原文:[开源库推荐]#5 Android高亮引导库 - Stars-One的杂货小窝 本文介绍2个高亮引导库HighLightPro和Curtain hyy920109/HighLightPro: A ...