HDU 1500(经典的恶心DP)
这是比较经典的DP 有一点很明显 却很难肯定的
那就是在最好的分组方案中,每组中两根较短的筷子在有序筷子数列中一定是相邻的
dp[j][i]表示从前i根筷子中挑出j组(不考虑第三根)
dp[j][i]=min{
dp[j][i-1];(i>j*2)
dp[j-1][i-2]+(hash[i]-hash[i-1])^2;(n-i>(k-j)*3)
}
太恶心了 做得我很郁闷 代码贴上 备忘
#include <algorithm>
#include <functional>
using namespace std;
long hash[5010];
long dp[1010][5010];
int main()
{
long T,K,N;
scanf("%ld",&T);
while (T--)
{
scanf("%ld %ld",&K,&N);
long i,j;
for(i=0;i<N;++i)
{
scanf("%ld",&hash[i]);
}
sort(hash,hash+N,greater<long>());
long t=hash[1]-hash[2];
dp[0][2]=t*t;
for (i=3;i<N;++i)
{
t=hash[i]-hash[i-1];
t*=t;
dp[0][i]=dp[0][i-1]>t?t:dp[0][i-1];
}
for (i=1;i<K+8;++i)
{
long s=3*i+2;
t=hash[s]-hash[s-1];
t*=t;
dp[i][s]=dp[i-1][s-2]+t;
for (j=s+1;j<N;++j)
{
t=hash[j]-hash[j-1];
t*=t;
t=dp[i-1][j-2]+t;
dp[i][j]=dp[i][j-1]>t?t:dp[i][j-1];
}
}
printf("%ld\n",dp[K+7][N-1]);
}
return 0;
}
转载于:https://www.cnblogs.com/zhuangli/archive/2008/08/05/1261508.html
HDU 1500(经典的恶心DP)相关推荐
- hdu 2196(经典树形dp)
题意:给你一颗边带权值的树,求树上的每一点距离其最远的一个点的距离 解题思路:这道题网上说是经典的树形dp,不过确实很巧妙.两次dfs应该是比较好想到的,因为某节点最大的距离要么就是一直走到叶子节点, ...
- HDU 1231.最大连续子序列-dp+位置标记
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- hdu 1500 Chopsticks
http://acm.hdu.edu.cn/showproblem.php?pid=1500 dp[i][j]为第i个人第j个筷子. 1 #include <cstdio> 2 #incl ...
- HDU 6156 Palindrome Function 数位DP
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6156 题目描述: 求L~R所有的数的l~r进制的f(x), f(x) = 当前进制 如果回文串, f ...
- HDU 4652 Dice:期望dp(成环)【错位相减】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4652 题意: 给你一个有m个面的骰子. 两种询问: (1)"0 m n": &qu ...
- HDU 5115 Dire Wolf 区间dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5115 Dire Wolf Time Limit: 5000/5000 MS (Java/Others ...
- HDU 6143 Killer Names (组合数学+DP)
Description 字母表的长度为\(m\),用表中的字母构造长度为\(2n\)的字符串,要求同一种字母能同时出现在前\(n\)个字符中和后\(n\)个字符中.输出方案数,结果模\(10^9+7\ ...
- HDU 5693 D Game 区间dp
D Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5693 Description 众所周知,度度熊喜欢的字符只有两个:B 和D. 今天,它 ...
- Hdu 2089-不要62 数位dp
题目: http://acm.hdu.edu.cn/showproblem.php?pid=2089 不要62 Time Limit: 1000/1000 MS (Java/Others) Me ...
最新文章
- 通过异或运算符加密解密 难度二星
- 大剑无锋之内存泄漏是什么?【面试推荐】
- js倒计时代码最简单的_代码设计开发-6大基本原则解读(最简单扼要的理解)
- Ansible基础概述
- 【图论】【模板】静态仙人掌(luogu 5236)
- kasp技术原理_KASP基因型测定技术在各个学科的应用实践(内附官方重要资料)...
- 旷视科技Face++进军机器人业务
- pythonsocket自定义协议_Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器...
- 笔记-js高程-第七章 函数表达式
- APP界面设计流程和APP产品设计流程知识汇总
- 购物提醒(基于python的信息轰炸)
- windows 7 远程桌面连接图文教程
- BGP多线和双线双IP服务器有什么区别? 哪个网站访问速度更快?
- 如何用计算机弹出斗地主的声音,电脑为什么只有斗地主的时候有声音?
- php上传文件失败解决方式
- Android流畅度总结
- 教育行业课程介绍话术
- ILSSI|六西格玛DMAIC的历程
- 流媒体、直播解决方案及趋势
- DOM ------ 仿淘宝关闭二维码
热门文章
- stretchblt 模糊_微软开源持续开发模糊测试工具OneFuzz
- 思科三层交换机开启ipv6路由功能_三层交换机实现路由功能配置示例与详解 (Cisco Packer Tracer 模拟器)...
- android图片传输三方框架,Android开发三种第三方图片加载的框架
- java 方法绑定_java 方法调用绑定
- Python 列表实现原理
- error: src refspec main does not match any
- 【火炉炼AI】机器学习042-NLP文本的主题建模
- 总结|数学建模的收获
- Sublime Text 3运行JavaScript控制台
- 一种新的人机交流方式——sound ware 声件