• AtCoder Beginner Contest 078 D ABS


    光做C了,做完C,就要结束了,看了看D,没看懂那操作啥意思,就扔了。
    刚才看了看,突然懂了。。
    就是每个人从那堆牌上边拿牌,最少拿一张,最多可以全拿走,然后手里留下最后一张拿到的,其余的都扔掉。
    比如牌的顺序是1,5,8,2。拿了前三张牌,就只留下8,前边的都扔了。
    X想要分数最大化,Y想要分数最小化,但是X是先手,所以X可以直接全拿光,或者拿的还剩下一张牌,
    然后比较一下这两种策略哪个得分高选取哪个。如果X选取的时候剩下了很多牌的话,Y也会像X那样,拿走全部剩余的
    牌或者剩下一张牌,选取两种情况中的较小者,是的X无法使分数变大。如果拿走全部剩余的牌对Y更优,则X不会给他这个机会,
    如果剩下一张牌的策略对Y更优,X还是不会给他机会。所以X的策略就是全部拿走或者还剩下一张。
    虽说dp可做,但是我不大会dp。。。还是看题解,加上自己想想,以上是我的理解

    #include <bits/stdc++.h>
    using namespace std;
    
    long long card[2010];
    
    int main()
    {
        long long n,z,w;
        cin >> n >> z >> w;
        for(int i = 0; i < n; ++i)
            cin >> card[i];
        long long res = abs(card[n-1]-w);
        if(n > 1) res = max(res,abs(card[n-1]-card[n-2]));
        cout << res << endl;
        return 0;
    }
    
    
  • 相关阅读:
    Java String 类
    Java Number & Math 类
    String 方法
    创建格式化字符串
    定义存储过程如下:
    要创建一个EJB,必须要至少编写哪些Java类和接口?
    下面的那一个不属于MVC模式中的对象?
    下列哪个为JSP的隐含对象。
    以下声明正确的是。
    关于JSP生命周期的叙述,下列哪些为真?
  • 原文地址:https://www.cnblogs.com/guoyongheng/p/7821476.html
Copyright © 2020-2023  润新知