zoukankan      html  css  js  c++  java
  • [POI2010]GRA-The Minima Game

    OJ题号:洛谷3507

    思路:

    如果选了$k_i$,那么你的对手就可以选上所有$geq{k_i}$的数。那么他其中获得的分数也一定$geq{k_i}$。

    如果你选了$k_i$以及所有$geq{k_i}$的数,那么对手无论怎么选,所获得的分数都一定$<{k_i}$,无论如何都不会超过你。

    因此,若要保证最优,如果选了$k_i$,同时一定要选上所有$geq{k_i}$的数。

    我们可以将这n个数从小到大排序。

    设${k_0}sim{k_i}$中,双方最大差为$f_i$。易得DP方程$f_i=max(k_j-f_{j-1})(0leq{j}le{i})$。

    实现上也可以用$ans$维护$f$数组的前缀$max$。

     1 #include<cstdio>
     2 #include<algorithm>
     3 int main() {
     4     int n;
     5     scanf("%d",&n);
     6     int k[n];
     7     for(int i=0;i<n;i++) scanf("%d",&k[i]);
     8     std::sort(&k[0],&k[n]);
     9     int ans=0;
    10     for(int i=0;i<n;i++) ans=std::max(ans,k[i]-ans);
    11     printf("%d
    ",ans);
    12     return 0;
    13 }
  • 相关阅读:
    安装selenium
    虚拟机安装Linux系统
    Pycharm安装+python安装+环境配置
    shell命令
    单例模式
    装饰者模式
    AtomicInteger的CAS原理
    J.U.C总览图
    锁机制(四)
    锁机制(三)
  • 原文地址:https://www.cnblogs.com/skylee03/p/6930589.html
Copyright © 2011-2022 走看看