• hdu-1107(模拟题)


    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1107

    注意:1.路线是要反向的,走不通就反向;

    2.输入输出全部是整形

    3.攻击力不断变化

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    struct Node{
        int x,y,fg;
        int nei,wu,she,gj,dir;
        char ch;
        int f(char tt)
        {
            if(tt=='S') return floor((0.5*nei+0.5*wu)*(she+10.0)/100.0);
            else if(tt=='W') return floor((0.8*nei+0.2*wu)*(she+10.0)/100.0);
            else if(tt=='E') return floor((0.2*nei+0.8*wu)*(she+10.0)/100.0);
        }
    };
    int check(int x,int y)
    {
        if(x<1||y>12) return 0;
        if(y<1||x>12) return 0;
        else return 1;
    }
    Node a[1200];
    int vis[20][20],vc[1200];
    int main(void)
    {
        int i,t,n,len,k,j;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            getchar();
            i=0;
            while(scanf("%c",&a[i].ch)&&(a[i].ch!='0'))
            {
                scanf(" %d %d %d %d %d",&a[i].x,&a[i].y,&a[i].nei,&a[i].wu,&a[i].she);
                a[i].dir=1;
                getchar();
                i++;
            }
        //    cout<<"---"<<i<<endl;
            len=i;
            for(i=0;i<len;i++)
            {
                if(a[i].ch=='S') a[i].fg=1;
                else if(a[i].ch=='W') a[i].fg=2;
                else if(a[i].ch=='E') a[i].fg=3;
                a[i].gj=a[i].f(a[i].ch);
                //cout<<a[i].gj<<endl;
            }
            //cout<<n<<"  --1i4dfjsdofsd
    ";
            for(i=0;i<n;i++)
            {
                memset(vis,0,sizeof(vis));
                memset(vc,0,sizeof(vc));
                for(j=0;j<len;j++)
                {
                    vis[a[j].x][a[j].y]++;
                }
                for(j=0;j<len;j++)
                {
                    for(k=0;k<len;k++)
                    {
                        if((a[j].fg!=a[k].fg)&&j!=k&&a[j].fg!=-1&&vis[a[j].x][a[j].y]==2&&vc[j]==0&&vc[k]==0&&(a[j].x==a[k].x&&a[j].y==a[k].y))
                        {
                            a[j].she=a[j].she-a[k].gj;
                            a[k].she=a[k].she-a[j].gj;
                            //cout<<a[k].gj<<" ----- "<<a[j].gj<<endl;
                            a[k].gj=a[k].f(a[k].ch);
                            a[j].gj=a[j].f(a[j].ch);
                            vc[j]=1;vc[k]=1;
                            if(a[j].she<=0) a[j].fg=-1;
                            if(a[k].she<=0) a[k].fg=-1;
                        }
                    }
                }
                for(j=0;j<len;j++) //移动 
                {
                    if(a[j].ch=='S')
                    {
                        a[j].x+=a[j].dir;
                        if(check(a[j].x,a[j].y)==0)
                        {
                            a[j].dir*=(-1);
                            a[j].x+=2*a[j].dir;
                        }
                    }
                    else if(a[j].ch=='W') 
                    {
                        a[j].y+=a[j].dir;
                        if(check(a[j].x,a[j].y)==0)
                        {
                            a[j].dir*=(-1);
                            a[j].y+=2*a[j].dir;
                        }
                    }
                    else if(a[j].ch=='E')
                    {
                        if(a[j].x==1&&a[j].y==12||a[j].x==12&&a[j].y==1) continue;
                        a[j].x+=a[j].dir,a[j].y+=a[j].dir;
                        if(check(a[j].x,a[j].y)==0)
                        {
                            a[j].dir*=(-1);
                            a[j].x+=2*a[j].dir;
                            a[j].y+=2*a[j].dir;
                        }
                    }
                }
            }
            int ans1=0,ans2=0,ans3=0;
            int num1=0,num2=0,num3=0;
            for(i=0;i<len;i++)
            {
                if(a[i].fg==1) num1++,ans1+=a[i].she;
                else if(a[i].fg==2) num2++,ans2+=a[i].she;
                else if(a[i].fg==3) num3++,ans3+=a[i].she;
            }
            printf("%d %d
    ",num1,ans1);
            printf("%d %d
    ",num2,ans2);
            printf("%d %d
    ",num3,ans3);
            printf("***
    ");
        }
        return 0;
    }
  • 相关阅读:
    Linux启动或禁止SSH用户及IP的登录
    How to Setup Chroot SFTP in Linux (Allow Only SFTP, not SSH)
    vsftp被动模式启用iptables访问设置
    关于使用Element.getNodeValue()返回NULL的问题
    Quartz 有状态的JobDataMap
    log4j学习日记-写入数据库
    LeetCode 551. Student Attendance Record I (学生出勤纪录 I)
    LeetCode 680. Valid Palindrome II (验证回文字符串 Ⅱ)
    LeetCode 125. Valid Palindorme (验证回文字符串)
    LeetCode 541. Reverse String II (反转字符串 II)
  • 原文地址:https://www.cnblogs.com/2018zxy/p/9898366.html
Copyright © 2020-2023  润新知