数列编辑器,在线IDE

本期的主题是洛谷的在线IDE

小学生?!小学生虐我

思路:

怎么说链表也是可以的吧,虽然比较繁琐

然后涉及到了前缀和和一些优化手段(应该可以说是记忆化吧)?

用p记录光标的位置

虽然这道题的数据范围挺大的(1~1,000,000)

但是题目中说,k一定在p之前

所以实际上只有p前面的序列是有效的

于是我们就可以写一个半在线半离线的算法

链表模拟数列

当然了,不用按照顺序,我们只用把数字存一下,然后顺序什么的一切靠链表解决

f数组 存i点(这里的i不是数列中的顺序,而是实际读入的顺序,下同,具体见代码)的最大前缀和,这样就可以直接查询

s数组 存i点的前缀和,方便更新f数组

然后用 ord数组 记录一下每个数在数列中的编号(不是实际的编号,有点类似hash的样子)

每接受一个操作就做一次更新

代码如下:

#include<bits/stdc++.h>
#define INF 0x7f7f7f7f
using namespace std;
struct node{
int f,t;//f表示前驱,t表示后继(由于本菜鸟不喜欢front和next……请谅解~)
int s;
}b[1000010];
int T,t,p,n;
int s[1000010];
int f[1000010];
int ord[1000010];
int read()//有负数,快读不要忘记符号的问题
{
int s=0,p=1;
char c=getchar();
while(!isdigit(c))
{
if(c=='-')
p=-1;
c=getchar();
}
while(isdigit(c))
{
s=(s<<1)+(s<<3)+c-'0';
c=getchar();
}
return s*p;
}
int main()
{
char c;
T=read();
f[0]=-INF;//因为有负数嘛,所以一开始前缀和的最大值应该是一个极小数
while(T--)
{
c=getchar();
while(c!='I'&&c!='D'&&c!='L'&&c!='R'&&c!='Q')
c=getchar();//getchar()比较快(优化后还有更快的),写c=='\n'||c=='\r'||c==' ',关系也不大
if(c=='I')
{
b[++t].s=read();
b[t].f=p;
b[b[p].t].f=t;
b[t].t=b[p].t;
b[p].t=t;
s[t]=s[p]+b[t].s;//插入节点
f[t]=max(f[p],s[t]);//更新当前的前缀和最大值
p=t;//更新光标位置
ord[++n]=p;//加入有价值的数列,并hash一下编号
}
if(c=='D')
{
b[b[p].t].f=b[p].f;
b[b[p].f].t=b[p].t;//删除节点
p=b[p].f;
n--;
}
if(c=='L')
{
p=b[p].f;
n--;
}
if(c=='R')
{
s[b[p].t]=s[p]+b[b[p].t].s;
f[b[p].t]=max(f[p],s[b[p].t]);
p=b[p].t;
ord[++n]=p;
}
if(c=='Q')
printf("%d\n",f[ord[read()]]);//这里可以好好理解一下
}//其实这里的五个操作可以合并起来写,放在函数里,然后可以调用
//比如说在'I'的操作里,可以看成是插入一个节点,然后在右移光标一位 这两步
//比较方便(其实也没方便多少)
return 0;
}

最后,再支持一下Luogu的

在线IDE!

极大解决Linux系统和Windows系统造成的差异问题,那些恶心优秀的字符类模拟题就再也不用方了

「Luogu P2201」数列编辑器 解题报告的更多相关文章

  1. 「Luogu P2278」[HNOI2003]操作系统 解题报告

    题面 一道模拟题,模拟CPU的处理过程?!省选模拟题 思路: 模拟退火大法+优先队列乱搞 要注意的点 1.空闲时,CPU要处理进程 2.当队列中没有进程时,要先进行判断,然后访问 3.当优先级高的进程 ...

  2. 「Luogu P3183」[HAOI2016]食物链 解题报告

    身为一个蒟蒻,由于刷不过[NOI2001]食物链 于是出门左转写了道另一道假的食物链 戳这里 这里的食物链个条数其实就是有向图的路径数(应该是这么说吧,我弱) 思路: 拓扑(Topulogy)(一本正 ...

  3. 「THUSCH 2017」大魔法师 解题报告

    「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵 ...

  4. 「CTS2019 | CTSC2019」随机立方体 解题报告

    「CTS2019 | CTSC2019」随机立方体 据说这是签到题,但是我计数学的实在有点差,这里认真说一说. 我们先考虑一些事实 如果我们在位置\((x_0,y_0,z_0)\)钦定了一个极大数\( ...

  5. 「BZOJ4510」「Usaco2016 Jan」Radio Contact 解题报告

    无线电联系 Radio Contact 题目描述 Farmer John has lost his favorite cow bell, and Bessie the cow has agreed t ...

  6. 「Luogu P3866」[TJOI2009]战争游戏 解题报告

    题面 好难表述啊~ 在n*m的矩阵上,有一些大兵(为0),一些空地(一个正整数),障碍物(-1),现在摧毁一些空地,使所有大兵不能走出矩阵去(代价为表示空地的整数),求最小代价 思路: 网络流最小割 ...

  7. 「Luogu P2015」二叉苹果树 解题报告

    题面 一个二叉树,边数为n\((2<n\le 100)\),每条边有一个权值,求剪枝后剩下p\((1<p<n)\)条边,使p条边的权值和最大 还看不懂?-- 2 5 input:5 ...

  8. 「Luogu P2508」[HAOI2008]圆上的整点 解题报告

    题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...

  9. 「Luogu P1210」回文检测 解题报告

    题面 这是一道诡异的黄题 居然让你求一串吧啦吧啦的东西中 字母(大小写)最长的回文串的长度,还要输出完整的串 吐血 思路: 保持淡定,我们啥都不会,就会Manacher,那就用Manacher大法! ...

随机推荐

  1. 12 Top Open Source Data Analytics Apps

    1. Hadoop It would be impossible to talk about open source data analytics without mentioning Hadoop. ...

  2. BZOJ 1935 Tree 园丁的烦恼 CDQ分治/主席树

    CDQ分治版本 我们把询问拆成四个前缀和,也就是二维前缀和的表达式, 我们把所有操作放入一个序列中 操作1代表在x,y出现一个树 操作2代表加上在x,y内部树的个数 操作3代表减去在x,y内部树的个数 ...

  3. iptables 删除规则

    iptables -nL --line-number显示每条规则链的编号 iptables -D FORWARD 2删除FORWARD链的第2条规则,编号由上一条得知.如果删除的是nat表中的链,记得 ...

  4. @noi.ac - 443@ 老头子的话

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 老头子是小学校长,小学生(大哥)们都很听老头子的话.一天,老头子 ...

  5. @noi.ac - 490@ game

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 Q 和小 T 正在玩一种双人游戏.m 张木牌从左往右排成一排 ...

  6. 20190608笔试题のCSS-属性继承

    以下的CSS属性哪些可以继承?(单选) A.   font-sizeB.   marginC.   widthD.   padding emmm,这题答案是A,看到这题我是能选对的,但又不由让我想到一 ...

  7. poj 2689 Prime Distance (素数二次筛法)

    2689 -- Prime Distance 没怎么研究过数论,还是今天才知道有素数二次筛法这样的东西. 题意是,要求求出给定区间内相邻两个素数的最大和最小差. 二次筛法的意思其实就是先将1~sqrt ...

  8. 怎么查看mysql 的binlog日志存放的位置

    image.png 这个你可以看配置文件 启用了才有这样的记录默认是没有的 linux系统中的/etc/my.cnf my.cnf内容: log-bin = mysqlbin # 默认配置 一般放在/ ...

  9. activiti工作流引擎之uel表达式

    qq讨论群:313032825本人做了一个微信公众号,用于分享各类视频学习资源和我多年学习经验,喜欢的可以关注哦! 有了前面几章,我们肯定有一定的困惑,activiti如何与实际业务整合,比如一条采购 ...

  10. iptables端口映射

    见上节透明代理设置 #iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT -- ...