博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3480 Division
阅读量:7040 次
发布时间:2019-06-28

本文共 1639 字,大约阅读时间需要 5 分钟。

$dp$,斜率优化。

和基本上是一样的。这题还比那题简单,得到斜率的式子很方便。

#pragma comment(linker, "/STACK:1024000000,1024000000")#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;const double pi=acos(-1.0),eps=1e-10;void File(){ freopen("D:\\in.txt","r",stdin); freopen("D:\\out.txt","w",stdout);}template
inline void read(T &x){ char c = getchar(); x = 0; while(!isdigit(c)) c = getchar(); while(isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); }}int T,n,m;long long dp[10010][5010];long long x[10010];int q[10010],f1,f2;bool delete1(int t,int a,int b,int c){ if(dp[b][t]+x[b+1]*x[b+1]-dp[a][t]-x[a+1]*x[a+1]<2*x[c]*(x[b+1]-x[a+1])) return 1; return 0;}bool delete2(int t,int a,int b,int c){ if((dp[c][t]+x[c+1]*x[c+1]-dp[b][t]-x[b+1]*x[b+1])*(x[b+1]-x[a+1])<= (dp[b][t]+x[b+1]*x[b+1]-dp[a][t]-x[a+1]*x[a+1])*(x[c+1]-x[b+1]) ) return 1; return 0;}int main(){ scanf("%d",&T); int cas=1; while(T--) { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%lld",&x[i]); sort(x+1,x+1+n); for(int i=1;i<=n;i++) dp[i][1]=(x[i]-x[1])*(x[i]-x[1]); for(int j=2;j<=m;j++) { f1=f2=0; q[f2]=j-1; for(int i=j;i<=n;i++) { while(1) { if(f2-f1+1<2) break; if(delete1(j-1,q[f1],q[f1+1],i)) f1++; else break; } dp[i][j]=dp[q[f1]][j-1]+(x[i]-x[q[f1]+1])*(x[i]-x[q[f1]+1]); while(1) { if(f2-f1+1<2) break; if(delete2(j-1,q[f2-1],q[f2],i)) f2--; else break; } f2++; q[f2]=i; } } printf("Case %d: %lld\n",cas++,dp[n][m]); } return 0;}

 

转载于:https://www.cnblogs.com/zufezzt/p/6351508.html

你可能感兴趣的文章
最全面的CleanMyMac使用方法
查看>>
HTTP 304
查看>>
基于OBS的插件开发总结
查看>>
详解.NET IL代码
查看>>
mongodb.conf配置文件详解
查看>>
(三)Boost库之字符串处理
查看>>
LoadRunner替换字符串(可以同时替换多个)
查看>>
静电的ui教程
查看>>
再谈最大似然估计与最小二乘
查看>>
PHP5各个版本的新功能和新特性总结
查看>>
http://www.tuicool.com/articles/B3qeUrB
查看>>
java 解析四则混合运算表达式并计算结果
查看>>
PulsingHalo(自定义涟漪)的使用方法
查看>>
ubuntu安装软件apt-get
查看>>
js template实现方法
查看>>
HTML <img> 标签
查看>>
rsync使用
查看>>
大话RAC介质恢复---联机日志损坏
查看>>
Unity3d之动态连接Mesh Renderer和Collider
查看>>
【编程小练习】字符串大写字母转小写
查看>>