博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1010: [HNOI2008]玩具装箱toy
阅读量:6974 次
发布时间:2019-06-27

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

思路:

斜率优化dp

s[i]表示1-i的前缀和

斜率不等式为:

对于 i < j < k

(dp[j] - dp[k] + (j + s[j])^2 - (k + s[k])^2) / ((j + s[j]) - (k + s[k]))  <= 2*(i + s[i] - l -1)

#include
using namespace std;#define fi first#define se second#define pi acos(-1.0)#define LL long long//#define mp make_pair#define pb push_back#define ls rt<<1, l, m#define rs rt<<1|1, m+1, r#define ULL unsigned LL#define pll pair
#define pii pair
#define piii pair
#define mem(a, b) memset(a, b, sizeof(a))#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#define fopen freopen("in.txt", "r", stdin);freopen("out.txt", "w", stout);//headconst int N = 5e4 + 5;int c[N], l;LL sum[N], dp[N];LL get_down(int j, int k) { return (j + sum[j] - (k + sum[k]));}LL get_up(int j, int k) { return dp[j] - dp[k] + (j + sum[j])*(j + sum[j]) - (k + sum[k])*(k + sum[k]);}int main() { int n; scanf("%d %d", &n, &l); for (int i = 1; i <= n; i++) scanf("%d", &c[i]); for (int i = 1; i <= n; i++) { sum[i] = sum[i-1] + c[i]; } deque
q; q.push_front(0); for (int i = 1; i <= n; i++) { while(q.size() >= 2) { int t = q.front(); q.pop_front(); int tt = q.front(); if(get_up(tt, t) <= 2*(i + sum[i] - l - 1)*get_down(tt, t)); else { q.push_front(t); break; } } int t = q.front(); dp[i] = dp[t] + (i - t - 1 + sum[i] - sum[t] - l) * (i - t - 1 + sum[i] - sum[t] - l); while(q.size() >= 2) { int t = q.back(); q.pop_back(); int tt = q.back(); if(get_up(i, t) * get_down(t, tt) <= get_up(t, tt) * get_down(i, t)) ; else { q.push_back(t); break; } } q.push_back(i); } printf("%lld\n", dp[n]); return 0;}

 

转载于:https://www.cnblogs.com/widsom/p/9324431.html

你可能感兴趣的文章
开发Servlet的方法(2)
查看>>
Apache mod_wsgi部署Django项目
查看>>
玲珑杯#20 C 漆黑的太阳——莫队
查看>>
MySQL数据库建立外键失败的原因总结
查看>>
网络资源收集工具编码规范
查看>>
ZOJ3778 Talented Chef(贪心)
查看>>
iOS上的反射用法
查看>>
CF1072A Palindromic Twist 思维
查看>>
Leetcode c语言-Permutations
查看>>
《javascript设计模式》阅读笔记
查看>>
JQuery基础总结上
查看>>
postgresql 备份
查看>>
Cocos2d-x调用Java 代码
查看>>
close方法
查看>>
如何为crontab调度运行的多脚本设置共享的环境变量?
查看>>
bash字符串匹配
查看>>
选择设置好ext3日志模式
查看>>
程序员专用经典语录
查看>>
网络爬虫
查看>>
iOS开发基础
查看>>