洛谷 P1563 玩具谜题
2024-09-14 13:47:27
如果你想不耗费脑力做出这个题目,往下看:
本萌新看到这个题目,想到了乘法法则,题目中左右方向要判断两次,很耗脑力,和乘法中的正负号判断非常像。
抽象一点:这个人向内向外就是乘法中括号外的正负号,他的左右方向是括号内的正负号,所以我们以singer为标准,每个人的 0 (朝内)为 1 ,每个人的 1 (朝外)为 -1 。
而他们的左右方向,因为题目图中是逆时针走向,所以和他们的朝内朝外是相反的,故判断每个人左右方向时, 0 为 -1 , 1 为 1 。
最后将两个判断方向的数乘起来(这事当然交给电脑了),就是最终方向。代码如下:
#include<iostream>
using namespace std;
int n,m,a,b,i,num[100001];
string name[100001];//准备工作
int main(){
cin>>n>>m;
for(i=1;i<=n;i++){
cin>>num[i]>>name[i];//输入
if(num[i]==0)num[i]=1;
else num[i]=-1;//以singer朝向为准,0为1,1为-1;
}
i=1;//从第一个开始循环
while(m){
cin>>a>>b;
if(a==0)a=-1;//题目的图中为逆时针,故 1为1,0为-1;
i+=num[i]*a*b;//乘法法则,把方向判断扔给电脑去算;
if(i<1)i=n+i;//边界情况
if(i>n)i%=n;//把他们围成一个圈
m--;
}
cout<<name[i];//输出,圆满
return 0;
}
最新文章
- [翻译]AKKA笔记 - DEATHWATCH -7
- mac mysql5.7重置root密码
- jeesz源码下载
- async和await浅析
- 阻抗计算(用SI9000如何计算微带线)
- error CS0103: 当前上下文中不存在名称“ViewBag”
- 【Gym 100015A】Another Rock-Paper-Scissors Problem
- 使用jsTree动态加载节点
- datagrid combobox事件更新编辑状态下的datagrid行
- c++中basic_istream::getline()的返回值何时为真
- “AIR SDK 0.0: AIR SDK location “...\devsdks\AIRSDK\Win” does not exist.”问题解决~
- hexo 部署至Git遇到的坑
- ⒃bootstrap组件 轮播图 基础案例
- linux 内存 大于 jvm xmx
- .Net 5分钟搞定网页实时监控
- http协议无状态中的 ";状态"; 到底指的是什么?!
- HTML 块级元素 行内元素
- Ubantu linux中使用PyCharm之---破解PyCharm,实现永久免费试用
- JVM(二)之GC(转)
- # 20175213 2018-2019-2 《Java程序设计》第2周学习总结