zoukankan      html  css  js  c++  java
  • 题解 AT3919 【[ABC088B] Card Game for Two】

    (Solution:)

    这道题不难看出是一道很水的贪心题。因为每个人都会选择当前的最优策略,所以就把给出的牌按照从大至小的顺序排序,然后用两个变量分别记录两个玩家的总得分最后相减就可以了。

    划重点: x&1=x%2

    (code:)

    #include<bits/stdc++.h>//万能头文件
    using namespace std;//标准数据库
    inline int read()//快速读入
    {
        int x=0,f=1;char c=getchar();
        while(c<'0' || c>'9'){if(c=='-') f=0;c=getchar();}
        while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
        return f?x:-x;
    }
    int n,a[110],s1,s2;
    int main()
    {
        n=read();//读入牌的总数
        for(int i=1;i<=n;i++) a[i]=read();//读入每张牌的值
        sort(a+1,a+n+1,greater<int>());//从小至大排序(STL真香
        for(int i=1;i<=n;i++)//从最大的牌的值循环到最小的牌的值
        {
            if(i&1) s1+=a[i];
            //如果当前排序后的牌的序号不是2的倍数,那么就加给 1 号选手(因为是从 1 号一直到 n 号
            else s2+=a[i];//反之加给 2 号选手
        }
        printf("%d",s1-s2);//输出两选手得分差值
        return 0;
    }
    

    如果这篇文章给予了你帮助,那你就点个赞再走吧,Thanks♪(・ω・)ノ

  • 相关阅读:
    全屏漂浮
    JQ----树杈型导航
    SSM中各层作用及关系
    java23种设计模式 追MM简易理解版
    SQL语句的增练习案例
    pl/sql
    pl/sql练习案例
    oracle查重和oracle分页
    oracle中的常用函数
    IntelliJ Idea 常用快捷键列表
  • 原文地址:https://www.cnblogs.com/ForeverOIer/p/12660265.html
Copyright © 2011-2022 走看看