我是靠谱客的博主 友好音响,这篇文章主要介绍C. Sweets Eating(DP),现在分享给大家,希望可以做个参考。

永远的传送大门校门中门

先 按 照 甜 度 从 小 到 大 排 序 先按照甜度从小到大排序

设 d p [ i ] 为 吃 i 块 蛋 糕 的 最 小 甜 度 设dp[i]为吃i块蛋糕的最小甜度 dp[i]i

那 么 第 i 块 蛋 糕 在 第 1 天 吃 , [ i − m + 1 , i ] 都 在 第 一 天 吃 那么第i块蛋糕在第1天吃,[i-m+1,i]都在第一天吃 i1[im+1,i]

[ 1 , i − m ] 吃 的 天 数 都 晚 了 1 , 所 以 加 上 他 们 的 前 缀 和 。 [1,i-m]吃的天数都晚了1,所以加上他们的前缀和。 [1,im]1

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <bits/stdc++.h> using namespace std; typedef long long ll; ll a[200009],n,m,ans; ll f[200009],sumn[200009]; int main() { cin>>n>>m; for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+1+n); for(int i=1;i<=n;i++) { sumn+=a[i]; if(i<m) dp[i]=sumn; else dp[i]=dp[i-m]+sumn;//前i-m天要多加1次 cout<<dp[i]<<" "; } return 0; }

最后

以上就是友好音响最近收集整理的关于C. Sweets Eating(DP)的全部内容,更多相关C.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部