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 ...
随机推荐
- MySQL - 日常操作一 增删改查
mysql 源码安装 创建 mysql 账户 组 groupadd mysql useradd mysql -g mysql -M -s /bin/false 解压缩源码安装 .tar.gz cd ...
- vscode 配置Git
步骤: 下载Git客户端 配置环境变量 设置vscode与Git的关联 重启 步骤一: 该网址,下载即可. https://git-scm.com/downloads 步骤二: 计算机 > 属性 ...
- mysql 查询优化 ~explain解读之select_type的解读
一 简介:今天咱们来聊聊explain的select_type 二 类型 (1)SIMPLE 简单的SELECT语句(不包括UNION操作或子查询操作) (2)PRIMARY/UNION PRIMAR ...
- ichartjs一分钟快速入门教程
1.构建项目环境 由于ichartjs是一个js库,所以只要将ichart.js加入你页面的head中就完成了ichartjs的运行环境.代码如下: <script type="tex ...
- 批量下载Coursera及其他场景上的文件
以下方法同样适用于其他场景的批量下载. 最近在学习Coursera退出的深度学习课程,我希望把课程提供的作业下载下来以备以后复习,但是课程有很多文件,比如说脸部识别一课中的参数就多达226个csv文件 ...
- MySQL内连接、外连接、交叉连接
外连接: 左连接:left join 或 left outer join 以左边的表为基准,如果左表有数据,而右表没有数据,左表的数据正常显示,右表数据显示为空. 创建user表,用于记录用户 use ...
- Weblogic的安装与卸载
一.下载weblogic 到Oracle官网https://www.oracle.com/downloads/index.html,我在这里下载的是weblogic12C进行安装:https://ww ...
- Java用System读取系统相关信息、环境变量——(六)
package Java_Test; public class System1 { public static void main(String[] args) { // TODO Auto-gene ...
- Windows Server 2008 R2 服务器系统安装图文教程
https://www.jb51.net/os/535658.html http://www.machenike.com/article.php?id=207
- 用struts2 s2-045漏洞拿站记录
浏览FreeBuf时发现的文章,新出的漏洞: http://www.freebuf.com/vuls/128668.html 漏洞一出,各位大神早就写出POC: http://www.reg008.c ...