首页 > 其他分享 >DOJ-team-match 7-20210919小学组-取数游戏

DOJ-team-match 7-20210919小学组-取数游戏

时间:2023-11-22 21:48:24浏览次数:35  
标签:DOJ 得分 int 取数 20210919 team match

DOJ-team-match 7-20210919小学组-取数游戏

取数游戏

题目传送门

首先明确一下贪心策略:

  • 两人必然会从大往小取
  • 当自己无法得分时,最优策略就是不让对方得分
  • 当自己可以得分时,得分

所以,最后只需要便利数组,当A或B能得分时便得分,不能得分就不得分,但是不管能否得分都需要将最大的数取出

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[20010],A,B;
bool cmp(int x,int y){
    return x>y;
}
int main()
    int t;
    cin>>t;
    while(t--)
    {
        A=B=0;
        cin>>n;
        for(int i=0;i<n;i++) cin>>a[i];
        sort(a,a+n,cmp);
        for(int i=0;i<n;i++)
        {
            if(i%2==0)
            {
                if(a[i]%2==0) A+=a[i];
            }else
            {
                if(a[i]%2==1) B+=a[i];
            }
        }
        if(A>B) cout<<"A";
        else if(A<B) cout<<"B";
        else cout<<"C";
        cout<<endl;
    }
    return 0;
}

标签:DOJ,得分,int,取数,20210919,team,match
From: https://www.cnblogs.com/lyk2010/p/17850364.html

相关文章

  • DOJ-team-match 7-采购奖品
    DOJ-team-match7-采购奖品题目传送门思路:非常简单,按物品的单价排序,商品的单价小,我们就尽量多的选它代码:#include<bits/stdc++.h>usingnamespacestd;structnode{ intcost,num;}a[110];intn,m,ans,money;boolcmp(nodex,nodey){ returnx.cost<y.cost;}intm......
  • DOJ-team-match 7-过河问题
    DOJ-team-match7-过河问题先模拟一下样例125101和2去,耗时21回,耗时35和10去,耗时132回,耗时151和2去,耗时17现在我们把题目化为两种策略策略1:共2人,一起过河,用时较小的将手电筒放回策略2:共4人,耗时较小的两人先过,接着将手电筒送回,用时较大的两人过,最后右侧用时最小的人......
  • DOJ-team-match 7-活动选择F604
    DOJ-team-match7-活动选择F604题目传送门那个F604是干啥的我似乎也不知道思路依旧很简单,右端点排序,这个活动结束得越早留给后面的时间就越多代码:#include<bits/stdc++.h>usingnamespacestd;structnode{ intstart,end;}a[1010];intn,back,ans;boolcmp(nodex,no......
  • DOJ-team-match 7-钻石矿工
    DOJ-team-match7-钻石矿工题目传送门首先画图假设有两个点,那么去钻石的方案就如上图那么我们就需要比较蓝线的长度与红线的长度先看一下两点之间距离公式$\sqrt{(x-u)2+(y-v)2}$这个公式就是运用了勾股定理,一直两条边,求第三条接着,我们比较蓝线与红线的长短我们把它分为......
  • DOJ-team-match 9-2017篮球队
    题面一道动态规划题\(f_{i, j, k}\)表示前i个人里取j个,身高大于等于k的方法数得到状态转移方程为\(f_{i, j, k} = f_{i − 1, j − 1, k − a_i}\)由于这样空间不够,我们需要降维代码:#include<bits/stdc++.h>usingnamespacestd;constintMAXN=2e5+5;int......
  • 三种办法遍历对象数组,获取数组对象中所有的属性值(key,value);四种方法查找对象数组里面
    一,获取对象数组中某属性的所有值如果是要获取具体第几个属性的值,倒是可以用arr[i].name的方法来实现。若是全部的属性的值,并返回一个新的数组嘞,思路是加循环遍历方法如下。1、from方法vararr=[{id:1,name:"小明"},{id:2......
  • 浏览器标签页切换获取数据
    refresh(){/*浏览器标签页切换会触发"visibilitychange"事件*/document.addEventListener('visibilitychange',e=>{//切换显示标签if(document.visibilityState==='visible'){this.getTabelData()......
  • Oracle、达梦:获取数据库对象、获取对象的DDL-数据定义语言
    一、获取据库对象(Oracle、达梦)ALL_OBJECTS表数据库所有对象表:包括表、视图、物化视图、函数……等--查询所有对象SELECT*fromALL_OBJECTS--筛选条件-OWENR:哪个数据库。-OBJECT_TYPE类型:SELECTOBJECT_NAME,OBJECT_TYPEfromALL_OBJECTSWHEREOWNER='M......
  • SqlServer中获取数据库中每个表的行数
    SqlServer中获取数据库中每个表的行数CREATETABLE#RowCounts(NumberOfRowsBIGINT,TableNameVARCHAR(128))EXECsp_MSForEachTable'INSERTINTO#RowCountsSELECTCOUNT_BIG(*)ASNumberOfRows,''?''asTableNameFROM?'SELECTTableName,Numbe......
  • Java中for循环每次都通过list.size、str.length、length()获取数组或者字符串的长度是
    最近看到有同事在使用for循环的时候首先会将数组或者字符串的长度赋值给一个变量;在网上查了一下说是这样可以节约资源的消耗,真实的情况又是如何?让我们看下他们的源码来分析。1.将数组的长度赋值给变量lenList<Integer>list=newArrayList<Integer>();list.add(......