先上一波题目 https://vjudge.net/contest/338760#problem/L

这道题我们维护一个双向链表 操作1 2 3 都是双向链表的基本操作 4操作考虑到手动将链表反转时间复杂度太高

我们可以不反转序列 而反转“操作” 如反转之后其实就是将操作1和2互换 对操作三没有影响 、

在求和的时候 我们可以先按正常顺序求出奇数位置的数的和

而如果数列长度为奇数 反转前后奇数位置的数的和不变

如果数列长度为偶数 反转奇数次之后 奇偶位置改变 这个时候我们只需要将总和减去偶数位置的和就是答案了

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
#define LL long long
using namespace std;
const int M=1e6+;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,m,flg,c;
int l[M],r[M],cnt;
void lnk(int x,int y){r[x]=y; l[y]=x;}
int main(){
int x,y;
while(scanf("%d %d",&n,&m)!=EOF){
flg=;
for(int i=;i<=n;i++) l[i]=i-,r[i]=i+;
r[]=; l[]=-; l[n+]=n; r[n+]=-;
for(int i=;i<=m;i++){
c=read();
if(c==){flg^=; continue;}
x=read(); y=read();
if(flg&&c<=) c=-c;
if(c==&&l[y]==x) continue;
if(c==&&r[y]==x) continue;
int lx=l[x],rx=r[x],ly=l[y],ry=r[y];
if(c==) lnk(lx,rx),lnk(ly,x),lnk(x,y);
else if(c==) lnk(lx,rx),lnk(y,x),lnk(x,ry);
else if(c==){
if(l[y]==x) lnk(lx,y),lnk(y,x),lnk(x,ry);
else if(r[y]==x) lnk(ly,x),lnk(x,y),lnk(y,rx);
else lnk(lx,y),lnk(y,rx),lnk(ly,x),lnk(x,ry);
}
}
LL ans=,now=;
for(int i=;i<=n;i++){
now=r[now];
if(i&) ans+=now;
}
if(flg&&n%==) ans=(LL)n*(n+)/-ans;
printf("Case %d: %lld\n",++cnt,ans);
}
return ;
}

2019 SCUT SE 新生训练第四波 L - Boxes in a Line——双向链表的更多相关文章

  1. Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)

    Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...

  2. NOIP2018提高组省一冲奖班模测训练(四)

    NOIP2018提高组省一冲奖班模测训练(四) 这次比赛只AC了第一题,而且花了40多分钟,貌似是A掉第一题里面最晚的 而且还有一个半小时我就放弃了…… 下次即使想不出也要坚持到最后 第二题没思路 第 ...

  3. Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)

    Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...

  4. Java笔试面试题整理第四波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  5. “全栈2019”Java多线程第三十四章:超时自动唤醒被等待的线程

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  6. 【周年庆】china-pub 14周年庆感恩回馈四波狂热来袭

    活动主题:china-pub 14周年庆感恩回馈四波狂热来袭活动说明:[第1波]电子书免费抢!10万好书 65折封顶!              活动规则:              1.活动期间内凡 ...

  7. HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分)

    HDU6621 K-th Closest Distance HDU2019多校训练第四场 1008(主席树+二分) 传送门:http://acm.hdu.edu.cn/showproblem.php? ...

  8. 2019牛客多校训练第四场K.number(思维)

    题目传送门 题意: 输入一个只包含数字的字符串,求出是300的倍数的子串的个数(不同位置的0.00.000等都算,并考虑前导零的情况). sample input: 600 1230003210132 ...

  9. 2019牛客网暑假多校训练第四场 K —number

    链接:https://ac.nowcoder.com/acm/contest/884/K来源:牛客网 题目描述 300iq loves numbers who are multiple of 300. ...

随机推荐

  1. Django Rest Framewoek

    1 什么是RESTful REST 指的是一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.满足这些约束条件和原则的应用程序或设计就是 RESTful. 2 RESTful设计 ...

  2. Java反射----数组操作

    1,获取数组字段 在Person类中定义了一个一维数组字段:int[] a1 = new int[]{1,2,3}; 如何通过反射技术来操作该字段? 补充:Java操作数组主要用的是Array类. @ ...

  3. 攻防世界--getit

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/8ef2f7ef55c240418f84b3c514a7a28a 准备 得知 64位文件 ...

  4. vue 页面切换从右侧切入效果

    1.将切换的页面用transition包裹 <div class="index-content"> <transition> <router-view ...

  5. Sass Maps的函数-map-keys($map)

    map-keys($map) 函数将会返回 $map 中的所有 key.这些值赋予给一个变量,那他就是一个列表.如: map-keys($social-colors); 其返回的值为: "d ...

  6. mysql官网下载安装

    1.官网下载zip压缩文件 2.解压到指定文件夹 3.配置环境变量 4.新建my.ini 5.管理员权限打开cmd命令行,mysqld install mysql,mysql --initialize ...

  7. jenkins持续集成(一): 在Linux下的安装与配置

    撸了今年阿里.网易和美团的面试,我有一个重要发现.......>>> 前提: 安装了JDK,并配置好环境变量:JAVA_HOME 安装了Maven,并配置好环境变量:MAVEN_HO ...

  8. phpstorm git配置

    一. 安装git apt-get install git 二. 选择file->setting->Version Control->git 在此输入框输入git的执行路径 三.配置g ...

  9. Java数据类型转换题目

    题目一 public static void main(String[] args) { byte b1 = 1, b2 = 2, b3, b6, b8; final byte b4 = 4, b5 ...

  10. 如何将 不确定的有穷自动机(NFA) 转化为 确定的有穷自动机(DFA) 并将DFA最简化

    一.从NFA到DFA的转换 例如下图: DFA的每个状态都是一个由NFA中的状态构成的集合,即NFA状态集合的一个子集 r =aa*bb*cc* 二.从带有ε-边的NFA到DFA的转换 r=0*1*2 ...