zoukankan      html  css  js  c++  java
  • zoj 3757 Alice and Bob and Cue Sports 模拟

    题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<string>
    #include<map>
    #include<set>
    #include<cmath>
    #include<sstream>
    #include<queue>
    
    #define MAXN 1050
    #define PI acos(-1.0)
    #define REP(i,n) for(int i=0; i<n; i++)
    #define FOR(i,s,t) for(int i=s; i<=t; i++)
    #define show(x) { cerr<<">>>"<<#x<<" = "<<x<<endl; }
    #define showtwo(x,y) { cerr<<">>>"<<#x<<"="<<x<<"  "<<#y<<" = "<<y<<endl; }
    using namespace std;
    
    int n,m;
    int a[MAXN],ans[2];
    bool used[MAXN*10];
    
    int main()
    {
        //freopen("E:\acm\input.txt","r",stdin);
        while(cin>>n>>m)
        {
            memset(used,0,sizeof(used));
            a[0] = ans[0] = ans[1] = 0;
            FOR(i,1,n) scanf("%d",&a[i]);
            sort(a+1,a+n+1);
    
            int cur = 0,i = 1;
            while(m--)  //去第i个球
            {
                while(used[a[i]])  i++;
    
                int p,q,p_largest ,q_sum;
                bool target_in_p,target_in_q,cue_in_q;
                q_sum = p_largest  = 0;
                target_in_p = target_in_q = cue_in_q = 0;
                cin>>p;
                FOR(j,1,p)
                {
                    int num; cin>>num;
                    p_largest = max(p_largest,num);
                    if(num == a[i]) target_in_p = true;
                }
                cin>>q;
                FOR(j,1,q)
                {
                    int num; cin>>num;
                    if(num == a[i]) target_in_q = true;
                    if(num == 0)    cue_in_q = true;
                    else            used[num] = true;
                    q_sum += num;
                }
    
                bool foul = false;
                if(p == 0)
                    ans[cur^1] += a[i],foul = true;
                else if( !cue_in_q && (!target_in_p || p > 1 ))
                    ans[cur^1] += p_largest,foul = true;
                else if(cue_in_q)
                    ans[cur^1] += p_largest,foul = true;
    
                if(!foul && target_in_q)
                {
                    ans[cur] += q_sum;
                    cur ^= 1;
                }
                else if((target_in_q &&  foul) || ( !target_in_q && q-cue_in_q > 0) )
                {
                    ans[cur^1] += q_sum;
                }
                cur ^= 1;
            }
            printf("%d : %d
    ",ans[0],ans[1]);
        }
    }
    View Code
  • 相关阅读:
    简单有效 四招教你保护好WiFi网络安全
    WP8手机安装《神庙逃亡》的教程
    如何关闭iOS7中的iPhone广告跟踪系统
    如何隐藏任务栏图标
    MVC中Controller和Action讲解上篇
    node.js
    express
    node.js+socket.io安装
    自定义view文字垂直居中
    AndroidTouch事件总结
  • 原文地址:https://www.cnblogs.com/acmdeweilai/p/3605212.html
Copyright © 2011-2022 走看看