暑期dp46道(5)hdoj 1421 搬寝室s
来源:互联网 发布:网络测速在线测网速 编辑:程序博客网 时间:2024/04/29 21:05
HDOJ 搬寝室
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421
思路:这题是用一个二维数组ans[i][j]表示从i件物品中搬j次的最小疲劳度;
对一个无序的数列,例如1、6、3、4、7(n=5,m=2)中搬运两次的情况来说,先要把数组排序这里用的sort();
变成:1、3、4、6、7这时:对于ans[5][2]他的值和ans[5-2][2-1]有关,也就是前三个物品重量选一对搬运的最小疲劳度,而除此之外 剩下的搬运物品为6、7,是剩下的那一
对,也有可能使它最小的疲劳度不会搬运到重量为7的物品,这时就是ans[5-1][2];
所以,列出状态转移方程:
ans[i][j]=min(ans[i-2][j-1]+(data[i]-data[i-1])*(data[i]-data[i-1]),ans[i-1][j]);//data[]是排序后的数组
代码:
#include<cstdio>#include<cstring>#include<string>#include<queue>#include<algorithm>//为了使用min();#include<iostream>#include<stack>#include<queue>#include<limits>using namespace std;#define debug 0const int maxn=2000+5;int ans[maxn][maxn/2],data[maxn],n,m;void Do(){ for(int i=2;i<=n;i++) for(int j=1;2*j<=i;j++) { ans[i][j]=min(ans[i-2][j-1]+(data[i]-data[i-1])*(data[i]-data[i-1]),ans[i-1][j]);//关键 } printf("%d\n",ans[n][m]);}int main(){#if debug freopen("in.txt","r",stdin);#endif // debug while(~scanf("%d%d",&n,&m)) { memset(ans,0,sizeof(ans));//主要是为了使dp[i][0]=0(i=0.....maxn-1) for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) ans[i][j]=INT_MAX;//初始化,未处理前赋为INT_MAX for(int i=1;i<=n;i++) scanf("%d",&data[i]); sort(data+1,data+1+n);//排序 Do(); } return 0;}
0 0
- 暑期dp46道(5)hdoj 1421 搬寝室s
- HDOJ 1421:搬寝室
- HDOJ 1421 搬寝室
- HDOJ 1421 搬寝室
- HDOJ-1421 搬寝室
- hdoj-1421-搬寝室
- HDOJ 1421 搬寝室 (DP)
- 暑期dp46道(21)HDOJ 2059 龟兔赛跑
- 暑期dp46道(25)--HDOJ 1300 Pearls
- 暑期dp46道(30) HDOJ 1227 Fast Food
- hdoj 1421 搬寝室(DP)
- hdoj 1421 搬寝室 【dp】
- HDOJ-1421搬寝室(DP)
- hdoj-1421-搬寝室【DP】
- 暑期dp46道(16)hdoj 1025 Constructing Roads In JGShining's Kingdom最长上升子序列(二分)
- 暑期dp46道(27)--HDOJ 3008 Warcraft
- 暑期dp46道(36)--HDOJ 2577
- 暑期dp46道(37) HDOJ 2844 COINS
- 排序相关
- dubbo直连提供者
- Oracle DBA 使用 Python
- 使用onclick跳转到其他页面/跳转到指定url
- 有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。
- 暑期dp46道(5)hdoj 1421 搬寝室s
- 杭电- 1789 Doing Homework again
- 搭建ss服务器及使用kcptun加速
- 1023. 组个最小数 (20)-PAT乙级真题
- 封装
- Leetcode 101. Symmetric Tree (Easy) (cpp)
- textview属性
- HorizontalListView 横向listview
- ACM--26进制加法--HDOJ 2100--Lovekey--大数--字符串处理