ZOJ 1234 Chopsticks(动态规划)
Chopsticks
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234
题目大意:给定n个筷子的长度,取k+8套筷子,每套有3个,长度分别为A,B,C。要求k+8套筷子中(A-B)^2的和最小,输出这个最小值。
分析:题目中筷子长度是非降序排列的,所以最小的两个A和B一定是相邻的。先不考虑筷子C,只要留着就行。
令dp[i][j]表示从 j 个筷子中取 i 套筷子的最优值。
dp[i][j] = min {dp[i][j-1] , dp[i-1][j-1] | (n - j > 3*(k - i))剩下的筷子可以凑满}
可以用滚动数组
代码如下:
# include<iostream>
# include<cstring>
# include<cstdio>
using namespace std;
long MAX = ;
long dp[][];
long f[];
int main(){
int T,i,j,k,n;
long temp;
cin>>T;
while(T--)
{
scanf("%d%d",&k,&n);
for(i=;i<=n;i++)
cin>>f[i];
k += ;
memset(dp,,sizeof(dp));
for(i=;i<=k;i++)
{
for(j=i*;j<=n;j++)
{
dp[i][j] = MAX;
if(j>i*)
dp[i][j] = dp[i][j-];
if(n-j>(k-i)*)
{
temp = dp[i-][j-] + (f[j]-f[j-])*(f[j]-f[j-]);
if(temp<dp[i][j])
dp[i][j] = temp;
}
}
}
cout<<dp[k][n]<<endl;
}
return ;
}
ZOJ 1234 Chopsticks(动态规划)的更多相关文章
- ZOJ 1234 Chopsticks
原题链接 题目大意:有这么一个公式 A,B,C(A<=B<=C), (A-B)^2来衡量这对数字的好坏,值越小越好.现在给出一个数组,要求每三个配对,最后得到的每组值总和最小. 解法:我是 ...
- ZOJ 1563 Pearls(动态规划)
/* 分析: 因为他给的数据是递增的 而求得是这些数据总的 最优解 所以我们可以考虑,它的子问题求解不影响总的求解 也就是我们可以先求出 第一个的最优解 第二个....以此类推到总的最优解 那么我们想 ...
- zoj 2068 - Chopsticks
题目:非常多人在一起吃饭.有两组单支的筷子,定义badness为一对筷子长度差的平方,求最小的badness和. 分析:dp,最大公共子序列类似物. 这里利用数学关系找到一个结论: a < b ...
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- DP 简单题目练习
ZOJ 1234 这道题目我表示也还不是特别能理解....还是太菜了T T 从后往前思考,因为只要后面有多的数在,那么C肯定是存在的,只要考虑是否把前两个数加在一起作为badness值这样两种情况来考 ...
- [ACM_动态规划] ZOJ 1425 Crossed Matchings(交叉最大匹配 动态规划)
Description There are two rows of positive integer numbers. We can draw one line segment between any ...
- ZOJ 2672 Fibonacci Subsequence(动态规划+hash)
题意:在给定的数组里,寻找一个最长的序列,满足ai-2+ai-1=ai.并输出这个序列. 很容易想到一个DP方程 dp[i][j]=max(dp[k][i])+1. (a[k]+a[i]==a[j], ...
随机推荐
- ARM学习笔记15——串口通信基本原理【转】
计算机串口基本理论 1.什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用的设备通信的协议(不要 ...
- 洛谷1373 小a和uim之大逃离
洛谷1373 小a和uim之大逃离 本题地址:http://www.luogu.org/problem/show?pid=1373 题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北 ...
- HW4.25
public class Solution { public static void main(String[] args) { double sum; for(int i = 10000; i &l ...
- hostname、uname、dmesg、fdisk
hostname uname fdisk -l
- php判断字符串是不是xml格式并解析
最近遇到要要判断一个字符串是不是xml格式,网上找到一段代码,试了一下,完全可行 /** * 解析XML格式的字符串 * * @param string $str ...
- DateTime.TryParseExact 万能时间格式转化
本文转载:http://blog.csdn.net/gaofang2009/article/details/6073231 前天同事问C#有没有相关的方法能把"年月日时分秒"这样的 ...
- QTableWidget 导出到表格
跳槽到了新的公司.開始苦逼的出差现场开发.接触到了新的应用.有非常多应用须要将Table导出成表格,能够把table导出成csv格式的文件. 跟大伙分享一下: lass TableToExcle : ...
- java数组的拷贝四种方法:for、clone、System.arraycopy、arrays.copyof
public class ArrayCopy{ public static void main(String []args){ int []a = {1,3,4,5}; toPrint(a); int ...
- Android自定义属性时TypedArray的使用方法
有时候android传统的页面布局不足以满足我们的需求,常常需要自己定义view,通常继承View,然后重写构造方法以及onDraw等函数,再 具体实现自己定义的复杂view.我们知道在给控件赋属性时 ...
- Linux下设置最大文件打开数nofile及nr_open、file-max
在开发运维的时候我们常常会遇到类似“Socket/File: Can’t open so many files”,“无法打开更多进程”,或是coredump过大等问题,这些都可以设置资源限制来解决.今 ...