Codeforces Round #598 (Div. 3)E(dp路径转移)
2024-10-08 19:56:37
题:https://codeforces.com/contest/1256/problem/E
题意:给一些值,代表队员的能力值,每组要分3个或3个以上的人,然后有个评价值x=(队里最大值-最小值),问最小的∑x是多少,以及输出方案
学习粗:https://www.cnblogs.com/Lubixiaosi-Zhaocao/p/11797744.html
dp路径转移
#include<bits/stdc++.h>
using namespace std;
const int M=2e5+;
struct node{
int val,id;
}a[M];
int dp[M];
int ans[M],pre[M];
bool cmp(node p,node q){
return p.val<q.val;
}
int main(){
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i].val),a[i].id=i;
sort(a+,a++n,cmp);
memset(dp,0x3f,sizeof(dp));
dp[]=;
pre[]=-;
for(int i=;i<=n;i++){
for(int j=;j<=;j++){
if(i-j>=&&dp[i-j]+a[i].val-a[i-j+].val<dp[i]){
pre[i]=i-j;
dp[i]=dp[i-j]+a[i].val-a[i-j+].val;
}
}
}
int tot=;
for(int i=n;i>=;i=pre[i]){
tot++;
for(int j=i;j>pre[i];j--)
ans[a[j].id]=tot;
}
printf("%d %d\n",dp[n],tot);
for(int i=;i<=n;i++)
printf("%d ",ans[i]);
return ;
}
最新文章
- Leetcode jump Game II
- 一个div相对于外层的div水平和垂直居中
- android_demo之生成颜色布局
- 微信公众号里打开链接下载APP
- UI组件之Group
- 源码安装extundelete以及对遇到问题的解决
- [Android] Android开发优化之——使用软引用和弱引用
- Hibernate:1对1关系总结。
- nginx 目录密码保护的设置方法
- SQL serve创建与调用存储过程
- HTML5的优缺点是什么?
- 【工具】-RAP接口管理工具
- IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
- SkylineGlobe TerraExplorer Pro 7.0 Web 控件版 第一行示例代码
- 在Adobe Html5 Extension的使用Nodejs的问题
- javascript 原型世界浅析
- c++练习-快速排序
- 从Exchager数据交换到基于trade-off的系统设计
- leetcode485
- Effective C++(4) 确定对象被使用前已先被初始化