【例题 6-5 UVA 12657 】Boxes in a Line
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
双向链表模拟题。
移动的时候,要注意它就在所需要的位置的情况。那种情况不移动。
(如果已经在所需位置了,还用链表的插入方式强行移动的话,会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的更多相关文章
- 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 ...
- UVA 12657 Boxes in a Line 双向链表
题目连接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47066 利用链表换位置时间复杂度为1的优越性,同时也考虑到使用实际 ...
- UVA 12657 Boxes in a Line
双向链表 注意:如果算法是最后处理翻转情况时,注意指令4翻转后1,2两个指令也要翻转处理: 指令3 中交换盒子要注意两个盒子相邻的情况 #include <iostream> #inclu ...
- UVa 12657 Boxes in a Line(数组模拟双链表)
题目链接 /* 问题 将一排盒子经过一系列的操作后,计算并输出奇数位置上的盒子标号之和 解题思路 由于数据范围很大,直接数组模拟会超时,所以采用数组模拟的链表,left[i]和right[i]分别表示 ...
- 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 ...
- 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 ...
- 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 ...
- uva 11174 Stand in a Line
// uva 11174 Stand in a Line // // 题目大意: // // 村子有n个村民,有多少种方法,使村民排成一条线 // 使得没有人站在他父亲的前面. // // 解题思路: ...
- Problem B Boxes in a Line
省赛B题....手写链表..其实很简单的.... 比赛时太急了,各种手残....没搞出来....要不然就有金了...注:对相邻的元素需要特判..... Problem B Boxes in a Li ...
- 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 ...
随机推荐
- js02---字符串
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- android图像处理(3) 底片效果
这篇将讲到图片特效处理的底片效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:将当前像素点的RGB值分别与255之差后的值作为当前点的RGB值. 例: ABC 求B点的底片效果: B.r ...
- windows WEB 高可用/可伸缩
windows NLB+ARR实现Web负载均衡高可用/可伸缩 基于IIS的ARR负载均衡 基于NLB负载均衡 这两篇分别分ARR 和 NLB基本配置,下面我们讲讲,如何组合使用,搭配成高可用/可 ...
- jq ---- 实现浏览器全屏
// 点击进入全屏 方法. var fullscreen=function(){ elem=document.body; if(elem.webkitRequestFullScreen){ elem. ...
- 什么是CSS重置,有些什么作用?
CSS重置是什么? 简单的说就是重置浏览器的CSS默认属性. 为什么要重置它,有什么作用? 因为浏览器的品种很多,每个浏览器的默认样式也是不同的,比如<button>标签,在IE浏览器.F ...
- array01.js
//1.获取指定范围内的随机数 function getRadomNum(min,max){ return Math.floor(Math.random() * (max - min + 1)) + ...
- Kinect 开发 —— 用户交互设计的若干思考
Metro 风格 windows 8 Kinect Hub 手势原型设计 悬停选择 翻页控制 关节点重叠的处理方法 将箭靶设置在画面的边缘,这样玩家持弓的角度与屏幕保持一个大约45度的锐角,这 ...
- Atcoder ABC 071 C,D
C - Make a Rectangle Time limit : 2sec / Memory limit : 256MB Score : 300 points Problem Statement W ...
- node内容
什么是node? node是一门技术,并不是一门新的语言.是JavaScript运行环境. node在解析JavaScript,依靠的是什么? 依靠的是谷歌浏览器中的v8引擎,所以不需要考虑兼容性,n ...
- sessionStorage的使用方法
本篇是关于sessionStorage的使用方法的介绍,简单几行代码,实现sessionStorage,请大家查阅 (1)在需要设置sessionStorage的页面写如下代码可以存入sessionS ...