• 洛谷 P1563 玩具谜题


    如果你想不耗费脑力做出这个题目,往下看:

    本萌新看到这个题目,想到了乘法法则,题目中左右方向要判断两次,很耗脑力,和乘法中的正负号判断非常像。

    抽象一点:这个人向内向外就是乘法中括号外的正负号,他的左右方向是括号内的正负号,所以我们以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;
    }
    
    ✐☎博主撰文不易,转载还请注明出处;若对本文有疑,请私信或在下方讨论中提出。O(∩_∩)O谢谢!☏

    ☃〔尽管小伙伴们肯定有千百种方式针对,但博主还是极其非常十分不要脸的把反对键吃掉辣!〕☃

    ✿『$At$ $last$:非常一(hu)本(shuo)正(ba)经(dao)的:博主很笨,请不要欺负他』✿✍

  • 相关阅读:
    如何把本地项目上传到Github
    Git使用详细教程
    PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件” 
    delete
    CentOS7 vs centos6
    CentOS 七 vs CentOS 6的不同
    内网端口转发方法汇总
    推荐给开发人员的6个实用命令行工具
    从大公司离职去小公司当 CTO 是一种怎样的体验?
    如果要做点对点的视频传输应该一般使用什么协议
  • 原文地址:https://www.cnblogs.com/812-xiao-wen/p/9879266.html
Copyright © 2020-2023  润新知