6-5 移动的盒子 uva12657
较为复杂的一题;有点类似6-1 但是分析完之后比6-1简单 就是按照思路模拟就好!
学会了双向链表 先初始化 link是关键
分析命令 可以大大简化代码 :
反转链表不用反转 改操作和输出就行;
#include<bits/stdc++.h>
using namespace std;
void link(int ,int);
int left1[],right1[];
int main()
{
int n,Q;int cas=;
while(cin>>n>>Q){
int flag=;
memset(left1,,sizeof(left1));
memset(right1,,sizeof(right1));
for(int i=;i<=n;i++)
{
left1[i]=i-;
right1[i]=(i+)%(n+); }
left1[]=n;right1[]=; while(Q--)
{
int q;cin>>q;
if(q==){flag=!flag; continue;}
int X,Y;cin>>X>>Y;
if(q==){if(right1[Y]==X)swap(X,Y);}
if(q!=&&flag)q=-q;
if(q==)if(right1[X]==Y)continue;
if(q==)if(right1[Y]==X)continue; int XL=left1[X],XR=right1[X],YL=left1[Y],YR=right1[Y]; if(q==)
{ link(XL,XR);link(YL,X);link(X,Y);
}
if(q==)
{ link(XL,XR);link(Y,X);link(X,YR);
}
if(q==)
{ if(right1[X]==Y)
{
link(Y,X);link(XL,Y);link(X,YR); }
else
{
link(XL,Y);link(Y,XR);
link(YL,X);link(X,YR);
} } }
long long sum=;
int b=;
for(int i=;i<=n;i++)
{
b=right1[b];
if(i%==)sum+=b;
} if(flag&&n%==)sum=(long long)n*(n+)/-sum; printf("Case %d: %lld\n",cas++,sum); } return ; } void link(int l,int r)
{
right1[l]=r;left1[r]=l; }
注意细节!分析所有情况!
此外 第三个命令时一定要注意是否相邻!
6-5 移动的盒子 uva12657的更多相关文章
- 谈谈一些有趣的CSS题目(二)-- 从条纹边框的实现谈盒子模型
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- 认识W3C标准盒子模型,理解外边距叠加
概述: 注:加粗斜体字是非常重要的概念,决定着你是不是能看懂那句话,所以不懂的请一定要搜索一下. 页面上的每个元素,都在一个矩形框里. 每个矩形框都是一个盒模型. 每个盒模型都由内容区域(co ...
- 《Web开发中让盒子居中的几种方法》
一.记录下几种盒子居中的方法: 1.0.margin固定宽高居中: 2.0.负margin居中: 3.0.绝对定位居中: 4.0.table-cell居中: 5.0.flex居中: 6.0.trans ...
- CSS3之盒子模型
display:box 使子元素成行排列如果父级宽度小于子级盒子 不会把超出部分挤出下面 而是直接超出 -box-orient:vertical 使盒子垂直显示 默认水平显示 -box-direct ...
- 让div盒子相对父盒子垂直居中的几种方法
div相对于父盒子垂直居中的几种方法,之前在网上看到很多种方法,确实说的很对,也很具体,但是我感觉对于初学者来说,一目了然是最重要的,所以,我把很高深的技巧,和很复杂的css样式都剔除掉,旨在让更多人 ...
- 盒子 offsetLeft、offsetTop、offsetWidth、getBoundingClientRect等属性解释
offsetLeft 获取的是忽略 margin 当前元素距离上一级父节点(有没有设置position,有的话依据父节点,没有的话依据页面最左端这时候不管滚动条移到哪) 当前元素向左的位置 记住它会将 ...
- JS学习:第二周——NO.3盒子模型
1.CSS盒子模型包括四个部分组成:设定的宽高+padding+border+margin: 2.JS盒子模型:通过系统提供的属性和方法,来获取当前元素的样式值 JS提供的属性和方法: clien ...
- 学习微信小程序之css12设置盒子内容的宽高
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- html学习第三天—— 第11章 盒子模型 div
盒模型--边框(一) 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 如下面代码为div来设置边框粗细为2px.样式为实心的.颜色为红色的边框: div ...
随机推荐
- JS简史
一.产生背景 1)在JavaScript问世之前,必须把表单数据发送到服务器端才能确定用户是否没有填写某个必填域,是否输入了无效的值: 2)为完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负 ...
- Elastic Job入门(2) - 使用
运维平台 elastic-job-lite-console-${version}.tar.gz可通过mvn install编译获取,下载源码,进入console目录,执行: mvn clean ins ...
- linux查看防火墙的状态以及开启关闭
存在以下两种方式: 一.service方式 查看防火墙状态: [root@centos6 ~]# service iptables status 开启防火墙: [root@centos6 ~]# se ...
- Builder建造者模式
- Struts防止表单重复提交
1.什么是表单重复提交 > 在不刷新表单页面的前提下: >> 多次点击提交按钮 >> 已经提交成功, 按 "回退" 之后 ...
- Java读取Txt封装到对象中——(三)
JavaBean package bean; public class Question { private String timu; //题干 private String leixing; //类 ...
- Informatic学习总结_day03
1.update strategy
- 安装installshield问题
install designer中 general information 选择setup languages shortcuts编辑 开始 中显示目录 文件路径 C:\Program Files ...
- NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{HBmUtjMOQP2pgLFFwqa_Og}{172.16.0.163}{172.16.0.163:9300}] ]
1.找到elasticsearch的安装目录,在config目录找到elasticsearch.yml,查看cluster.name的赋值 2.在SpringBoot的yml文件中,不仅要配置clus ...
- KVM -> 虚拟机磁盘管理_03
1.KVM磁盘管理 1.KVM qcow2.raw.vmdk等镜像格式说明:http://blog.csdn.net/zhengmx100/article/details/53887162 raw: ...