zoukankan      html  css  js  c++  java
  • CF388C Fox and Card Game

    CF388C Fox and Card Game

    题意

    两个人在玩一个游戏

    有N堆石子,A可以任意选一堆石子的第一个取走,而B可以任意选一堆石子的最后一个取走

    每个石子有一个得分,AB都想最大化他们的得分

    题解

    显然当二人都用最好的方法时:

    A每次选取一堆的第一个,B每次选取A选取的那一堆的最后一个

    他们都可以把一堆石子的前面半截和后面半截选完

    对于奇数堆而剩下的石子从大到小取即可

    #include<bits/stdc++.h>
    
    #define LL long long
    
    using namespace std;
    
    inline LL read()
    {
        LL f = 1 , x = 0;
        char ch;
        do
        {
            ch = getchar();
            if(ch=='-') f=-1;
        } while(ch<'0'||ch>'9');
        do
        {
            x=(x<<3) + (x<<1) + ch - '0';
            ch = getchar();
        }while(ch>='0'&&ch<='9');
        return f*x;
    }
    
    const int MAXN = 1e5 + 10;
    
    int n;
    long long ans1,ans2;
    int a[MAXN],cnt;
    
    inline bool cmp(int a,int b)
    {
        return a>b;
    }
    
    int main()
    {
        n = read();
        for(int i=1;i<=n;i++)
        {
            int k = read();
            for(int i=1;i<=(k/2);i++)
            {
                ans1 += read();
            }
            if(k&1) a[++cnt] = read();
            for(int i=1;i<=(k/2);i++)
            {
                ans2 += read();
            }
        }
        sort(a+1,a+cnt+1,cmp);
        for(int i=1;i<=cnt;i++)
        {
            if(i&1) ans1 += a[i];
            else ans2 += a[i]; 
        }
        cout << ans1 << " " << ans2 << endl;
    }
  • 相关阅读:
    从迷宫终点出发——Leo鉴书36
    OCP-1Z0-053-V13.02-238题
    OCP-1Z0-053-V13.02-233题
    OCP-1Z0-053-V13.02-232题
    OCP-1Z0-053-V13.02-228题
    OCP-1Z0-053-V13.02-226题
    OCP-1Z0-053-V13.02-225题
    OCP-1Z0-053-V13.02-221题
    OCP-1Z0-053-V13.02-219题
    OCP-1Z0-053-V13.02-216题
  • 原文地址:https://www.cnblogs.com/wlzs1432/p/12074052.html
Copyright © 2011-2022 走看看