我是靠谱客的博主 友好音响,最近开发中收集的这篇文章主要介绍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

#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. Sweets Eating(DP)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部