Description

链接:https://ac.nowcoder.com/acm/contest/224/B

来源:牛客网

”我愿意舍弃一切,以想念你,终此一生。“

”到后来,只能将记忆拼凑。“ ——QAQ

小可爱刚刚把KR的序列切开了,但是她还没有玩够,于是就又双叒叕打乱了佳佳刚刚买回来的序列。

但是还好,佳佳通过监控记录下来了小可爱的打乱方式,于是把小可爱送回家之后,现在佳佳要还原这个序列。

佳佳需要维护一个长度为n的序列,小可爱只用了以下两种操作:

a.将最后一个数挪到第一位

b.将序列第3位挪到第一位

你需要给出最后的序列

Solution

某人跟我说是链表

然后就没读题无脑做

然后TLE之后发现不能无脑做

然后有脑一下

Code

#include <stdlib.h>
#include <stdio.h>
#include <string.h> struct Node {
int v; Node *nxt, *pre;
Node(int _v, Node *_n = nullptr, Node *_p = nullptr) :
v(_v), nxt(_n), pre(_p) { }
} *head, *tail; void Delete(const Node* b, const Node* e = nullptr) {
if (not e) e = b;
b->pre->nxt = e->nxt;
e->nxt->pre = b->pre;
}
void InsertNxt(Node* p, Node* b, Node* e = nullptr) {
if (not e) e = b;
Node* Pre = p;
Node* Nxt = p->nxt;
Pre->nxt = b;
Nxt->pre = e;
b->pre = Pre;
e->nxt = Nxt;
}
void InsertPre(Node* p, Node* b, Node* e = nullptr) {
if (not e) e = b;
Node* Pre = p->pre;
Node* Nxt = p;
Pre->nxt = b;
Nxt->pre = e;
b->pre = Pre;
e->nxt = Nxt;
} void Sol1(int n) {
Node* Beg = tail, *End = tail->pre;
while (n--) { Beg = Beg->pre; }
Delete(Beg, End);
InsertNxt(head, Beg, End);
}
void sol2() {
Node *now = head->nxt->nxt->nxt;
Delete(now);
InsertNxt(head, now);
}
void Show() {
Node* now = head->nxt;
while (now != tail) {
printf("%d ", now->v);
now = now->nxt;
}
puts("");
} int main () {
int n, m;
scanf("%d%d", &n, &m);
int u;
tail = new Node(0); head = new Node(0);
tail->pre = head, head->nxt = tail;
for (int i = 1; i <= n; i += 1) {
scanf("%d", &u);
InsertPre(tail, new Node(u));
}
for (int i = 1; i <= m; i += 1) {
char ch; int u;
scanf("%d%c", &u, &ch);
if (ch == 'a') {
u %= n;
if (u) Sol1(u);
}
else {
u %= 3;
while(u--) sol2();
}
}
Show();
return 0;
}

牛客红包OI赛 B 小可爱序列的更多相关文章

  1. 牛客红包OI赛 C 小可爱表白

    据说是个公式题. Code #include<cstdio> #include<cstring> #include<algorithm> using namespa ...

  2. 牛可乐发红包脱单OI赛 C 小可爱表白

    打个暴力查一下OEIS,5min做完 出题人一开始把式子打错了,一开始的式子的结果为$n * (n + 3) * 2^{n - 3}$ 我们考虑化式子 首先考虑 $\sum\limits_{j = 1 ...

  3. 牛客编程巅峰赛S2第4场

    牛客编程巅峰赛S2第4场 牛牛摆玩偶 题目描述 牛牛有\(n(2 \leq n \leq 10^5)(2≤n≤105)\)个玩偶,牛牛打算把这n个玩偶摆在桌子上,桌子的形状的长条形的,可以看做一维数轴 ...

  4. nowcoder(牛客网)OI测试赛2 解题报告

    qwq听说是一场普及组难度的比赛,所以我就兴高采烈地过来了qwq 然后发现题目确实不难qwq.....但是因为蒟蒻我太蒻了,考的还是很差啦qwq orz那些AK的dalao们qwq 赛后闲来无事,弄一 ...

  5. 牛客网训练赛26D(xor)

    题目链接:https://www.nowcoder.com/acm/contest/180/D 线性基的学习:https://www.cnblogs.com/vb4896/p/6149022.html ...

  6. 牛客小白月赛16 H 小阳的贝壳 (差分+线段树)

    链接:https://ac.nowcoder.com/acm/contest/949/H来源:牛客网 题目描述 小阳手中一共有 n 个贝壳,每个贝壳都有颜色,且初始第 i 个贝壳的颜色为 colico ...

  7. 牛客假日团队赛5J 护城河 bzoj 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘 (凸包的周长)

    链接:https://ac.nowcoder.com/acm/contest/984/J 来源:牛客网 护城河 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  8. 牛客小白月赛16 D 小阳买水果 (思维题)

    链接:https://ac.nowcoder.com/acm/contest/949/D来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  9. 牛客小白月赛16 H小阳的贝壳 (线段树+差分数组)

    链接:https://ac.nowcoder.com/acm/contest/949/H来源:牛客网 题目描述 小阳手中一共有 n 个贝壳,每个贝壳都有颜色,且初始第 i 个贝壳的颜色为 colico ...

随机推荐

  1. C#线程篇---解答线程之惑(2)

    我们都知道,在这个行业,追求的就是用最少的时间学最多的知识,这是我写这个系列最想达到的目标,在最快的时间内,帮助更多的人学习更多的线程知识. 前一篇,讲述了线程基础,给大家铺垫了一个基础,这一篇着重介 ...

  2. Ansible4:Ad-hoc与命令执行模块

    目录 Ad-hoc 命令说明 后台执行 命令执行模块 command模块 script模块 Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令,对于复杂的命令会使用playbo ...

  3. 怎样彻底卸载(删除)SQL server2000

    如何完全卸载SQL server 2000 一.卸载安装程序:找到电脑右下角的Windows开始按钮,找到控制面板——卸载程序. 找到server 2000的安装程序,并点击后面的卸载按钮.  是,确 ...

  4. socket利用多线程实现一对多通信

    1.服务器端:socket()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接.将accept()写入死循环,每次连接一个客户端,开一个线程. 2.一般情况下建立s ...

  5. Ubuntu14.04 Tab键自动补全

    Unbuntu14.04 终端中使用Tab键不能自动补全 解决方案 1.利用vi编辑器打开 /etc/bash.bashrc文件(需要root权限) sudo vi /etc/bash.bashrc ...

  6. 容器启动报iptables错误

    # systemctl stop docker # iptables -t nat -F # ifconfig docker0 down # brctl delbr docker0   # 命令由br ...

  7. [洛谷P3158] [CQOI2011]放棋子

    洛谷题目链接:[CQOI2011]放棋子 题目描述 在一个m行n列的棋盘里放一些彩色的棋子,使得每个格子最多放一个棋子,且不同 颜色的棋子不能在同一行或者同一列.有多少祌方法?例如,n=m=3,有两个 ...

  8. Java获取精确到毫秒的时间戳

    import java.util.Date; public class Timestamp { /** 获取精确到毫秒的时间戳 * @param date * @return **/ public s ...

  9. python 日期时间处理

    # 获取日期: import datetime #调用事件模块 today =datetime.date.today() #获取今天日期 deltadays =datetime.timedelta(d ...

  10. window对象中的一些重要的属性和方法(笔记)

    setTimeout()方法用来实现一个函数在指定的毫秒数之后运行:setTimeout()返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行.由于历史原因,setTime ...