zoukankan      html  css  js  c++  java
  • BZOJ2091 [Poi2010]The Minima Game

    我是沙茶,一看,博弈论题,开始推sg函数。。。。。。

    然后搞不出,一看ZYF博客,发现是DP。。。(做法都能想错的我真是太弱了)

    首先每个人肯定都是从大到小取数,于是先对a[i]排序。

    令f[i]表示前i个数去玩的最大差值,则

    f[i] = max(f[i - 1], a[i] - f[i - 1])(分别代表这次取得最小数为a[i]和不为a[i]),于是就好了>.<

     1 /**************************************************************
     2     Problem: 2091
     3     User: rausen
     4     Language: C++
     5     Result: Accepted
     6     Time:1384 ms
     7     Memory:8616 kb
     8 ****************************************************************/
     9  
    10 #include <cstdio>
    11 #include <algorithm>
    12  
    13 using namespace std;
    14  
    15 int n, a[1000005], f[1000005];
    16  
    17 int main(){
    18     scanf("%d", &n);
    19     for (int i = 1; i <= n; ++i)
    20         scanf("%d", a + i);
    21     sort(a + 1, a + n + 1);
    22     for (int i = 1; i <= n; ++i)
    23         f[i] = max(a[i] - f[i - 1], f[i - 1]);
    24     printf("%d
    ", f[n]);
    25     return 0;
    26 }
    View Code


    (这种题都做不出来怎么考noip......感觉要爆零)

    By Xs酱~ 转载请说明 博客地址:http://www.cnblogs.com/rausen
  • 相关阅读:
    Java程序员从笨鸟到菜鸟全部博客目录
    Problem I
    Problem I
    Problem S
    Problem S
    Problem X
    Problem X
    Problem Q
    Problem Q
    Ellipse
  • 原文地址:https://www.cnblogs.com/rausen/p/4008777.html
Copyright © 2011-2022 走看看