Vijos 1061
2014-02-02 10:01
302 查看
题目中的按升序排列启示了我们DP的顺序,我们先考虑按升序DP,这时会发现决策的时候第i个必定是站在中间的,对答案不产生影响,故无法转移,这样就可以考虑倒着DP,从后往前进行DP。决策的时候需要注意,并不是一个一个的决策,而是两个两个的决策,即每次决策两个最矮的人,这样就容易转移。(所以转移的时候是f[i-2]而不是f[i-3],因为选了i和i-1在1~i-2中剩下的任何一个人都比他们高,不产生影响(这里已经把数组倒序排列))方程容易写出。
#include<iostream> #include<algorithm> #include<cstring> using namespace std; int f[10000][2000],a[10000]; int main() { int m,n; memset(f,63,sizeof(f)); f[0][0]=0; cin>>m>>n; for(int i=1;i<=n;i++) { int x;f[i][0]=0; cin>>x; a[n-i+1]=x; } for(int i=1;i<=n;i++) for(int j=1;j<=min(m,i/3);j++) f[i][j]=min(f[i-1][j],f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])); cout<<f [m]; while(1); return 0; }
相关文章推荐
- HTML表单、HTTP Get与Post杂谈
- linux stat 命令查看文件信息
- struts2中使用拦截器(Interceptor)控制登录和权限
- VMware Bridged NAT Host-only 区别
- 在Android应用中使用自定义证书的HTTPS连接(下)
- 开机时提示memory for crash kernel
- USACO Number Triangles
- 关闭sendmail服务
- python decorator 计算程序时间
- LeetCode 041 First Missing Positive
- UVa 11292 Dragon of Loowater
- 关于光速(c)测定的故事
- CDLinux 自动休眠功能的关闭方法
- JavaScript 禁用键盘按钮
- 对称博弈--取石子(七)
- 为jQuery添加Webkit的触摸方法支持
- 第14天 Android Touch事件学习 1 点击事件
- 安装SQL Server 那些事儿
- 天地否 (易經大意 韓長庚)
- flexgrid 精华(网上找不到这种案例了) 选中行 某列float数据求和 trSelected