当前位置: 首页 > news >正文

【补题】Codeforces Round 664 (Div. 1) A. Boboniu Chats with Du

题意:给出n,d,m三个值,分别代表,有多少个值ai,使用超过m的ai,需要禁言d天,如果不足也能使用,m代表区分点,问能得到最大的值有多少。

思路:        CF1394A Boboniu Chats with Du - 洛谷

1.很容易想到的一个点就是能用大值越多越好,同时因为天数不足也是可以选取的,所以大值在时间轴上的顺序,越靠后越好。

2.最简单的答案就是我就选小值,也不用讨论禁言了,然后考虑开始放入大值,那么一定是放在当前时间轴的最后,因为区分点的缘故,先分开值之间的区别,对于两堆的贪心,均是能用越大的越好。所以考虑枚举,每添加一个大值,优先使用剩下不用的大值去抵消天数,如果不够在用小值。
利用前缀和O(1)返回剩余小值的贡献,O(n)累加枚举大值即可

代码:

#include <bits/stdc++.h>
#define int long long
#define int128 __int128
#define IOS                                                                                                            \std::ios::sync_with_stdio(0);                                                                                      \std::cin.tie(0);                                                                                                   \std::cout.tie(0);
const int N = 1e6 + 10;
const int INF = 1e18;
const int MOD = 998244353;void solve() {int n, d, m;std::cin >> n >> d >> m;std::vector<int> sm;std::vector<int> bi;for(int i = 0; i < n; i++) {int x;std::cin >> x;if(x <= m) {sm.push_back(x);} else {bi.push_back(x);}}sort(sm.begin(), sm.end(), std::greater());sm.insert(sm.begin(), 0);sort(bi.begin(), bi.end(), std::greater());int sum = 0;for(int i = 1; i < sm.size(); i++) {sm[i] = sm[i - 1] + sm[i];}int res = sm[sm.size() - 1];for(int i = 0; i < bi.size() && i * d + (i + 1) <= n; i++) {sum += bi[i];int mini = std::min(n - (i * d + (i + 1)), (int)sm.size() - 1);// std::cout << sm[mini] << " " << sum << '\n';res = std::max(res, sum + sm[mini]);// std::cout << sm[sm.size() - 1 - i * d] << " " << sum << "\n";}std::cout << res << '\n';
}signed main() {IOS;int t = 1;// std::cin >> t;while(t--) {solve();}
}

http://www.xdnf.cn/news/237547.html

相关文章:

  • 西门子PLC S7-1200 的组态软件控制
  • DeepSeek V2:引入MLA机制与指令对齐
  • ZLG嵌入式笔记 | 移动硬盘和虚拟机的那些事儿
  • 深度卷积模型:案例研究
  • 【iPaaS融合集成平台-混合云时代,iPaaS正在成为企业集成的“中央枢纽”】
  • 数据访存性能影响因素:虚拟内存管理和TLB的概念和工作流程
  • 【Java】一篇讲透Java中的集合类
  • 多智能体协同作战:MagenticOne如何指挥一支AI团队
  • 什么是工业互联网平台?
  • kbuild system学习
  • 浮阀塔精馏分离乙醇-水溶液工艺设计研究
  • 从实列中学习linux shell4: shell 脚本中 $0 $1 $2 $3 >> 以及 awk 都是干啥的?
  • FastAPI系列12:使用JWT 登录认证和RBAC 权限控制
  • 前端笔记-Element-Plus
  • python安装和环境配置,开发方法简要步骤。
  • Android 自带的分享功能分享到三方应用
  • ProfiNet转CAN协议转换网关数据交互实现:工业自动化异构网络无缝对接
  • [250429] 免费!DeepSeek-R1T-Chimera 合并 R1 和 V3, 在 OpenRouter 上可用
  • 2025华东杯ABC题赛题已出速拿
  • ​​智能制造中的预测性维护:基于深度学习的设备故障预测​​
  • 矫平机:金属板材精密加工的“整形专家”
  • 在 Linux 系统中,让线程主动放弃当前 CPU 时间片
  • MySQL8.0创建数据库,该如何选择字符集,是选择utf8mb4还是utf8mb3
  • Java 表达式及运算符的优先级与结合性入门
  • 机器学习——特征选择
  • SEO与国际化
  • 简易C++内存追踪方案:监控动态内存分配与释放
  • 添加了addResourceHandlers 但没用
  • 墨西哥游戏出海推广本土网盟cpi广告策略
  • openEuler 22.03 安装 Redis 6.2.9,支持离线安装