zoukankan      html  css  js  c++  java
  • [NOIP2016]玩具谜题

    题目传送门

    sol

    给你(n)个数,(m)个指令,我们可以分成四种情况来讨论:
    ①往左边数且当前位置朝内
    ②往左边数且当前位置朝外
    ③往右边数且当前位置朝内
    ④往右边数且当前位置朝外
    这样来解决问题,将问题简单化,自然就迎刃而解了

    code

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+10;
    struct node{
    	int chao;//朝向
    	char name[11];//名字
    }e[maxn];
    int n,m;
    bool flag;
    inline int solve(int fangx,int step,int now){//fangx为方向,step为步数,now为移动前的位置	
    	flag=false;
    	if(fangx==0){//左数 
    		if(e[now].chao==0){//朝内左数
    			now-=step;if(now<1)now+=n;
    			flag=true;
    		}
    		if(e[now].chao==1&&!flag) now+=step;if(now>n)now-=n;//朝外左数 
    	}
    	if(fangx==1){//右数 
    		if(e[now].chao==0){//朝内右数 
    			now+=step;if(now>n)now-=n;
    			flag=true;
    		}
    		if(e[now].chao==1&&!flag) now-=step;if(now<1)now+=n;//朝外右数
    	}
    	return now;
    }
    int x;
    int main(){
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++)scanf("%d%s",&e[i].chao,e[i].name+1);
    	int x=1;
    	for(int i=1,a,s;i<=m;i++){
    		scanf("%d%d",&a,&s);
    		x=solve(a,s,x);//solve函数计算每一次询问后的位置
    	}
    	printf("%s",e[x].name+1);//完美输出
    	return 0;
    }
    
  • 相关阅读:
    [css]继承关系(一)
    Trie树-提高海量数据的模糊查询性能
    [C]struct结构化数据的一些要点
    [C]表达式结合规律和运算符优先级
    [C]副作用和序列点
    [C]链接和生存周期
    [PHP]关于连接MySQL的问题
    IT网址大全
    VUE 生命周期
    Vue 组件间传值
  • 原文地址:https://www.cnblogs.com/qzwer/p/13168178.html
Copyright © 2011-2022 走看看