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那么就是第一个赢 否则就是第二个人赢 第一个人先手 数字序列一定是奇 ...
随机推荐
- 二进制获取List中缺少的对象
今天,我需要做一个大数据页面,其中分了5类 大概就像这样:1类,2类,3类,4类,5类...... 但是由于数据没有足够多,所以现在统计出来的数据缺少了一到两类,或者更多,所以现在要找出在List在总 ...
- MongoDB Java连接---MongoDB基础用法(四)
MongoDB 连接 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN ...
- Luogu P6280 [USACO20OPEN]Exercise G
题意 定义一个长度为 \(n\) 的置换的步数为将 \(P=(1,2,\cdots,n)\) 在该置换操作下变回原样的最小次数. 求所有 \(K\) 的和,使得存在一个长度为 \(n\) 的置换使得其 ...
- 4g工业路由器的覆盖范围分析
4G工业路由器通常覆盖范围在60-80米之间,而影响4G工业路由器的覆盖范围有以下几个因素. 影响4g工业路由器覆盖范围的因素一:环境 空旷的环境下4g工业路由器的信号覆盖范围必然更加广阔,如果传输环 ...
- PuTTY SSH 使用证书免密码登录
1.用PuTTY SSH 密钥生成工具puttygen.exe生成密钥.生成的密钥类型和位数按照默认的就OK,SSH-2 RSA,1024位生成密钥时你需要在空白区域移动鼠标,以便产生随机数据点击保存 ...
- Kubernetes K8S之affinity亲和性与反亲和性详解与示例
Kubernetes K8S之Node节点亲和性与反亲和性以及Pod亲和性与反亲和性详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-mas ...
- react 实现组件嵌套以及子组件与父组件之间的通信
当子组件触发onChange事件时,实际调用的是父组件中的handelSelect函数,通俗来说就是父组件通过属性handleSelect实现与子组件之间的通信. 父组件:SignupForm 子组件 ...
- js 元素添加多个监听
function addListener(element,e,fn){ if(element.addEventListener){ element.addEventListen ...
- ABP框架中一对多,多对多关系的处理以及功能界面的处理(1)
在我们开发业务的时候,一般数据库表都有相关的关系,除了单独表外,一般还包括一对多.多对多等常见的关系,在实际开发过程中,需要结合系统框架做对应的处理,本篇随笔介绍基于ABP框架对EF实体.DTO关系的 ...
- 【SpringCloud】02.微服务与SpringCloud
微服务的特点 一系列微小的服务共同组成 跑在自己的进程里 每个服务为独立的业务开发 独立部署 分布式管理 异构--不同的语言.不同类型的数据库 微服务架构的基础框架/组件 服务注册发现 服务网关(Se ...