第十届省赛 D题
来源:互联网 发布:邮政网络培训学院登录 编辑:程序博客网 时间:2024/06/05 01:19
思路:当时比赛知道是dp题推了好久没推出来。~....~.比赛之后搜了一下别人的解题思路。。。。原来还是自己动态规划学的太弱了。
题意是说:有n个项目,每个项目都有一个难度系数,每一个技术人员至少做k个项目,对于每个技术人员的酬金是c+(做的所有项目的最大难度系数-最小难度系数)的平方。我们可以知道一个区间中的差越小,相对的情况下(技术人员的个数不固定)公司付出的钱越少。我们可以假设一个技术人员可以做k个,k+1,k+2.........
枚举每一个符合条件的区间得到一个二维数组dp[i][j],表示做i到j区间的酬金为dp[i][j];
然后从满足的区间中找到dp[1][n]的最小值。
动态转移方程:
dp[i][j]=min( dp[i][j] , dp[i][k] + dp[k+1][j])
我的code:
#include<stdio.h>#include<iostream>#include<algorithm>#include<memory.h>#define inf 0x3f3f3f3f//区间dpusing namespace std;int main(){ int n,k,c; while(scanf("%d%d%d",&n,&k,&c)!=EOF) { int a[105],dp[105][105],i,j; memset(dp,inf,sizeof(dp));//初始化为无穷大 for(i=1; i<=n; i++) //输入n个项目的难度 { scanf("%d",&a[i]); } sort(a+1,a+n+1); for(i=1; i<=n; i++) //求出每一个长度大于等于区间的数 { for(j=i+k-1; j<=n; j++) { dp[i][j]=c+(a[j]-a[i])*(a[j]-a[i]); } } for(i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=i;k<j;k++) { dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]); } cout<<dp[1][n]<<endl; }}参考题解:点击打开原文
阅读全文
1 0
- 第十届省赛 D题
- D 年终奖金 河南第十届ACM真题 【dp】
- 第十周第十一周阅读程序-5-d
- A, B, C, D 4个人分配工作时间的问题,--- (第十题)
- 浙江省第十四次ACM程序竞赛 Let's Chat(D题)
- 2017年第十届华中地区大学生数学建模邀请赛个人赛D题 香菇分类
- NeHe OpenGL第十课:3D世界
- ArchieOpenGL第十课:3D世界漫游
- 暑期个人赛--第十一场--D
- 【Processing入门】第十章:3D
- 第十一周 阅读程序(5d)
- 第十一周OJ项目D测星座
- 第十一周-OJ-D日期妙算星座
- 第十四周OJ项目D求矩阵
- 河南第十届ACM省赛-D-年终奖金
- 河南省第十届ACM题解 D 年终奖金
- 第十题
- 第十题
- Linux无线网连接解决方案
- FireDAC 如何按整型(Byte)读取 MySQL TinyInt(1) 类型字段?
- 【Unity 3D游戏开发学习笔记】 UI System
- 廖雪峰的Git教程二(版本穿越)
- 异步消息处理
- 第十届省赛 D题
- HashMap 翻译
- c中字符串与c++中字符串的不同
- android java.net.ConnectException: Connection refused
- 廖雪峰的Git教程三版本回退
- php之C/S交互实例
- 项目实训-千寻-支付宝服务申请与使用
- mongodb 建立唯一索引,去除重复数据
- 阿里天池的新任务(简单)【字符串匹配哈希算法】 计蒜客初赛第一场