zoj 3757&&3758

3757一个模拟题,简单,但容易错;

3758 大素数判定就行;

#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100009
using namespace std;

int ans[3];
int hit[maxn];
int in[maxn];
int ball[maxn];
bool vis[maxn];

int main()
{
    int n,m;
    int p,q;
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        ans[0]=0;
        ans[1]=0;
        memset(vis,0,sizeof vis);
        for(int i=0; i<n; i++)
            scanf("%d",&ball[i]);
        sort(ball,ball+n);
        int ma1=-1;
        int sumofin=0;
        int tar=0;
        int turn=0;
        for(int i=0; i<m; i++)
        {
            bool flag1=0,flag2=0,flag3=0;
            for(tar; tar<n; tar++)
                if(vis[ball[tar]]==0)
                    break;
            ma1=0;
            sumofin=0;
            scanf("%d",&p);
            for(int i=0; i<p; i++)
            {
                scanf("%d",&hit[i]);
                if(hit[i]>ma1)ma1=hit[i];
                if(hit[i]==ball[tar]&&p==1) flag1=1;//只击中目标球;
            }
            scanf("%d",&q);
            for(int i=0; i<q; i++)
            {
                scanf("%d",&in[i]);
                sumofin+=in[i];
                vis[in[i]]=1;
                if(in[i]==ball[tar])flag2=1;//目标球进了;
                if(in[i]==0)flag3=1;//白球进了;
            }
            if(p==0)
            {
                turn=1-turn;
                ans[turn]+=ball[tar];
            }
            else
            {
                if(flag3==0&&flag1==0)
                {
                    turn=1-turn;
                    ans[turn]+=ma1;
                    ans[turn]+=sumofin;
                }
                else if(flag3&&p)
                {
                    turn=1-turn;
                    ans[turn]+=ma1;
                    ans[turn]+=sumofin;
                }
                else if(flag2==0)
                {
                    turn=1-turn;
                    ans[turn]+=sumofin;
                }
                else
                {
                    ans[turn]+=sumofin;
                }
            }
        }
        printf("%d : %d\n",ans[0],ans[1]);
    }
    return 0;
}
View Code

 

posted @ 2014-03-02 23:11  Yours1103  阅读(246)  评论(0编辑  收藏  举报