做题记录--CF 板子题 2023.9.6

455A Boredom Problem - 455A - Codeforces

给定一个有 n 个元素的序列 {an​}。你可以做若干次操作。在一次操作中我们可以取出一个数(假设他为 x)并删除它,同时删除所有的序列中值为 x+1 和 x−1 的数。这一步操作会给玩家加上 x 分。

思路

dp题,先按升序排序,统计每个ai的出现次数,并去重。

从左往右看,如果x被选上,那么x-1一定没被选上,x+1无法被选上

由此可以推出dp思路:dp[i]=max(dp[i-1],dp[i-2]+a[i]*cnt[i])

489C Given Length and Sum of Digits... Problem - 489C - Codeforces

给出 m 和 s,分别找出最大和最小的非负整数,两个数都满足数位长度为 m,数位和为 s。无解时输出 −1。 1≤m≤100, 0≤s≤900

思路

贪心,不可满足的条件是s>9*m和s==0&&m!=1

对于可满足情况

最大值:从左向右,尽量放大的  最小值:如果m!=1 第一位放1,后面的只要 (m-1)*9>s-x,就放x

可以通过数组储存每位数

279B Books Problem - 279B - Codeforces

你有 n 本书,读第 i 本书需要 ai​ 分钟,你现在有 m 分钟

你读书的方式是这样的:找出任意一个数 x,并按编号从小到大的顺序读第 x∼n 本
如果你读完了第 n 本,那么读书结束
如果你准备要读第 i 本书,但是剩下的时间小于 ai​(也就是读不完这本书):那么你就不可以开始读这本书了,并且读书结束
换句话说,如果你读一本书,就必须要读完,否则就不能读

求最多能读多少本书

思路

滑动窗口--双指针

维护窗口[l,r],保证窗口内的总和<=t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值