zoukankan      html  css  js  c++  java
  • HDU 3378

    http://acm.hdu.edu.cn/showproblem.php?pid=3378

    规则去玩三国杀就理解了

    纯模拟

    注意的点:有已经分出胜负但还在杀的情况出现,所以要每次杀操作前判断是否分出胜负,如果已经分出胜负了就continue,不用接着往下操作

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std ;
    int n ;
    typedef struct L{
        char js[5] ;
        int al ;
        int esc ;
        int sc ;
    }L ;
    L kk[101] ;
    int pk ;
    int bjnj,wnj ;
    int ok()
    {
        int f=0 ;
        int cntfz=0 ;
        int cntnj=0 ;
        int cntzc=0 ;
        for(int i=0 ;i<n ;i++)
        {
            if(!strcmp(kk[i].js,"ZG"))
            {
                if(kk[i].al)
                    f=1 ;
            }
            if(!strcmp(kk[i].js,"FZ"))
            {
                if(kk[i].al)
                    cntfz++ ;
            }
            if(!strcmp(kk[i].js,"NJ"))
            {
                if(kk[i].al)
                {
                    bjnj=i ;
                    cntnj++ ;
                }
            }
            if(!strcmp(kk[i].js,"ZC"))
            {
                if(kk[i].al)
                    cntzc++ ;
            }
        }
        if(!(cntzc+cntfz) && cntnj==1 && f)
        {
            pk=1 ;
            wnj=bjnj ;
        }
        if(!(cntfz+cntnj))
        {
            if(pk)
            {
                kk[wnj].sc=n ;
            }
            for(int i=0 ;i<n ;i++)
            {
                if(!strcmp(kk[i].js,"ZG"))
                    kk[i].sc=4+cntzc*2+kk[i].esc ;
                if(!strcmp(kk[i].js,"ZC"))
                    kk[i].sc=5+cntzc+kk[i].esc ;
            }
            return 1 ;
        }
        if(!f)
        {
            if(cntnj==1 && cntfz==0 && cntzc==0)
            {
                for(int i=0 ;i<n ;i++)
                if(!strcmp(kk[i].js,"ZG"))
                    kk[i].sc=1 ;
                kk[wnj].sc=4+n*2 ;
                return 1 ;
            }
            for(int i=0 ;i<n ;i++)
            {
                if(!strcmp(kk[i].js,"NJ"))
                    if(kk[i].al)
                        kk[i].sc=1 ;
                if(!strcmp(kk[i].js,"FZ"))
                    kk[i].sc=cntfz*3+kk[i].esc ;
            }
            return 1 ;
        }
        return 0 ;
    }
    int main()
    {
        int t ;
        scanf("%d",&t) ;
        while(t--)
        {
            int m ;
            scanf("%d%d",&n,&m) ;
            for(int i=0 ;i<n ;i++)
            {
                scanf("%s",kk[i].js) ;
                kk[i].al=1 ;
                kk[i].esc=0 ;
                kk[i].sc=0 ;
            }
            pk=0 ;
            for(int i=0 ;i<m ;i++)
            {
                int a,b ;
                scanf("%d%d",&a,&b) ;
                if(ok())
                    continue ;
                kk[b].al=0 ;
                if(!strcmp(kk[a].js,"FZ") && (!strcmp(kk[b].js,"ZG")))
                {
                    kk[a].esc+=2 ;
                }
                if(!strcmp(kk[a].js,"FZ") && (!strcmp(kk[b].js,"ZC")))
                {
                    kk[a].esc++ ;
                }
                if(!strcmp(kk[a].js,"FZ") && (!strcmp(kk[b].js,"NJ")))
                {
                    kk[a].esc++ ;
                }
                if(!strcmp(kk[a].js,"ZG") && (!strcmp(kk[b].js,"FZ")))
                {
                    kk[a].esc++ ;
                }
                if(!strcmp(kk[a].js,"ZG") && (!strcmp(kk[b].js,"NJ")))
                {
                    kk[a].esc++ ;    
                }
                if(!strcmp(kk[a].js,"ZC") && (!strcmp(kk[b].js,"FZ")))
                {
                    kk[a].esc++ ;    
                }
                if(!strcmp(kk[a].js,"ZC") && (!strcmp(kk[b].js,"NJ")))
                {
                    kk[a].esc++ ;    
                }
            }
            ok() ;
            for(int i=0 ;i<n ;i++)
            {
                if(!i)
                    printf("%d",kk[i].sc) ;
                else
                    printf(" %d",kk[i].sc) ;
            }
            putchar('
    ') ;
        }
        return 0 ;
    }
    View Code
  • 相关阅读:
    Java-单机版的书店管理系统(练习设计模块和思想_系列 二 )
    HDOJ 1279 验证角谷猜想
    HDOJ 1266 Reverse Number(数字反向输出题)
    lucas定理
    CRT && exCRT模板
    exgcd模板
    洛谷P4774 屠龙勇士
    洛谷P1477 假面舞会
    洛谷P2704 炮兵阵地
    CF1080
  • 原文地址:https://www.cnblogs.com/xiaohongmao/p/3505626.html
Copyright © 2011-2022 走看看