首页 > 其他分享 >[每日 C] Cards Partition

[每日 C] Cards Partition

时间:2025-01-14 15:10:22浏览次数:1  
标签:max 每日 Partition times leq textrm Cards sum 贪心

前言

以一道绿结束今天的每日 \(\rm{C}\) 比较合理

思路

你发现假设分成大小为 \(s\) 的副牌, 只要满足

\[s \mid \sum_{i = 1}^{n} a_i \textrm{ and } \forall i \in [1, n], a_i \leq \frac{\sum_{i = 1}^{n} a_i}{s} \]

即可

考虑贪心的买新牌, 每次只需要把小的补上去即可
也就是说, 在最初补满 \(a_i\) 之后, 以后每新买 \(n\) 张牌就会使得 \(\max a_i\) 加一

那么怎么实现

首先你计算出把 \(a_i\) 补满的花费 \(C\) , 简单分类讨论

\(k \leq C\)

这种情况下, 不管怎么填, \(\max a_i\) 固定
可以计算出 \(\sum a_i\) 的取值区间, 然后 \(\mathcal{O} (n)\) 判断最大的 \(k\) 使其符合要求

\(k > C\)

这种情况下稍微要复杂一点
首先同上计算, 然后令 \(k \gets k - C\)
你发现对于现在的 \(k\) , 每放 \(n\) 个就会使得 \(\max a_i\) 加一, 考虑 \(k\) 可以产生 \(\max a_i\) 的区间, 对于整段直接判断, 对于前后的小段你 \(\mathcal{O} (n)\) 检查即可


看完题解觉得自己是弱智

你考虑对于每一个 \(s\) 怎么判定

\(\sum_{i = 1}^{n} a_i < s \times \max a_i\)

显然的, 只要 \(\sum_{i = 1}^{n} a_i + k \geq s \times \max a_i\) 即可, 原因是当 \(\sum_{i = 1}^{n} a_i = s \times \max a_i\) 时, 一定是最优秀的补数同时满足以上两种条件

\(\sum_{i = 1}^{n} a_i \geq s \times \max a_i\)

只要 \([s - (\sum_{i = 1}^{n} a_i \textrm{ mod } s)] \textrm{ mod } s \leq k\) 即可

具体的, 你画画图可以发现, 去补的时候会在上面均匀的加几层, 虽然 \(\max a_i\) 发生了变化, 但是仍然满足条件

总结

一类贪心

注意一定要把思路弄得明白再去打代码, 然后也就是不要慌, 代码错了检查思路
注意根据问题复杂度简化思路, 不去考虑不影响答案的情况

不过这个题, 知道这类贪心的做法之后就简单了, 否则并不好想
这个贪心的思路其实就是构造方法的差别
具体一点就是能不能想到 这种方法 去构造

标签:max,每日,Partition,times,leq,textrm,Cards,sum,贪心
From: https://www.cnblogs.com/YzaCsp/p/18670816

相关文章

  • 【每日一题】20250114
    【每日一题】1.(18分)\(\hspace{0.7cm}\)I.为了测量某一弹簧的劲度系数,将该弹簧竖直悬挂起来,在自由端挂上不同质量的砝码.实验测出了砝码质量\(m\)与弹簧长度\(l\)的相应数据,其对应点已在图上标出.(\(g=9.8\;\mathrm{m/s^{2}}\))\(\hspace{0.7cm}\)(1)作出\(m-l\)的关系图线;......
  • 每日学习30分轻松掌握CursorAI:项目协作与团队开发
    项目协作与团队开发一、课程概述今天我们将学习如何在团队开发中有效使用CursorAI,提高协作效率和代码质量。1.1团队协作流程......
  • 每日学习30分轻松掌握CursorAI:Cursor插件系统与扩展功能
    Cursor插件系统与扩展功能一、课程概述今天我们将学习CursorAI的插件系统,了解如何通过插件扩展和增强IDE功能。由于CursorAI基于VSCode开发,我们可以利用丰富的VSCode插件生态系统。1.1学习目标了解插件系统原理掌握插件安装管理使用常用开发插件二、插件系统基础......
  • 高级java每日一道面试题-2025年01月12日-框架篇[Mybatis]-什么是MyBatis?
    如果有遗漏,评论区告诉我进行补充面试官:什么是MyBatis?我回答:在Java高级面试中,MyBatis是一个常见的讨论话题。以下是对MyBatis的详细解释:一、MyBatis简介MyBatis是一个开源的持久层框架,它提供了将SQL语句和Java对象进行映射的功能。MyBatis简化了JDBC的开发,减少了手......
  • 高级java每日一道面试题-2025年01月13日-框架篇[Spring篇]-Spring 是怎么解决循环依赖
    如果有遗漏,评论区告诉我进行补充面试官:Spring是怎么解决循环依赖的?我回答:在Java高级面试中,Spring框架如何解决循环依赖是一个重要且常见的问题。以下是对Spring解决循环依赖的详细解释:循环依赖的定义与类型循环依赖是指两个或多个Bean之间互相依赖,形成一个闭环。......
  • Oracle SQL每日一问之ORA-01723:zero-length columns are not allowed
    我:CREATETABLETABLE_1PARALLEL8ASSELECT/*+parallel(8)*/t1.emp_no,NULLemp_nameFROMtemp1t1;[AI机器人bot:]在你的SQL语句中,错误"zero-lengthcolumnsarenotallowed"可能是由于在创建表时没有为`NULLclct_flag`指定数据类型。即使在`CREATETAB......
  • 每日新闻掌握【2024年1月13日 星期一】
    2025年1月13日星期一 农历腊月十四 大公司/大事件美股三大指数集体收跌,热门中概股普跌36氪获悉,1月10日收盘,美股三大指数集体下跌,纳指跌1.63%,道指跌1.63%,标普500指数跌1.54%。大型科技股多数下跌,AMD、奈飞跌超4%,英特尔跌超3%,英伟达跌3%,苹果跌超2%,亚马逊、微软跌超1%,M......
  • 定时抓取数据:Python爬虫与定时任务实现每日数据采集与存储
    引言在现代数据驱动的世界中,实时获取和存储数据是许多应用的核心需求。无论是金融行业的实时汇率监控,还是电商行业的价格变化追踪,定时抓取数据都是一种高效的数据采集方式。本文将详细介绍如何使用Python结合爬虫技术和定时任务,实现每天定时抓取数据并将其存入数据库。一......
  • 每日算法Day16【复原IP地址、子集、子集II】
    93.复原IP地址算法链接:93.复原IP地址-力扣(LeetCode)类型:回溯难度:中等思路:终止条件:IP地址中总共有3个分割点。每层搜索逻辑:每段数字大小介于0~255之间,通过索引index截取字符串。题解:classSolution{List<String>result=newArrayList<>();pu......
  • 2025/1/12 力扣每日一题(2275.按位与结果大于零的最长组合)
    来源:力扣(LeetCode)链接:https://leetcode.cn/problems/largest-combination-with-bitwise-and-greater-than-zero/description/?envType=daily-question&envId=2025-01-12题目:对数组nums执行按位与相当于对数组nums中的所有整数执行按位与。例如,对nums=[1,5,3]来......