CSUST 4019 听党指挥(思维+模拟)
题目链接
题目大意
给你一个长度为n的序列(n为偶数),序列为[1,2,3,....n],操作m次,进行m次操作后输出这个序列
有三种操作
1:每次将最左边的元素移到最右边,重复x次
2:每次将最右边的元素移动到最左边,重复x次
3:交换[1,2] [3,4] ...[n-1,n]的元素
题目思路
这个最开始我一直以为是模拟当然最后也是模拟,不过是巧妙的模拟
这个题目的关键就是,你要把这个序列分为一个奇数序列和一个偶数序列。你会发现这两个序列内部的元素永远不会变化而且如果把每一个序列的元素他们单独绕成一个环,这些元素的相对位置不会发生变化。你就只要求出每一个序列的最开始位置即可
代码
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int maxn=1e5+5,mod=1e9+7,inf=0x3f3f3f3f;
int n,m;
int a[maxn],b[maxn];
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i+=2){
a[(i+1)/2]=i;
b[(i+1)/2]=i+1;
}
int beg1=1,beg2=1;//判断两个序列的开头元素
bool flag1=1,flag2=0;//判断两个序列开头元素为奇数还是偶数
for(int i=1,opt,x;i<=m;i++){
scanf("%d",&opt);
if(opt==2){
scanf("%d",&x);
beg1=(beg1-(x/2+(x%2&&!flag1))+(n/2)-1)%(n/2)+1;
beg2=(beg2-(x/2+(x%2&&!flag2))+(n/2)-1)%(n/2)+1;
}else if(opt==1){
scanf("%d",&x);
beg1=(beg1+(x/2+(x%2&&flag1))-1)%(n/2)+1;
beg2=(beg2+(x/2+(x%2&&flag2))-1)%(n/2)+1;
}
if(opt==3||(opt!=3&&x%2)){//如果转移时奇数,则交换奇偶性
swap(flag1,flag2);
}
}
if(flag1){
for(int i=1;i<=(n/2);i++){
printf("%d %d%c",a[(beg1+i-2+(n/2))%(n/2)+1],b[(beg2+i-2+(n/2))%(n/2)+1],(i==n/2)?'\n':' ');
}
}else{
for(int i=1;i<=(n/2);i++){
printf("%d %d%c",b[(beg2+i-2+(n/2))%(n/2)+1],a[(beg1+i-2+(n/2))%(n/2)+1],(i==n/2)?'\n':' ');
}
}
return 0;
}
CSUST 4019 听党指挥(思维+模拟)的更多相关文章
- 让CPU的占有率曲线听我指挥
最近我要在公司的一个study group负责AWS的AutoScaling功能的介绍.AWS可以根据instance(虚拟机)的CPU使用量进行scaling. 为了做demo,于是就有这样一个需求 ...
- 第1章 游戏之乐——让CPU占用率曲线听你指挥
让CPU占用率曲线听你指挥 写一个程序,让用于来决定Windows任务管理器(Task Manager)的CPU占用率.程序越精简越好,计算机语言不限.例如,可以实现下面三种情况: CPU的占用率固定 ...
- 让cpu占用率曲线听你指挥(多核处理器)
编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器) [版权声明]转载请注明出处 http://www.cnblogs.com/TenosDoIt/p/3242910.html [目录] 不考 ...
- 编程之美 之 让CPU占用率听你指挥
昨天在bbs上淘到了这本编程之美.顺手刷了第一章,很有意思.第一章的要求是要控制CPU曲线,绘制出对应的形状. 拿到这个问题,我的第一反应是, 是不是有这么一个API,能在任务管理器上的对应区域直接绘 ...
- CF--思维练习--CodeForces - 216C - Hiring Staff (思维+模拟)
ACM思维题训练集合 A new Berland businessman Vitaly is going to open a household appliances' store. All he's ...
- 思维+模拟--POJ 1013 Counterfeit Dollar
Sally Jones has a dozen Voyageur silver dollars. However, only eleven of the coins are true silver d ...
- C. Okabe and Boxes 思维 模拟 or 线段树
C. Okabe and Boxes 这个题目是一个有点思维的模拟,当时没有想到, 思维就是这个栈的排序这里,因为每次直接排序肯定会t的,所以不可以这么写,那怎么表示排序呢? 就是直接把栈清空,如果栈 ...
- Codeforces Round #706 (Div. 2)B. Max and Mex __ 思维, 模拟
传送门 https://codeforces.com/contest/1496/problem/B 题目 Example input 5 4 1 0 1 3 4 3 1 0 1 4 3 0 0 1 4 ...
- Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维
题意:博弈题面 给出一个数字序列 (>=11) 有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手 数字序列一定是奇 ...
随机推荐
- html2canvas.js——HTML转Canvas工具
我们经常会遇上动态生成海报的需求,而在Web前端中,生成图片非Canvas莫属.但是在实际工作当中,为了追求效率,我们会不可避免地去使用一些JS插件,而html2canvas.js就是一款优秀的插件, ...
- win10系统安装robotframework环境时,不能成功安装autoItLibrary报错的问题解决
安装了autoit-v3-setup.exe,把autoItLibrary导入ride.py后仍然置红,开始DOS环境下手动安装autoLibrary,执行命令后如下报错:Running setup. ...
- BIO编程
在实际的工作开发中,传统的模型有client/service模型.client端和service端要进行通信的话,有一种套接字的方式.传统的socket编程,包含一个socket服务端和一到多个soc ...
- mysql报错10061和10038
用navicat连接报错10038,用sqlyog报错10061,又去查看服务,发现服务丢失 经过一系列的查阅资料,用下面的方式解决了问题 1.用管理员的方式打开命令行窗口 2.进入mysql的bin ...
- 4G DTU无线数据透明传输终端
4G DTU是基于4G网络的远程无线数据透明传输终端,是一种物联网无线数据传输设备,使用公用运营商的4G网络为用户提供无线远距离数据传输功能,使用工业级32位的高性能通信处理器和工业级无线模块,以嵌入 ...
- python机器学习实现人脸图片自动补全
人脸自动补全 关注公众号"轻松学编程"了解更多. 1.导包 import matplotlib.pyplot as plt import numpy as np import pa ...
- C语言100题集合005-删除一维数组中所有相同的数,使之只剩一个
系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...
- Apache Kylin远程代码执行漏洞复现(CVE-2020-1956)
Apache Kylin远程代码执行(CVE-2020-1956) 简介 Apache Kylin 是美国 Apache 软件基金会的一款开源的分布式分析型数据仓库.该产品主要提供 Hadoop/Sp ...
- php 导出excel 10万数据
php导出excel 10万数据(此代码主要测试用) 在工作当中要对一些基本信息和其他信息导出 起初信息比较小无所谓.... 但当信息超出65535的时候 发现点问题了 超出了 而且 反应速度很慢 实 ...
- 用数组实现队列(顺序队列&循环队列)
用数组实现队列(顺序队列&循环队列) 顺序队列 ️ 队列(先进先出) 几个问题: 队列方法:入队.出队 队列的存储:即队首队尾两个指针, 扩容:如果队列容量不够了,应该扩容,如果队尾没有位置了 ...