CEOI2004锯木厂选址
来源:互联网 发布:人依赖网络例子 编辑:程序博客网 时间:2024/05/16 16:56
斜率优化
# include <stdio.h># include <stdlib.h># include <iostream># include <string.h># include <algorithm># define IL inline# define RG register# define Fill(a, b) memset(a, b, sizeof(a))using namespace std;typedef long long ll;IL ll Read(){ RG char c = getchar(); RG ll x = 0, z = 1; for(; c > '9' || c < '0'; c = getchar()) z = c == '-' ? -1 : 1;; for(; c >= '0' && c <= '9'; c = getchar()) x = (x << 1) + (x << 3) + c - '0'; return x * z;}const int MAXN(20010), INF(2e9);int n, Q[MAXN], tail, head, w[MAXN], d[MAXN];int dis[MAXN], s[MAXN], ans, f[MAXN], c[MAXN], g[MAXN];IL double Calc(RG int i, RG int j){ return 1.0 * (c[i] - c[j]) / (w[i] - w[j]);}int main(){ n = Read(); for(RG int i = 1; i <= n; i++) w[i] = w[i - 1] + Read(), d[i] = Read(); for(RG int i = 1; i <= n + 1; i++){ dis[i] = dis[i - 1] + d[i - 1]; s[i] = s[i - 1] + w[i - 1] * d[i - 1]; c[i] = w[i] * dis[i]; } for(RG int i = 1; i <= n; i++) g[i] = s[n + 1] + c[i] - w[i] * dis[n + 1]; ans = INF; Q[0] = 1; for(RG int i = 2; i <= n; i++){ while(head < tail && Calc(Q[head], Q[head + 1]) <= dis[i]) head++; RG int j = Q[head]; ans = min(ans, g[i] + c[j] - w[j] * dis[i]); while(head < tail && Calc(Q[tail - 1], Q[tail]) >= Calc(Q[tail], i)) tail--; Q[++tail] = i; } printf("%d\n", ans); return 0;}
阅读全文
0 0
- ceoi2004 锯木厂选址
- [CEOI2004] 锯木厂选址
- CEOI2004锯木厂选址
- bsoj 2684 【CEOI2004】锯木厂选址
- 【CEOI2004】锯木厂选址(斜率优化入门题)
- 【CEOI2004】锯木厂选址(斜率优化入门题)
- BSOJ2684 cogs 362 -- 【CEOI2004】锯木厂选址 随机化 模拟退火 神级骗分
- 【BZOJ2684】【CEOI2004】锯木厂选址(斜率优化,动态规划)
- 【斜率优化】[CEOI2004]锯木厂选址——从这里开始斜率优化的大门
- [CEOI2004] 锯木场选址
- Two Sawmills(锯木厂选址)
- [COGS 362]锯木厂选址
- 锯木厂选址 斜率dp优化
- COGS锯木厂选址(斜率优化)
- dp斜率优化 锯木厂选址(CEOI 2003)题解
- 选址
- 3027: [Ceoi2004]Sweet
- 便利店选址
- 浅析JBPM工作流引擎
- Mybatis实战 之 获取主键
- 人生
- top k 问题
- 庆功会(动态规划练习题)
- CEOI2004锯木厂选址
- sysbench 安装
- HNOI2008玩具装箱
- 观察者设计模式
- EasyDemo*五大布局体系结构图(on Github)
- 修改系统默认的TTL值-预防被探测操作系统
- USACO08MAR Land Acquisition
- 关于linux系统中无法识别某一命令问题的解决方案
- Spring的简单实现实例(Spring的java配置方式)