• NOIP2016 D1T1 玩具谜题


    洛谷P1563

    看完了noip2017觉得noip2016是真的简单……2017第一题就卡住2016第一题10分钟AC

    思路:

    m<=100000很明显暴力模拟就可以

    唯一有一点点难度的地方就是小人的朝向对位置的影响

    写个函数用if else直接判断也可以但这里提供一个更简单的方法:将指令存储在数组中

    题目给的信息是0表示朝向圈内,1表示朝向圈外,且0表示向左数,1表示向右数

    直接用题目输入的逆时针环,我们可以推出,朝向和数的方向均为0或1时为-,朝向和数的方向不同时为+(这个很容易理解吧)

    废话不多说先贴个代码:

     1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 int ord[2][2]={-1,1,1,-1};//存放指令 
     5 string job[100000];//职业存储 
     6 int face[100000];//小人朝向 
     7 int main()
     8 {
     9     int n,m;
    10     cin>>n>>m;
    11     for(int i=0;i<n;i++)
    12         cin>>face[i]>>job[i];
    13     int place=0;//位置标记 
    14     while(m--)
    15     {
    16         int a,s;
    17         cin>>a>>s;
    18         place+=ord[a][face[place]]*s;//操作 
    19         place%=n;
    20         if(place<0)
    21             place+=n;
    22     }
    23     cout<<job[place]<<endl;
    24     return 0;
    25 }

    两点注意事项:

    1、下标要从0开始(方便使用取模运算)

    2、每次操作后要取模,但注意place<0的时候C++自带模运算的结果是<0的,此时只要+n就可以(博主亲自测试过,C++对于负数的模运算定义为其绝对值的模运算,结果的符号取决于被除数的符号(因为模是由整除定义来的:a%b=a-a/b(整除)))

  • 相关阅读:
    EF Core 执行SQL语句和存储过程
    SQL优化之SELECT COUNT(*)
    SQL优化之SQL 进阶技巧(下)
    SQL优化之SQL 进阶技巧(上)
    旅游攻略:重庆红色之旅
    ASP.NET Core在CentOS上的最小化部署实践
    Windows平台部署Asp.Net Core应用
    kali 免杀工具shellter安装以及使用
    Ubuntu Server18.04配置静态IP
    Centos7系统配置静态IP
  • 原文地址:https://www.cnblogs.com/LiHaozhe/p/9499376.html
Copyright © 2020-2023  润新知