首页 > 其他分享 >CF2019C Cards Partition

CF2019C Cards Partition

时间:2024-09-28 21:35:19浏览次数:1  
标签:10 maxx 一组 cdot sum Partition leq CF2019C Cards

涉及知识点:鸽巢原理,贪心

前言

唐诗题,赛时都已经想到了所有性质,以为要从数学方法上求解,却没想到就是个纯贪心题……

题意

Link

给你一堆数,\(1,2,3,\dots,n\),分别有 \(a[1],a[2],a[3],\dots,a[n]\) 个,你还可以添加不超过 \(k\) 个数(当然这些数得是 \(1\sim n\) 中的整数),你需要将它们划分成若干组,使得组内数的总数相同,且组内不存在相同的数,求组中数的个数的最大值。\(2\leq n \leq 2\times 10^5\),\(0\leq k \leq 10^{16}\),\(0\leq a[i]\leq 10^{10}\)。

思路

我们记一组中数的个数为 \(s\),共有 \(d\) 组,根据题意显然 \(s\cdot d=\sum{a[i]}+k\)。

  • \(s\leq n\)。由于一组中的数要求不重复,而数的可能的取值只有 \(n\) 种,根据鸽巢原理,一组的大小 \(s\) 不可能大于 \(n\)。
  • \(d\geq \max\{a[i]\}\)。由于一组种的数要求不重复,根据鸽巢原理,如果对于某个 \(i\),\(d\leq a[i]\),那么至少存在一组,组中有多于 \(1\) 个的 \(i\),因此 \(d\) 不可能小于任意 \(a[i]\)。

因此我们考虑从大到小枚举所有可能的 \(s\),判断其是否可行,也就是找到是否存在 \(d\) 满足 \(s\cdot d=\sum{a[i]}+k'\),并且 \(0\leq k'\leq k\),那么我们去找满足 \(s\cdot d\geq \sum{a[i]}\) 的最小的 \(d\) 即可,因为如果最小的那个 \(d\) 都不满足 \(k'\leq k\),那么更大的 \(d\) 也一定不会满足。

反思

在做这道题的时候一直想的是如何用数学方法同时最优化 \(s\) 和 \(d\) 这两个数,但是实际上 \(s\) 是可枚举的,而且判断一个 \(s\) 是否可行也不用一一尝试所有 \(d\),赛时脑子没转过弯。

代码

int n;
LL k,a[MAXN],sum,maxx;
inline void solve(){
    sum=0;maxx=0;
    rd(n);rd(k);
    for(int i=1;i<=n;i++){
        rd(a[i]);
        sum+=a[i];
        maxx=max(maxx,a[i]);
    }
    for(LL s=n;s>=1;s--){
        if(maxx*s>=sum && k>=maxx*s-sum){
            wt(s,'\n');
            return;
        }
        else if(maxx*s<sum){
            LL delta=sum-maxx*s;
            delta=(ceil((double)delta/(double)s))*s;
            if(k>=maxx*s+delta-sum){
                wt(s,'\n');
                return;
            }
        }
    }
    wt(1,'\n');
}

标签:10,maxx,一组,cdot,sum,Partition,leq,CF2019C,Cards
From: https://www.cnblogs.com/SkyNet-PKN/p/18438458

相关文章

  • A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs
    目录概METISCoarseningPartitioningphaseUncoarseningphaseKarypisG.andKumarV.Afastandhighqualitymultilevelschemeforpartitioningirregulargraphs.SIAM,1998.概本文提出了一种multilevelgraphpartitioning方法.METISMETIS的思想比较简单:......
  • Graph Edge Partitioning via Neighborhood Heuristic
    目录概符号说明VertexvsEdgepartitioningNE(NeighborExpansion)代码ZhangC.,WeiF.,LiuQ.,TangZ.G.andLiZ.Graphedgepartitioningvianeighborhoodheuristic.KDD,2017.概本文提出了一种图分割方法(edgepartitioning),保证只有少量的重复结点.符号......
  • 开机出现invalid partition table原因分析及解决方法
         最近有网友问我为什么电脑开机每次出现invalidpartitiontable,这个提示意思是:无效的分区表。原因有很多,比如我们采用的是uefi引导,而第一启动的硬盘是MBR分区,比如我们采用的是legacy引导模式,而第一启动项的硬盘为gpt分区等,下面我们来详细分析一下每次开机提示inva......
  • Luogu P10997 Partition 题解 [ 蓝 ] [ 轮廓 dp ]
    Partition:一道dp神题,用到了以轮廓线的轨迹来做dp的技巧,和敲砖块这题的状态设计有点相似。观察首先观察样例,发现整张图可以看作是被两条线分隔开的。同时每个颜色的四个方向上又存在一大堆奇怪的性质,很容易发现这两条线一条是从左上到右下的线,另一条是从右下到左上的线。暴......
  • kafka如何合理设置broker、partition、consumer数量
    目录1.broker的数量最好大于等于partition数量2.consumer数量最好和partition数量一致3.总结1.broker的数量最好大于等于partition数量一个partition最好对应一个硬盘,这样能最大限度发挥顺序写的优势。一个broker如果对应多个partition,需要随机分发,顺序IO会退化成随机IO。实......
  • AT_code_festival_2017_qualc_d - Yet Another Palindrome Partitioning 题解
    YetAnotherPalindromePartitioning题解题目大意给出一个字符串,求把这个字符串划分成最少的小段,使每个小段都可以经过字母重组后为回文串。题目分析如果暴力的话,需要DFS段数、每一段的左节点、右节点,以及判断是否为回文串,时间复杂度在\(O(|S|^{|S|})\)左右。但是本......
  • 【Oracle点滴积累】解决ORA-06183 unable to extend index SYS.WRH$_SYSMETRIC_HISTOR
    广告位招租!知识无价,人有情,无偿分享知识,希望本条信息对你有用!今天和大家分享ORA-06183unabletoextendindexSYS.WRH$_SYSMETRIC_HISTORY_INDEXpartition错误的解决方法,本文仅供参考,谢谢!Solution:SELECTTABLESPACE_NAME,FILE_NAME,BYTES/1024/1024FILE_SIZE,AUTO......
  • IgniteFAQ-13-GridDhtPartitionsExchangeFuture : Failed to reinitialize local part
    报错2024-08-0815:29:02.532ERROR39656---[ange-worker-#49].c.d.d.p.GridDhtPartitionsExchangeFuture:Failedtoreinitializelocalpartitions(rebalancingwillbestopped):GridDhtPartitionExchangeId[topVer=AffinityTopologyVersion[topVer=1,minorTopVe......
  • OVER (PARTITION BY xx ORDER BY xx) 窗口函数理解
    SUM(sale_amount)OVER(PARTITIONBYsalespersonORDERBYsale_date)这段SQL窗口函数的详细解释和它在执行过程中所发生的具体细节如下:解析步骤窗口函数的基础定义:SUM(sale_amount):表示我们要对sale_amount列应用SUM聚合函数。OVER子句:指定窗口函数的范围和计算......
  • 题解:CF1992F Valuable Cards
    Part1:前言题目翻译在他最喜欢的咖啡馆里,Kmes再次想尝尝皮草大衣下的鲱鱼。以前,这对他来说并不难,但咖啡馆最近推出了一项新的购买政策。现在,为了进行购买,Kmes需要解决以下问题:在他面前摆放着\(n\)张不同价格的卡,第\(i\)张卡的价格为\(a_i\),在这些价格中没有整数\(x\)。K......