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

    基于观察可以发现,双方都一定能保证取到每一列靠近自己的 (lfloor frac{k}{2} floor) 个元素。

    那么一旦一个人想要取另一个人能必然能取的部分,另一个人必然可以不让其取到。

    因此,一个人去取对方一定能取到的部分是无意义的。

    因此双方的策略必然都是先将靠近自身的 (lfloor frac{k}{2} floor) 个元素取完,在抢中间剩下的元素。

    那么对于最后剩下的元素,每次贪心的选择一定是最优的,因此双方的选择必然都是每次选取当前最大的元素。

    那么我们按照这个流程模拟即可,复杂度 (O(sum s_i + n log n))

    #include <bits/stdc++.h>
    using namespace std;
    #define rep(i, l, r) for (int i = l; i <= r; ++i)
    #define dep(i, l, r) for (int i = r; i >= l; --i)
    const int N = 100 + 5;
    int n, m, s, x, A, B, a[N];
    int read() {
        char c; int x = 0, f = 1;
        c = getchar();
        while (c > '9' || c < '0') { if(c == '-') f = -1; c = getchar();}
        while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
        return x * f;
    }
    int main() {
        n = read();
        rep(i, 1, n) {
            s = read();
            if(s & 1) {
                rep(j, 1, s / 2) A += read();
                a[++m] = read();
                rep(j, 1, s / 2) B += read();
            }
            else {
                rep(j, 1, s / 2) A += read();
                rep(j, 1, s / 2) B += read();
            }
        }
        sort(a + 1, a + m + 1);
        dep(i, 1, m) {
            if((m - i + 1) & 1) A += a[i];
            else B += a[i];
        }
        printf("%d %d", A, B);
        return 0;
    }
    
    GO!
  • 相关阅读:
    jquery的y一些实用方法
    关于windows cmd 控制台输出中文
    大数据平台数据治理与建设方案
    django+easyui
    pyecharts 学习使用网址
    林业信息化整理 什么是林业信息化及如何进行林业信息化
    django 批量提交
    基于leaflet地图可视化(一)
    FastAPI 学习手册
    Python学习手册
  • 原文地址:https://www.cnblogs.com/Go7338395/p/13845164.html
Copyright © 2011-2022 走看看