
Codeforces 1185C2-Exam in BerSU (hard version)【思维】【桶排】
发布日期:2021-05-04 18:31:17
浏览次数:29
分类:精选文章
本文共 738 字,大约阅读时间需要 2 分钟。
翻之前的cf,发现这题没补,看了下这么简单,不知道为什么没有写出来题意
给出一个大小n的数组,和一个m,对应数组中每个数 i ,要在【0,i】的区间内删除若干个数(但是不能删除i),使得剩下的数的总和小于等于m,对于每一个i,求最少要删除多少个数;
思路
因为数组中的数的值最大就是100;所以我们可以遍历数组,遍历完将 a[i] 放cnt数组中;在遍历a数组中时我们只要在cnt数组中从大到小减数,减到小于m即可
代码
#include#define maxn 200010using namespace std;int a[maxn], sum[maxn], cnt[200];int main(){ int n, m; cin >> n >> m; for(int i = 1; i <= n; i++){ cin >> a[i]; sum[i] = sum[i-1] + a[i]; } for(int i = 1; i <= n; i++){ if(sum[i] <= m){ cout << 0 << " "; } else{ int q = sum[i] - m; int ans = 0; for(int j = 100; j >= 0; j--){ if(q <= 0){ break; } int c = min(cnt[j], (q + (j - 1)) / j); q -= c * j; ans += c; } cout << ans << " "; } cnt[a[i]]++; } cout << endl;}
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月05日 23时10分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
23种设计模式一:单例模式
2019-03-05
Qt中的析构函数
2019-03-05
二叉堆的c++模板类实现
2019-03-05
C语言实现dijkstra(adjacence matrix)
2019-03-05
C语言学习从初级到精通的疯狂实战教程-徐新帅-专题视频课程
2019-03-05
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
2019-03-05
NAT工作原理
2019-03-05
Processes, threads and goroutines
2019-03-05
c++中的10种常见继承
2019-03-05
Vue学习—深入剖析渲染函数
2019-03-05
Vue学习—深入剖析函数式组件
2019-03-05
简单Makefile的编写
2019-03-05
使用BAT批处理 匹配查找指定文件夹,并在当文件夹下创建空文件
2019-03-05
wxpython的Hello,World代码探索
2019-03-05
【数字图像处理】OpenCV3 学习笔记
2019-03-05
【单片机开发】智能小车工程(经验总结)
2019-03-05
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
2019-03-05
KeepAlived介绍、配置示例、KeepAlived配置IPVS、调用脚本进行监控
2019-03-05
Scala集合-数组、元组
2019-03-05
04 程序流程控制
2019-03-05