暂无链接

题目背景

你的昆特牌打的太好啦!不一会你就 AKAKAK 了 NOGPNOGPNOGP,只能无聊地堆牌玩!

题面描述

你有一些矩形卡牌,每次你会作如下三个操作:
1.紧挨着最后一张牌往牌后面放一张牌,这张牌的底边与 XXX 轴重合且位于第一象限;(第一张牌最左边位于 X=0X=0X=0 处)
2.拿走一张牌,并把后面的牌向前推到与前一张牌右边重合;
3.询问[l,r][l , r][l,r](坐标)这一段牌最高的高度;
对于边界情况,在两张牌交界处视为最高的那张牌的高度。
输入输出可能需要加速!

输入数据

第一行两个数 N、CN、CN、C 表示操作数、离线操作还是在线;
接下来 N 行每行是如下三种之一
T=1T=1T=1,接下来 LEN、HLEN、HLEN、H 分别表示插入的牌的长、高;
T=2T=2T=2,接下来 XXX 表示拿走哪一张牌,牌的编号按出现顺序由小到大,从 111 开始(不是操
作序号!),删除的牌不会改变序号,若序号表示的牌已被删除则不操作;
T=3T=3T=3,接下来 L、R 表示询问区间;若询问区间上没牌,输出 0。
若 C=1C=1C=1,则上面输入中的 LEN、HLEN、HLEN、H(仅这两项!)需要以下式子算出(lastanslastanslastans 为最近一次询问答案,初值为 000)
真实输入=(输入∗2333+lastans∗666)%100000007+1;(1e8+7!)真实输入 = (输入*2333 + lastans*666 ) \%100000007+1; (1e8+7!)真实输入=(输入∗2333+lastans∗666)%100000007+1;(1e8+7!)

输出数据

对每一个询问操作输出该段最高的位置高度是多少。

样例数据
INPUT

6 0
1 5 3
1 8 2
3 2 6
1 2 4
2 2
3 2 6

OUTPUT

3
4

样例解释

注意拿走一张牌时要把后面的牌向前推;

对于样例前三次操作的图像
红色线条表示询问区间

数据范围

对于 40%40\%40%的数据,没有删除操作;
对于额外 20%20\%20%的数据,C=0C=0C=0;
对于 80%80\%80%的数据,N≤2∗105N≤2*10^5N≤2∗105;
对于 100%100\%100%的数据,N≤5∗105N≤5*10^5N≤5∗105 ,LEN、H≤109LEN、H≤10^9LEN、H≤109,L、RL、RL、R 不会超过 1e18 范围,输入的没有负数。

TIPS

注意边界情况!

如这时最高点是左边的牌的高度!
一个我看来没什么问题的问题的补充:若 L=RL=RL=R,答案不为 000 哦
提前 AKAKAK 的同学互相玩玩昆特牌吧!(雾)
强烈建议大家注意细节!

题解

很简单的一道线段树,以牌的标号建线段树,维护长度和与最高的高度,查询时在线段树上二分坐标所在牌的编号。

对于边界问题,查询的时候右边界加一即可。

代码
#include<bits/stdc++.h>
#define ll long long
#define ls v<<1
#define rs ls|1
#define F(x) (x*2333+last*666)%100000007+1
using namespace std;
const int M=2e6+5;
int mx[M],tag[M],tot,n,typ;
ll sum[M],r;
char c;
ll read()
{for(r=0;!isdigit(c);c=getchar());for(;isdigit(c);c=getchar())r=(r<<1)+(r<<3)+c-'0';return r;
}
void out(int x)
{if(x>9)out(x/10);putchar(x%10+'0');
}
void up(int v)
{sum[v]=sum[ls]+sum[rs];mx[v]=max(mx[ls],mx[rs]);
}
void ins(int v,int le,int ri,int pos,int len,int h)
{if(le==ri){sum[v]=len,mx[v]=h;return;}int mid=le+ri>>1;if(pos<=mid)ins(ls,le,mid,pos,len,h);else ins(rs,mid+1,ri,pos,len,h);up(v);
}
void del(int v,int le,int ri,int pos)
{if(le==ri){sum[v]=mx[v]=0;return;}int mid=le+ri>>1;if(pos<=mid)del(ls,le,mid,pos);else del(rs,mid+1,ri,pos);up(v);
}
int get(int v,int le,int ri,ll pos)
{if(le==ri){return le;}int mid=le+ri>>1;if(sum[ls]>=pos)return get(ls,le,mid,pos);else return get(rs,mid+1,ri,pos-sum[ls]);
}
int ask(int v,int le,int ri,int lb,int rb)
{if(lb<=le&&ri<=rb){return mx[v];}int mid=le+ri>>1,ans=0;if(lb<=mid)ans=ask(ls,le,mid,lb,rb);if(mid<rb)ans=max(ans,ask(rs,mid+1,ri,lb,rb));return ans;
}
void in(){n=read(),typ=read();}
void ac()
{ll a,b,last=0;for(int i=1,op;i<=n;++i){op=read(),a=read();if(op==1){b=read();if(typ)a=F(a),b=F(b);ins(1,1,n,++tot,a,b);}else if(op==2)del(1,1,n,a);else{b=read();a=get(1,1,n,a),b=get(1,1,n,b+1);out(last=ask(1,1,n,a,b)),putchar(10);}}
}
int main(){in(),ac();}

[2018.10.31 T3] 玩相关推荐

  1. 训练日志 2018.10.31

    上周把图的连通性看完了,也做了些有关的题. 图的遍历内容的欧拉回路 Fleury 算法还不太熟练,哈密尔顿回路还没开始,这周争取把图的遍历以及拓扑排序看完,再做些题. 2018.10.31

  2. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第6天 2018/10.31 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 5. ...

  3. 2018.10.31模拟赛

    T1 lgg L 君和 G 君在玩一个游戏.G 君写下一个字符串 A,L 君将其复制一遍连接到 A 串后面得 到字符串 B, G 君又在 B 的任意位置(包括首尾)插入一个字符得到字符串 C.现在你得 ...

  4. ssl提高组周三备考赛【2018.10.31】

    前言 呆学校呆3天依旧不想复习期中,感觉要凉. 成绩 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 111 2017mysel ...

  5. Noip 模拟 13 2018/10/31

    T1:铃仙的红色之瞳(eyes) 为了方便你的预测,铃仙对该符卡进行了改造. 敌方非常强大,可以看作有无限的体力.通过该符卡,铃仙可以释放出子弹,敌方触碰到子弹就会损失一格体力.注意,每次敌方损失体力 ...

  6. P2628 冒险岛 AC于2018.10.31

    原题 题目背景 冒险岛是费老师新开发的一种情景模拟电脑的游戏,通过掷骰子(1~6个数字之间),让一种人物(棋子)在棋纸上从左至右的行走,从而模拟冒险的故事-- 题目描述 棋纸上有一条从左至右的很长的路 ...

  7. JZOJ2020年8月10日提高组T3 玩诈欺的小杉

    JZOJ2020年8月10日提高组T3 玩诈欺的小杉 题目 Description 是这样的,在小杉的面前有一个N行M列的棋盘,棋盘上有N∗MN*MN∗M个有黑白棋的棋子(一面为黑,一面为白),一开始 ...

  8. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  9. 信奥中的数学学习资料汇总(2022.10.31)

    信奥中的数学之入门组(面向小学四年级至六年级以及初一学生) 信奥中的数学之入门组(面向小学四年级至六年级以及初一学生)_dllglvzhenfeng的博客-CSDN博客 信奥中的数学学习:小学.初高中 ...

  10. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

最新文章

  1. html调用asp边疆,[求助]怎么实现ASP在HTML中调用
  2. java 中pc寄存器的作用_既然有PC寄存器,栈帧里的返回地址的作用是什么?
  3. Redis单机部署、添加开机自启、配置参数
  4. Servlet 登录时数据校验
  5. 历城职专学前计算机专业,历城职专学前教育专业2020学年第一学期技能运动会拉开帷幕...
  6. 高效办公,从几行批处理命令开始 | 原力计划
  7. @开发者 想成为行业应用开发的实力派吗?TA 或者能帮到你
  8. 大前端技术选型 Native原生iOS, Android, React-Native, Flutter, 微信小程序, HTML5
  9. 【CVPR 2021】基于样本间关系的知识蒸馏:Complementary Relation Contrastive Distillation
  10. android仿黑客帝国字符雨
  11. OKR成功落地的13条箴言
  12. Timer和counter
  13. 【翻译】CRAFT:Character Region Awareness for Text Detection
  14. bno055传感器数据不更新_博世传感器BNO055智能9轴 的绝对方向传感器
  15. Go Module使用 六大场景讲解示例
  16. HOG 特征的提取--基于scikit-image
  17. delphi XE的字符串处理
  18. Python在Windows下输出响铃【内容已更新】
  19. 微型四轴DIY机架,轻巧稳固耐摔,通用720空心杯电机,9厘米轴距
  20. k8s 市场现状闲聊

热门文章

  1. Machine Learning Concepts
  2. Android已有的原生Camera框架中加入自己的API的实现方案。
  3. devexpress TreeList递归及点击获取数据
  4. 单例初始化(MRC模式之autorelease)
  5. HashSet原理、TreeSet
  6. MyBatis源码阅读(三) --- 配置信息的解析以及SqlSessionFactory构建过程
  7. 我是如何用单例模式征服面试官的?
  8. Maven搭建Spring Security3.2项目详解
  9. luncence学习
  10. Ubuntu 16.10(x86) Install WordPress SRV 4.7.1-1-5