BZOJ4518: [Sdoi2016]征途(dp+斜率优化)
2018-06-17 20:52:55来源:未知 阅读 ()
Submit: 1875 Solved: 1045
[Submit][Status][Discuss]
Description
Input
Output
一个数,最小方差乘以 m^2 后的值
Sample Input
1 2 5 8 6
Sample Output
HINT
1≤n≤3000,保证从 S 到 T 的总路程不超过 30000
Source
鸣谢Menci上传
// luogu-judger-enable-o2 #include<cstdio> #include<cstring> #include<bitset> #include<cmath> #include<algorithm> #define int long long //#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<23,stdin),p1==p2)?EOF:*p1++) char buf[1<<23],*p1=buf,*p2=buf; using namespace std; const int MAXN=1e5+10; const int limit=100000; int N,M; int f[MAXN],g[MAXN]; int sum[MAXN]; int sqr(int x) {return x*x;} int Query(int l,int r){return sum[r]-sum[l-1];} int X(int x){return sum[x];} int Y(int x){return g[x]+sqr(sum[x]);} int slope(int x,int y){return (Y(y)-Y(x)) / (X(y)-X(x));} int Q[MAXN]; main() { #ifdef WIN32 freopen("a.in","r",stdin); //freopen("b.out","w",stdout); #endif scanf("%d%d",&N,&M); for(int i=1;i<=N;i++) scanf("%d",&sum[i]),sum[i]+=sum[i-1]; for(int i=1;i<=N;i++) g[i]=sqr(sum[i]); for(int k=1;k<=M-1;k++) { memset(f,0x3f,sizeof(f)); int h=1,t=1;Q[1]=k-1; for(int i=k+1;i<=N;i++) { while(h<t&&slope(Q[h],Q[h+1])<2*sum[i]) h++; int j=Q[h]; f[i]=min(f[i],g[j]+sqr(Query(j+1,i))); while(h<t&&slope(Q[t-1],Q[t])>slope(Q[t-1],i)) t--; Q[++t]=i; } memcpy(g,f,sizeof(f)); } printf("%lld",-sum[N]*sum[N]+f[N]*M); return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 洛谷P4071-[SDOI2016]排列计数 题解 2020-01-12
- BZOJ4517: [Sdoi2016]排列计数(组合数+错位排列) 2018-06-27
- bzoj4518 [ SDOI2016 ] --斜率优化DP 2018-06-17
- BZOJ4514: [Sdoi2016]数字配对(费用流) 2018-06-17
- BZOJ4517: [Sdoi2016]排列计数(组合数+错位排列) 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash