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♪(・ω・)ノ

  • 相关阅读:
    ES6 数值类型常用方法
    阿里云如何发布网站
    常用的网站推荐
    笔记一 sql 基础知识
    笔记一 MVC初识
    基础二 面向对象编程
    基础一
    css reset 样式
    CSS 嵌套绝对定位
    ADO
  • 原文地址:https://www.cnblogs.com/ForeverOIer/p/12660265.html
Copyright © 2011-2022 走看看