bzoj 3675 [Apio2014]序列分割(斜率优化)
2017-10-11 22:53
375 查看
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3675
wa,很裸的的斜率优化。。。懒得推柿子了233333
代码:
wa,很裸的的斜率优化。。。懒得推柿子了233333
代码:
#include<bits/stdc++.h> using namespace std; const int MAXN=1e5+5; typedef long long ll; ll f[MAXN][2],sum[MAXN]; int a[MAXN],stk[MAXN]; int now,nxt; ll getUp(int k,int j) { return (f[k][now]-sum[k]*sum[k])-(f[j][now]-sum[j]*sum[j]); } ll getDown(int k,int j) { return sum[k]-sum[j]; } int n,k; void solve() { memset(f,0,sizeof(f)); sum[0]=0; now=0,nxt=1; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; } //cout<<k<<endl; while(k--) { int l=0,r=0; stk[0]=0; for(int i=1;i<=n;i++) { while(l<r-1&&getUp(stk[l+1],stk[l])>=-sum[i]*getDown(stk[l+1],stk[l])) l++; //cout<<stk[l]<<endl; f[i][nxt]=f[stk[l]][now]+sum[stk[l]]*(sum[i]-sum[stk[l]]); while(l<r-1&&getUp(stk[r-1],stk[r-2])*getDown(i,stk[r-1])<=getUp(i,stk[r-1])*getDown(stk[r-1],stk[r-2])) r--; stk[r++]=i; } now^=1;nxt^=1; //printf("%lld %d\n",f [now],k); } printf("%lld\n",f [now]); } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while(~scanf("%d%d",&n,&k)) { solve(); } return 0; }
相关文章推荐
- [BZOJ 3675][Apio2014]序列分割:DP斜率优化
- [BZOJ3675][Apio2014]序列分割(斜率优化dp)
- BZOJ_3675_[Apio2014]序列分割_斜率优化
- BZOJ3675 [APIO2014]序列分割(斜率优化模板)
- bzoj 3675: [Apio2014]序列分割【斜率优化dp】
- [BZOJ3675][Apio2014]序列分割(斜率优化DP)
- bzoj3675[Apio2014]序列分割 斜率优化dp
- 【BZOJ3675】[Apio2014]序列分割【斜率优化】
- bzoj-3675 序列分割APIO2014 斜率优化dp
- 【动态规划17】bzoj3675 [Apio2014]序列分割(斜率优化)
- BZOJ 3675 [Apio2014] 序列分割 斜率优化
- [Bzoj3675][Apio2014]序列分割(斜率优化)
- bzoj 3675: [Apio2014]序列分割(斜率优化)
- BZOJ3675 [Apio2014]序列分割 【斜率优化dp】
- BZOJ 3675: [Apio2014]序列分割( dp + 斜率优化 )
- bzoj 3675: [Apio2014]序列分割 斜率优化dp
- BZOJ3675 [Apio2014]序列分割 【斜率优化dp】
- [BZOJ 3675][APIO 2014]序列分割(斜率优化DP)
- [BZOJ3675][Apio2014]序列分割-斜率优化-动态规划
- 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割