BZOJ3437 小P的牧场
还是DP题写起来容易的说。。。
直接看zky的一图流好了(话说zky用的是三分?。。。给跪)
1 /************************************************************** 2 Problem: 3437 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:1616 ms 7 Memory:32056 kb 8 ****************************************************************/ 9 10 #include <cstdio> 11 12 #define L q[l] 13 using namespace std; 14 typedef long long ll; 15 const int N = 1000005; 16 17 int n, l, r; 18 ll f[N], g[N], q[N]; 19 ll sum1[N], sum2; 20 21 inline int read() { 22 int x = 0; 23 char ch = getchar(); 24 while (ch < '0' || '9' < ch) 25 ch = getchar(); 26 while ('0' <= ch && ch <= '9') { 27 x = x * 10 + ch - '0'; 28 ch = getchar(); 29 } 30 return x; 31 } 32 33 inline ll calc1(int x, int y) { 34 return (ll) g[x] - g[y]; 35 } 36 37 inline ll calc2(int x, int y) { 38 return (ll) sum1[x] - sum1[y]; 39 } 40 41 inline bool pop_head(int x, int i) { 42 return calc1(q[x + 1], q[x]) < i * calc2(q[x + 1], q[x]); 43 } 44 45 inline bool pop_tail(int x, int i) { 46 return calc1(i, q[x]) * calc2(q[x], q[x - 1]) < calc1(q[x], q[x - 1]) * calc2(i, q[x]); 47 } 48 49 int main() { 50 int i, b; 51 n = read(); 52 for (i = 1; i <= n; ++i) 53 f[i] = read(); 54 for (l = r = 0, i = 1; i <= n; ++i) { 55 b = read(); 56 sum1[i] = sum1[i - 1] + b; 57 sum2 += (ll) i * b; 58 59 while (l < r && pop_head(l, i)) ++l; 60 f[i] += g[L] + i * (sum1[i] - sum1[L]) - sum2; 61 g[i] = f[i] + sum2; 62 while (l < r && pop_tail(r, i)) --r; 63 q[++r] = i; 64 } 65 printf("%lld\n", f[n]); 66 return 0; 67 }
View Code
转载于:https://www.cnblogs.com/rausen/p/4133378.html
BZOJ3437 小P的牧场相关推荐
- BZOJ3437:小P的牧场(斜率优化DP)
Description 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1-n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站,每个牧场上只能建立一个控制站,每个控制 ...
- bzoj 3437: 小P的牧场(斜率DP)
3437: 小P的牧场 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1493 Solved: 830 [Submit][Status][Disc ...
- 【BZOJ3437】小P的牧场,斜率优化DP
传送门 写在前面:感觉线性基太蛋疼了 思路: 原始方程 f[i]=min(f[j]+∑ik=j+1b[k]∗(i−k)+a[i])j∈[0,i)f[i]=min(f[j]+∑^i_{k=j+1}b[k ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- 2019.4.summary
2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...
- 分享:个人是怎么学习新知识的
为什么80%的码农都做不了架构师?>>> 挺多童鞋问我是怎么学习新知识的,干脆写篇文章总结一下,希望对大家有所帮助.对照书.技术博客.极客时间等学习的方式我就不说了. 一.早期 ...
- MongoDB自动备份全过程实录
前段时间,个人小程序 IT牧场 因服务器磁盘空间被占满,导致MongoDB挂了.清理了一些无用的数据后,重启MongoDB,竟然无法启动,一番折腾(20分钟)后,总算修复了.这让我意识到:虽然是个人小 ...
- 分享:个人是怎么学习新知识的--周立
本文转载,原文地址: 分享:个人是怎么学习新知识的 挺多童鞋问我是怎么学习新知识的,干脆写篇文章总结一下,希望对大家有所帮助.对照书.技术博客.极客时间等学习的方式我就不说了. 一.早期 在1 ...
- java 将千分位转为数字_java让数字显示千分位 mark
/** * 格式化数字为千分位显示: * @param 要格式化的数字: * @return */ public static String fmtMicrometer(String text) { ...
最新文章
- Python:Resquest/Response
- 超实用的58个office快捷键汇总,办公室人员必备!
- softmax函数_干货 | 浅谈 Softmax 函数
- 30行代码如何写一封七夕密书?
- java 对象 转为繁体_Java实现将数字转化为繁体汉字表示
- PowerBI 秒级实时大屏展示方案 全面助力双十一
- 利用websocket实现一对一聊天
- java 怎么链接ndk的库_使用ndk-build链接现有的静态库
- [基础]sizeof和strlen
- mysql linux32_linux 32 位mysql 安装中的问题 以及修改数据库密码
- 【综述】2018年的一篇NER综述笔记
- 各路技术牛人都推荐的书
- 两个excel表格信息合并 自动匹配_别再复制黏贴了,合并两个Excel表格可以很简单!...
- 2.3.6 CSM、RMC和RSCT管理系统
- 项目管理中成本管理相关指标
- 纽约州立石溪分校计算机科学排名,美国纽约州立大学石溪分校排名_2019纽约州立大学石溪分校排名(USNews排名)...
- C++ uint8_t
- HBase系列2-HBase快速入门
- 交易系统解析(八)证券公司与基金公司系统综述
- C++电脑程序设计语言介绍