首页 > 其他分享 >[CQOI2010] 扑克牌

[CQOI2010] 扑克牌

时间:2024-01-26 15:02:16浏览次数:23  
标签:ll 扑克牌 int sum mid while CQOI2010 left

原题链接

这道题是一道隐蔽的二分答案题(01规划)。但由题目中的“最多”一词也可以知晓。

我们可以把题目中的joker类比成万能牌,但一套牌中只能最多有一张万能牌。

那么对于预期答案k,我们想要验证,只需要sum+=min(0,k-a[i]);然后我们要判断sum<=m并且sum<=k(一套牌中只能最多有一张万能牌)

主要代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=55;
int a[N],n,m;
bool check(int mid){
    int cnt=1;
    ll sum=0;
    while (a[cnt]<mid && cnt<=n) sum=sum+ll(mid-a[cnt++]);
    return (sum<=ll(m) && sum<=ll(mid));
}
int main(){
    cin>>n>>m;
    for (int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+n+1);
    int left=0,right=1e9;  //5e8数量级是过不了的
    while (left+1<right){
        int mid=left+(right-left>>1);
        if (check(mid)) left=mid;
        else right=mid;
    }
    printf("%d\n",left);
    return 0;
}

 

标签:ll,扑克牌,int,sum,mid,while,CQOI2010,left
From: https://www.cnblogs.com/purple123/p/17989417

相关文章

  • 模拟扑克牌初始化操作
    1publicclassPoker{2/*模拟扑克牌初始化操作3*点数:"3","4","5","6","7","8","9","10","J","Q","K","A","2","大......
  • 扑克牌点数、花色
    扑克牌点数、花色扑克牌是一种常见的纸牌游戏,它有52张牌,每张牌上都有一个点数和一个花色。点数:其中点数分为2、3、4、5、6、7、8、9、10、J、Q、K、A,共13种。J、Q、K:J代表骑士(Jack)、Q代表皇后(Queen)、K代表国王(King)。它们的点数依次为11、12、13.A:A代表“一点通”(Ace),在扑克牌中......
  • 数据库编程大赛:一条SQL计算扑克牌24点
    你是否在寻找一个平台,能让你展示你的SQL技能,与同行们一较高下?你是否渴望在实战中提升你的SQL水平,开阔你的技术视野?如果你对这些都感兴趣,那么本次由NineData主办的《数据库编程大赛》,将是你的最佳选择!大赛奖品本次数据库编程大赛的奖项安排:一等奖(1人)、二等奖(2人)、三等奖(3人)、......
  • 【YOLOv5】实现扑克牌的点数识别
    前言    其实年初的时候,我也跟着别人的源码,用Tensoflow实现过扑克牌的目标检测。虽然也通过博文的方式记录了,但是那个项目使用的TF版本比较旧,自身对TF并不熟。后期如果说要升级或修改估计够呛,知道最近看到YOLO对目标检测的实现方法,发现这个更方便快捷。   ......
  • 剑指 Offer 61. 扑克牌中的顺子
    题目链接:剑指Offer61.扑克牌中的顺子题目描述:从若干副扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为0,可以看成任意数字。A不能视为14。解法思路:代码://1.将所有的0删掉,看剩下的数//2.看有没有......
  • 剑指 Offer 61. 扑克牌中的顺子(简单)
    题目:classSolution{public:boolisStraight(vector<int>&nums){sort(nums.begin(),nums.end());//首先要对数组进行排序intcount=0;//count用来记录万能牌0的个数,count相当于用来补牌for(auton:nums){if(n==0......
  • 【剑指Offer】45、扑克牌顺子
    【剑指Offer】45、扑克牌顺子题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh......
  • 《剑指Offer》-61-扑克牌中的顺子
    判断是否为连续的数字,需要额外考虑的情况有一个,就是0可以代表任何数字,并且最多出现两次给出的长度为5的数组不一定是顺序 boolisStraight(vector<int>&nums){ sort(nums.begin(),nums.end()); //没有0的情况 if(nums[0]==0){ //只有一个0的情况 ......
  • Java实现扑克牌24点游戏
    游戏规则:4张扑克牌A~K分别代表1点至13点,要求4张牌加减乘除后得到点数为24.(除法必须整除)代码实现思路:构建初始变量实现初始化变量值实现运算分析可能出现的运算组合不考虑运算符优先级,组合3/5/7重复(最后会解释为什么不考虑运算符优先级,注1)代码实......
  • (华为机试)扑克牌大小
    扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):345678910JQKA2jokerJOKER输入两手牌,两手牌之间用"-“连接,每手牌的每张牌以空格分隔,”-"两边没有空格,......