【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

双向链表模拟题。
移动的时候,要注意它就在所需要的位置的情况。那种情况不移动。
(如果已经在所需位置了,还用链表的插入方式强行移动的话,会WA到死..)

【代码】

#include <bits/stdc++.h>
using namespace std;
#define ll long long const int N = 1e5; int n, m,flag;
pair <int, int> v[N+10]; void cr(int x0,int y0,int z0,int x,int z) //x0,y0,z0 x_z 把y0插入到_位置
{
v[x0].second = z0;v[z0].first = x0;
v[x].second = y0; v[z].first = y0;
v[y0].first = x, v[y0].second = z;
} int main()
{
/*freopen("F:\\rush.txt", "r", stdin);
freopen("F:\\rush_out.txt", "w", stdout);*/
int kase = 0;
while (~scanf("%d%d", &n, &m))
{
v[0].second = 1;
for (int i = 1; i <= n; i++)
v[i].first = i - 1, v[i].second = i + 1;
v[n + 1].first = n;
flag = 0;
printf("Case %d: ", ++kase);
for (int i = 1; i <= m; i++)
{
int ope,x,y;
scanf("%d", &ope);
if (flag && ope <= 2) ope = 3 - ope;
switch (ope)
{
case 4:
{
flag = !flag;
break;
}
case 1:
{
scanf("%d%d", &x,&y);//x移动到y的左边
if (x == v[y].first) break;
cr(v[x].first, x, v[x].second, v[y].first, y);
break;
}
case 2:
{
scanf("%d%d", &x, &y);//x移动到y的右边
if (x == v[y].second) break;
cr(v[x].first, x, v[x].second, y, v[y].second);
break;
}
case 3:
{
scanf("%d%d", &x, &y);
int temp;
if (v[y].second != x)//y_x || xy
{
//记录x的左边是什么temp
//把x插入到y的右边
//在把y插入到temp的右边
temp = v[x].first;
cr(v[x].first, x, v[x].second, y, v[y].second);
if (y!=v[temp].second)cr(v[y].first, y, v[y].second, temp, v[temp].second);
}
else //yx
{
//把y插入到x的右边
temp = v[x].second;
cr(v[y].first, y, v[y].second, x, v[x].second);
}
break;
}
default:
break;
}
}
ll ans = 0, cnt = 0;
if (!flag)
for (int i = v[0].second;i != n + 1; i = v[i].second)
{
cnt++;
if (cnt & 1) ans += i;
}
else
for (int i = v[n+1].first; i != 0; i = v[i].first)
{
cnt++;
if (cnt & 1) ans += i;
}
printf("%lld\n", ans);
}
return 0;
}

【例题 6-5 UVA 12657 】Boxes in a Line的更多相关文章

  1. UVa 12657 Boxes in a Line(应用双链表)

    Boxes in a Line You have n boxes in a line on the table numbered 1 . . . n from left to right. Your ...

  2. UVA 12657 Boxes in a Line 双向链表

    题目连接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47066 利用链表换位置时间复杂度为1的优越性,同时也考虑到使用实际 ...

  3. UVA 12657 Boxes in a Line

    双向链表 注意:如果算法是最后处理翻转情况时,注意指令4翻转后1,2两个指令也要翻转处理: 指令3 中交换盒子要注意两个盒子相邻的情况 #include <iostream> #inclu ...

  4. UVa 12657 Boxes in a Line(数组模拟双链表)

    题目链接 /* 问题 将一排盒子经过一系列的操作后,计算并输出奇数位置上的盒子标号之和 解题思路 由于数据范围很大,直接数组模拟会超时,所以采用数组模拟的链表,left[i]和right[i]分别表示 ...

  5. UVA 12657 Boxes in a Line(双向链表+小技巧)

    题意:对于一行按照顺序排列盒子数字与位置都为 1,2,3,4....n 执行四种操作 c = 1    x 放到 y 的左边 c =2     x 放到 y 的右边 c =3 交换 x, y c =4 ...

  6. uva-12657 - Boxes in a Line(双向链表)

    12657 - Boxes in a Line You have n boxes in a line on the table numbered 1 . . . n from left to righ ...

  7. Boxes in a Line UVA - 12657

      You have n boxes in a line on the table numbered 1...n from left to right. Your task is to simulat ...

  8. uva 11174 Stand in a Line

    // uva 11174 Stand in a Line // // 题目大意: // // 村子有n个村民,有多少种方法,使村民排成一条线 // 使得没有人站在他父亲的前面. // // 解题思路: ...

  9. Problem B Boxes in a Line

     省赛B题....手写链表..其实很简单的.... 比赛时太急了,各种手残....没搞出来....要不然就有金了...注:对相邻的元素需要特判..... Problem B Boxes in a Li ...

  10. Boxes in a Line

    Boxes in a Line You have n boxes in a line on the table numbered 1 . . . n from left to right. Your ...

随机推荐

  1. ajax如何上传文件(整理)

    ajax如何上传文件(整理) 一.总结 一句话总结:用FormData,FormData+ajax=异步上传二进制文件 <form enctype="multipart/form-da ...

  2. rtsp和sdp协议简介

    RTSP是由Real network 和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议. 实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体,如音频和视频.尽管 ...

  3. Mahout的推荐系统

    Mahout的推荐系统 什么是推荐系统 为什使用推荐系统 推荐系统中的算法 什么是推荐系统 为什么使用推荐系统? 促进厂商商品销售,帮助用户找到想要的商品 推荐系统无处不在,体现在生活的各个方面 图书 ...

  4. dp之完全背包 hdu--2159一维数组做法

    #include <iostream>#include <stdio.h>#include <string.h>using namespace std;int ma ...

  5. 通过Gradle来下载依赖的jar包

    前段时间在看Gradle文章方向其比ANT.Maven真的要简单很多,特别是在下载jar依赖方面下面就是用gradle写的一个jar包依赖下载的小例子: (1)建立build.gradle文件 (2) ...

  6. HBase高速导入数据--BulkLoad

    Apache HBase是一个分布式的.面向列的开源数据库.它能够让我们随机的.实时的訪问大数据.可是如何有效的将数据导入到HBase呢?HBase有多种导入数据的方法.最直接的方法就是在MapRed ...

  7. HDU 5188 zhx and contest(带限制条件的 01背包)

    Problem Description As one of the most powerful brushes in the world, zhx usually takes part in all ...

  8. 欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国

    欧洲的VPS 1天内收到几万次ssh端口访问,99%的访问量来自中国 前几天开了个欧洲的VPS,当备用的,没怎么用.就这样的VPS在1天之内也收到不少来自中国网民的见面礼 用了别人的一条命令: gre ...

  9. android图片特效处理之光照效果

    这篇将讲到图片特效处理的光照效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:图片上面的像素点按照给定圆心,按照圆半径的变化,像素点的RGB值分别加上相应的值作为当前点的RGB值. 例: ...

  10. 1.13 Python基础知识 - 字典和集合

    一.字典 字典是一组键-值对的数据结构.每个键对应一个值.在字典中,键不能重复.根据键可以查询到值.字典是键和值的映射关系 字典的定义: 字典通过花括号中用逗号分隔的元素(键-值.键-值对使用冒号分隔 ...