zoukankan      html  css  js  c++  java
  • ZOJ 3757 Alice and Bod 模拟

    上次的ZJU月赛题,规则比较复杂,当时就连题意都没摸清楚,只觉得非常复杂

    比完后敲啊敲啊敲,连续WA啊,该反思下自己,没按照题意来设置条件,题目中说了 白球入袋并且。。。 给对手加分 ,白球未入袋并且。。。给对手加分,这个白球未入袋的情况也要加在判断条件里啊啊啊啊,还有就是有个地方要排序我居然忘了,好久都没发现。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int n,m;
    int a[1010];
    int vis[10010];
    int ans[2];
    int hit[1010],c[1010];
    int main()
    {
        while (scanf("%d%d",&n,&m)!=EOF)
        {
            for (int i=0;i<n;i++)
                scanf("%d",&a[i]);
            sort(a,a+n);
            memset(vis,0,sizeof vis);
            int target=0,turn=0;
            ans[0]=ans[1]=0;
            int stock,in;
            for (int i=0;i<m;i++)
            {
                scanf("%d",&stock);
                bool ishit=0;
                for (int i=0;i<stock;i++)
                {
                    scanf("%d",&hit[i]);
                    if (hit[i]==a[target]) ishit=1;
                }
                sort(hit,hit+stock);
                scanf("%d",&in);
                bool flag=false;
                int sum=0;
                for (int i=0;i<in;i++)
                {
                    scanf("%d",&c[i]);
                    if (c[i]==a[target]) flag=true;
                    sum+=c[i];
                    vis[c[i]]=1;
                }
                sort(c,c+in);
                if (stock==0)
                {
                    ans[1-turn]+=a[target];
                }
                else
                if (in!=0 && c[0]==0){
                    ans[1-turn]+=hit[stock-1];
                }
                else
                if (stock>1 || (stock==1 && hit[0]!=a[target])){
                        ans[1-turn]+=hit[stock-1];
                }
                else
                if (in>0 && flag )
                {
                    ans[turn]+=sum;
                    //turn=1-turn;
                    //target++;
                    while (vis[a[target]]) target++;
                    continue;
                }
                if (in>0)
                {
                    ans[1-turn]+=sum;
                }
                turn=1-turn;
                while (vis[a[target]]) target++;
            }
            printf("%d : %d
    ",ans[0],ans[1]);
        }
        return 0;
    }
  • 相关阅读:
    第一次Java测试及感触
    第七周学习
    第六周学习
    第5周学习
    第四周学习
    第三周学习
    浅略学习
    读完《大道至简》后的小感悟
    初识JAVA
    Java课后作业之石家庄地铁系统PSP表格20190403
  • 原文地址:https://www.cnblogs.com/kkrisen/p/3581045.html
Copyright © 2011-2022 走看看