zoukankan      html  css  js  c++  java
  • zay大爷的神仙题目 D1T1-大美江湖

    在前几天的时候,千古神犇zay(吊打zhx那个)出了一套神仙题目,所以我得来分析分析QWQ

    先补个网易云链接QWQ

     

    毕竟是T1嘛,还算是比较简单的,那道题,读完题目就发现是个中等模拟(猪国杀算大模拟的话QWQ)

    然后就按照题目来写啦,大面上的东西不大难,但是细节很多

    1.读入地图的时候会出现把换行读进去的诡异情境,我的解决方案是读完n个之后char一个temp,来补掉这个换行,要是哪位大佬有别的方法的话,欢迎在评论区斧正QWQ

    2.上下左右的移动,我一开始xy++--想当然了,导致出来的结果是错误的,因为设置数组的方式不同,所以加减变化的影响是不一样的,这个得亲自试验一下

    3.因为计算血量的时候有一个该死的分数,所以你得用double,而且ceil上取整取出来的竟然还是个double?????真的是很玄学了

    这几个点都注意到的话应该就没有什么问题了

    代码贴一下吧

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    char map[110][110];
    int n,m,hp,st,de,pst,pde,q,x,y,blood;
    int main()
    {
        freopen("mzq.in","r",stdin);
        freopen("mzq.out","w",stdout);    
        scanf("%d%d",&n,&m);
        for (int i = 1; i <= n; ++i)
        {
            char qwq = getchar(); 
            for (int j = 1; j <= m; ++j)
                map[i][j] = getchar();
        }    
        scanf("%d%d%d",&hp,&st,&de);//怪物 
        scanf("%d%d",&x,&y);//起点
        scanf("%d%d",&pst,&pde);//炮姐初始的 ST 和 DE。
        scanf("%d",&q);
        for(int i = 1; i <= q;++i)
        {
            int temp;
            scanf("%d",&temp);
            if(temp == 1)
                printf("%d %d %d
    ",blood,pst,pde);
            else
            {
                int canshu;
                scanf("%d",&canshu);
                if(canshu == 1)
                    y--;
                if(canshu == 2)
                    y++;
                if(canshu == 3)
                    x--;
                if(canshu == 4)
                    x++;
                    
                if(map[x][y] == '.')
                    continue;
                if(map[x][y] == 'R')
                {
                    blood -= 10;
                    if(blood <= 0)
                        blood = 0;
                }
                if(map[x][y] == 'Q')
                    pst += 5;
                if(map[x][y] == 'Y')
                    pde += 5;
                if(map[x][y] == 'M')
                {
                    int temp1 = ceil(double(hp)/ double(max(1,pst - de)));
                    int temp2 = max(1 , st - pde);
                    blood += max(1 , temp1 * temp2);
                }
                    
            }
        }
        return 0;
    }

    OK

    完事!

  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/this-is-M/p/11073153.html
Copyright © 2011-2022 走看看