【集训笔记】动态规划背包问题【HDOJ1421【HDOJ1058【HDOJ2546
http://acm.hdu.edu.cn/showproblem.php?pid=2546
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=3361
http://blog.sina.com.cn/s/blog_5123df350100e8p8.html
http://blog.sina.com.cn/s/blog_51cea4040100gvn3.html
http://blog.csdn.net/wukonwukon/article/details/6939050
搬寝室
先对a[]按小到大排序.设:dp[i][j]表示前 i 个物品中搬 j 对的最少疲劳度.
显然,当i==2*j时, dp[i][j]=dp[i-2][j-1] + (a[i]-a[i-1])^2
因为,当 (a1-a2)^2+(a3-a4)^2 <= (a1-a4)^2+(a3-a2)^2 ( a1<=a2<=a3<=a4 ).
当i>2*j时, dp[i][j] = min( dp[i-1][j] , dp[i-2][j-1]+(a[i]-a[i-1])^2 )
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int dp[][];
int a[];
int n,k;
int pow2(int a) {return a*a;}
int min2(int a,int b) {return a<b?a:b;} int cmp(const void* a,const void* b){
return *(int*)a-*(int*)b;
} int main(){
int i,j,l;
while(EOF != scanf("%d%d",&n,&k)){
for(i=;i<=n;i++)
scanf("%d",&a[i]);
qsort(a+,n,sizeof(a[]),cmp);
memset(dp,,sizeof(dp));
for(i=;i<=n;i++){
l=i/;
for(j=;j<=l;j++){
if(i==*j)
dp[i][j]=dp[i-][j-]+pow2(a[i]-a[i-]);
else
dp[i][j]=min2(dp[i-][j],dp[i-][j-]+pow2(a[i]-a[i-]));
}
}
printf("%d\n",dp[n][k]);
}
return ;
}
Write a program to find and print the nth element in this sequence
#include <stdio.h>
int f[],n;
int i,j,k,l; int min(int a,int b,int c,int d){
int min=a;
if(b<min) min=b;
if(c<min) min=c;
if(d<min) min=d; if(a==min) i++;
if(b==min) j++;
if(c==min) k++;
if(d==min) l++; return min;
} int main(){
i=j=k=l=;
f[]=;
for(int t=;t<=;t++)
f[t]=min(*f[i],*f[j],*f[k],*f[l]); while(scanf("%d",&n)&&n!=){
if(n%==&&n%!=)
printf("The %dst humble number is %d.\n",n,f[n]);
else if(n%==&&n%!=)
printf("The %dnd humble number is %d.\n",n,f[n]);
else if(n%==&&n%!=)
printf("The %drd humble number is %d.\n",n,f[n]);
else
printf("The %dth humble number is %d.\n",n,f[n]);
}
return ;
}
【集训笔记】动态规划背包问题【HDOJ1421【HDOJ1058【HDOJ2546的更多相关文章
- 2017清北学堂(提高组精英班)集训笔记——动态规划Part3
现在是晚上十二点半,好累(无奈脸),接着给各位——也是给自己,更新笔记吧~ 序列型状态划分: 经典例题:乘积最大(Luogu 1018) * 设有一个长度为 N 的数字串,要求选手使用 K 个乘号将它 ...
- js动态规划---背包问题
//每种物品仅有一件,可以选择放或不放 //即f[i][w]表示前i件物品恰放入一个容量为w的背包可以获得的最大价值. //则其状态转移方程便是:f[i][w]=max{f[i-1][w],f[i-1 ...
- P1060 开心的金明(动态规划背包问题)
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱 ...
- leetcode笔记 动态规划在字符串匹配中的应用
目录 leetcode笔记 动态规划在字符串匹配中的应用 0 参考文献 1. [10. Regular Expression Matching] 1.1 题目 1.2 思路 && 解题 ...
- 2019暑期金华集训 Day7 动态规划
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数 ...
- 【集训笔记】动态规划【HDOJ1159【HDOJ1003
终于开始DP了] HDOJ_1159 Common Subsequence 题目链接 Sample Input abcfbc abfcab programming contest abcd mnp ...
- 动态规划-背包问题 Knapsack
2018-03-15 13:11:12 背包问题(Knapsack problem)是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何 ...
- 动态规划——背包问题python实现(01背包、完全背包、多重背包)
目录 01背包问题 完全背包问题 多重背包问题 参考: 背包九讲--哔哩哔哩 背包九讲 01背包问题 01背包问题 描述: 有N件物品和一个容量为V的背包. 第i件物品的体积是vi,价值是wi. 求解 ...
- QDEZ集训笔记【更新中】
这是一个绝妙的比喻,如果青岛二中的台阶上每级站一只平度一中的猫,差不多站满了吧 自己的理解 [2016-12-31] [主席树] http://www.cnblogs.com/candy99/p/61 ...
随机推荐
- isinstance 和 issubclass
一.isinstance Python 中的isinstance函数 isinstance是Python中的一个内建函数 语法: isinstance(object, classinfo) 如果参数o ...
- Firefox 备份
参考http://mozilla.com.cn/post/32327/ 火狐的地址栏中输入about:support点击“打开所在文件夹”按钮,会弹出一个资源管理器,并且定位到你当前的Profile文 ...
- web应用中Spring ApplicationContext的动态更新
在web应用中时常需要修改配置,并动态的重新加载ApplicationContext.比如,设置和切换数据库.以下给出一个方法,并通过代码验证可行性. 方法的基本思路是,为WebApplication ...
- HDU 3307 Description has only two Sentences
数学实在是差到不行了…… #include <cstdio> #include <cstring> #include <algorithm> #include &l ...
- Structs 2
1 redirect.redirectaction和chain 的区别 当使用type="redirectAction" 或type="redirect"提交 ...
- [转载]Android 知识图谱
from: http://blog.csdn.net/xyz_lmn/article/details/41411355
- Buffer Cache(缓冲区缓存)篇:缓存区块大小
缓冲区缓存(Buffer Cache) Buffer Cache是SGA的一部分,保存最近从磁盘读取的或修改的(dml修改或添加)数据块.Buffer Cache的目的就是减少磁盘I/O,提高速度. ...
- c 整数的逆序输出 输入3,2就算 2+22+222的结果
#include<stdio.h> #include<math.h> //整数逆序输出 void nixu() { int num,i; i = ; scanf("% ...
- :before :after
#p1:before{ content: "哈哈哈 "; color: red;}#p1:after{ content: "哈哈哈"; color: #452d ...
- 关于css里的class和id
id 是唯一的 权重100 相当于身份证 只能有一张. class 可以多个元素都拥有 权重10 就相当于电影票 你有我也有. 用法如下 <divid="box">变颜 ...