当前位置: 首页 > 编程日记 > 正文

cogs 362. [CEOI2004]锯木厂选址

                ★★★   输入文件:two.in   输出文件:two.out   简单对比
                  时间限制:0.1 s   内存限制:32 MB

从山顶上到山底下沿着一条直线种植了n棵老树。当地的政府决定把他们砍下来。为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂。
木材只能按照一个方向运输:朝山下运。山脚下有一个锯木厂。另外两个锯木厂将新修建在山路上。你必须决定在哪里修建两个锯木厂,使得传输的费用总和最小。假定运输每公斤木材每米需要一分钱。

输入

输入的第一行为一个正整数n——树的个数(2≤n≤20 000)。树从山顶到山脚按照1,2……n标号。接下来n行,每行有两个正整数(用空格分开)。第i+1行含有:wi——第i棵树的重量(公斤为单位)和 di——第i棵树和第i+1棵树之间的距离,1≤wi ≤10 000,0≤di≤10 000。最后一个数dn,表示第n棵树到山脚的锯木厂的距离。保证所有树运到山脚的锯木厂所需要的费用小于2000 000 000分。

输出

输出只有一行一个数:最小的运输费用。

样例

输入

9
1 2
2 1
3 3
1 1
3 2
1 6
2 1
1 2
1 1

输出

26

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<queue>
 8 #include<vector>
 9 using namespace std;
10 typedef long long LL;
11 typedef double db;
12 const int maxn=20010;
13 LL ANS=1e15;
14 int N,w[maxn],d[maxn],Sw[maxn],Sd[maxn],cost[maxn];
15 int Q[maxn],head,tail=-1; 
16 inline double calc(int j1,int j2){
17     return ((db)Sw[j1]*(db)Sd[j1]-(db)Sw[j2]*(db)Sd[j2])/((db)Sw[j1]-(db)Sw[j2]);
18 }
19 inline int All(int j,int i){
20     return cost[i]-cost[j-1]-Sw[j-1]*(Sd[i]-Sd[j-1]);
21 }
22 inline LL ask_ans(int j,int i){
23     return (LL)cost[j]+(LL)All(j+1,i)+(LL)All(i+1,N+1);
24 }
25 int main(){
26     //freopen("two.in","r",stdin);
27     //freopen("two.out","w",stdout);
28     scanf("%d",&N);
29     for(int i=1;i<=N;i++){
30         scanf("%d%d",&w[i],&d[i]);
31         Sw[i]=Sw[i-1]+w[i];
32          Sd[i+1]=Sd[i]+d[i];
33          cost[i]=cost[i-1]+Sw[i-1]*d[i-1];
34     }
35     cost[N+1]=cost[N]+Sw[N]*d[N];
36     Sw[N+1]=Sw[N];
37     for(int i=1;i<=N;i++){
38         while(head<tail&&calc(Q[head],Q[head+1])<=Sd[i]){
39              head++;
40          }
41         ANS=min(ANS,ask_ans(Q[head],i));
42         while(head<tail&&calc(Q[tail-1],Q[tail])>calc(Q[tail],i)){
43              tail--;
44          }
45          Q[++tail]=i;
46     }
47     printf("%lld",ANS);
48     return 0;
49 }

  

转载于:https://www.cnblogs.com/CXCXCXC/p/5416158.html

相关文章:

中小企业低成本快速建站的秘诀——模板建站

从14年至今&#xff0c;小乔已经给很多行业的客户做了不少网站。在跟我咨询建站的这些人当中&#xff0c;其实不乏一些创业初期经济比较紧张的个人/公司。这些个人/公司需要一个网站对外宣传&#xff0c;但又希望可以节省开支&#xff0c;所以他们往往会选择成本低的建站服务&a…

MySQL常用性能分析方法-profile,explain,索引

1.查版本号 无论做什么都要确认版本号&#xff0c;不同的版本号下会有各种差异。 >Select version();2.执行状态分析 显示哪些线程正在运行 >show processlist;下面是完整的信息3.show profile show profile默认的是关闭的&#xff0c;但是会话级别可以开启这个功能&…

MathType在手,公式不求人!

很多论文达人们的论文排版是相当漂亮的&#xff0c;页面也非常整齐美观&#xff0c;即使是理工类的论文&#xff0c;里面有很多的数学符号和公式&#xff0c;排版也是非常整洁&#xff0c;为什么达人们的公式论文能排版的这么完美&#xff0c;而自已却总是不得其门而入&#xf…

Linux系统mongdb还原数据库,linux下mongodb数据库备份与还原

MongoDb数据库备份还原数据库迁移,可视化工具NoSQLBooster for MongoDB 付费版才具有数据导入功能.代价过高,索性采起命令行web数据备份备份命令mongodbmongodump -h dbhost -d dbname -o dbdirectory-h&#xff1a;MongDB所在服务器地址&#xff0c;例如&#xff1a;127.0.0.1…

【逆序对】Ultra - Quicksort

POJ 2299 Ultra-QuickSort 只允许交换&#xff0c;比较相邻的元素&#xff0c; 求最少多少次交换可以使得序列有序 冒泡排序的次数——>数列中逆序对的个数减1——>最终为0 ——>答案为数列中逆序对的个数——> 归并排序求逆序对qwq 注意cnt开long long 不然会炸QA…

Android Touch事件传递机制 二:单纯的(伪生命周期) 这个清楚一点

转载于&#xff1a;http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中&#xff0c;我主要讲解了Android源码中的Touch事件的传递过程&#xff0c;现在我想使用一个demo以及一个实例来学习一下Andorid中的Touch事件处理过程。 在Android系统中&#xff0…

SpringBoot使用笔记

其实也是参考官方的&#xff1a;http://spring.io/guides/gs/rest-service/ &#xff0c;在官方代码基础上加入了很多实用的东西&#xff0c;比如运行环境启动命令等等。 官方文档&#xff1a;http://docs.spring.io/spring-boot/docs/current/reference/html/ SpringBoot并不…

linux卸载欧朋浏览器,如何在Centos下安装opera浏览器

如何在Centos下安装opera浏览器 &#xff0c;Opera目前是Linux平台上性能最优的浏览器&#xff0c;而且Opera中国团队本身即定位于Opera的研发中心&#xff0c;主要也是负责全球Linux平台项目的开发&#xff0c;这个版本初步解决了经年来Linux上Opera中文字体显示混乱的问题。我…

1-1 分配内存资源给容器和POD

这一小节讲解如何分配内存请求和对一个容器做内存限制。一个容器被保证拥有足够的内存可以处理请求&#xff0c;但是也不允许使用超过限制的内存。 开始之前 需要拥有一个k8s集群 需要安装好一个kubectl 工具&#xff0c;并且能够与集群通信。 如果没有准备好&#xff0c;你…

Java的SPI机制

Dubbo等框架使用到必须掌握。 java.sql.Driver 是 Spi&#xff0c;com.mysql.jdbc.Driver 是 Spi 实现&#xff0c;其它的都是 Api。package org.hadoop.java;public interface IService {public String sayHello(); public String getScheme(); }package org.hadoop.java…

你不知道的对称密钥与非对称密钥

&#xff08;一&#xff09;对称加密&#xff08;Symmetric Cryptography&#xff09; 对称密钥加密&#xff0c;又称私钥加密&#xff0c;即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快&#xff0c;适合于对大数据量进行加密&#xff0c;对…

linux sntp 代码,C语言window(linux)平台的SNTP实现

C语言实现window(linux)平台的SNTP&#xff0c;本程序功能主要是实现电脑(或者设备)时间同步。摘录部分代码&#xff1a;unsigned char liVnMode; /* LeapSecond(2bits:0), VersionNumber(3bits: 3), Mode(3bits: Client3, Server4) */unsigned char stratum; /* 时间层级 (0-1…

在typescript中导入第三方类库import报错

问题 最近开始折腾typescript&#xff0c;在使用第三方类库&#xff0c;比如最常见的lodash&#xff0c;采用常规方法导入 import * as _ from lodashvscode中报错提示lodash不是module。 原因 因为第三方类库并没有ts的声明文件&#xff0c;查阅网上资料&#xff0c;有typings…

JavaAgent 实现字节码注入

新建MyAgent项目 pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apach…

php打印中文乱码

php文档的文本格式都设置成 utf-8 格式 在代码中添加 header("content-type:text/html; charsetutf-8"); 转载于:https://www.cnblogs.com/negro-guoguo/p/5421355.html

linux孤立cpu,Linux 抛弃旧款 CPU,一下子少 50 万行代码

IT 之家4 月 3 日消息 Linux 内核维护者已经决定在即将发布的新版本中抛弃对旧款 CPU 架构的支持&#xff0c;因此 Linux 4.17 内核将减少大约 500000 行代码&#xff0c;根据 Linux 统计器&#xff0c;目前它包含大约 2030 万行代码。IT 之家报道&#xff0c;将被弃用的体系架…

CSS3 从头捋

1.border-radius 边界半径 作用&#xff1a;该属性用来实现圆角 示例1实现圆角 div {border:2px solid red;width:300px;border-radius:25px; } 示例2实现圆 div {border: 1px solid red;height: 100px;width: 100px;border-radius: 50%; } 示例3 不规则圆 div {border: 1px s…

算法:详解布隆过滤器的原理、使用场景和注意事项@知乎.Young Chen

算法&#xff1a;详解布隆过滤器的原理、使用场景和注意事项知乎.Young Chen 什么是布隆过滤器 本质上布隆过滤器是一种数据结构&#xff0c;比较巧妙的概率型数据结构&#xff08;probabilistic data structure&#xff09;&#xff0c;特点是高效地插入和查询&#xff0c;可…

linux shell显示下载进度,shell脚本测试下载速度

在linux下用shell来测试下载速度&#xff0c;很实用的shell代码。代码&#xff1a;复制代码 代码示例:#!/bin/bash#date:20140210# edit: www.jquerycn.cn#used for test server download speedr_host"188.18.28.19"r_dir"/home/test0208/tmp"r_file"…

openStack调试

openStack调试 posted on 2016-04-23 22:07 秦瑞It行程实录 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/ruiy/p/5425823.html

快应用开发常见问题以及解决方案【持续更新】

接触快应用也有一段时间了&#xff0c;踩过了大大小小的坑&#xff0c;让我活到了今天。准备在此立贴持续更新&#xff0c;记录遇到的问题以及解决方案&#xff0c;造福大众。css 方面 1、文字竖排不支持 目前官方还不支持writing-mode&#xff0c;除了等待官方支持这个api以外…

Java字节码研究

关于怎么查看字节码的五种方法参考本人另一篇文章《Java以及IDEA下查看字节码的五种方法》 1.String和常连池 先上代码&#xff1a; public class TestApp {public static void main(String[] args) {String s1 "abc";String s2 new String("abc");St…

在c语言中逗号的作用,关于c语言中的逗号运算符???

等下。。答错了。。还需要理解一下神马是逗号表达式。。我前面说的和uuyyhhjj与delta_charlie的意思一样&#xff0c;但其实我们都搞错了。你可以自己把我们的例子都运行一下&#xff0c;看看是不是这样。下面我感觉应该是我正确的理解。逗号表达式是所有运算符中优先级最低的&…

2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结

- 2018-2019-1 20165206 《信息安全系统设计基础》第4周学习总结 - 教材学习内容总结 程序员可见的状态&#xff1a;Y86-64程序中的每条指令都会读取或修改处理器状态的某些部分&#xff0c;这称为程序员可见状态。包括&#xff1a;程序寄存器、条件码、程序状态、程序计数器和…

PHP——图片上传

图片上传 Index.php文件代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </head> <body><form action"upload2.php" method"p…

IDEA实用插件和技巧

《解决lambda expressions are not supported at this language level的问题》 《Intellij Idea 代码格式化/保存时自动格式化》 一、安装google-java-format preferences -> plugins -> Browse repositories… 搜索google-java-format 还有阿里的代码规范插件也不…

c语言将字母与数字分开存放,2017年计算机二级《C语言》考前提分试题及答案9...

二、程序填空题(共18分)、下列给定程序中&#xff0c;函数flm的功能是&#xff1a;将s所指字符串中的所有数字字符移到所有非数字字符之后&#xff0c;并保持数字字符串和非数字字符串原有的次序。例如&#xff0c;s所指的字符串为“def35adh3kjsdt7”&#xff0c;执行后结果为…

学术青年如何克服拖延症——5条技巧助你前进

雷锋网 AI 科技评论按&#xff1a;「我准备好了就开始」&#xff08;或者说「拖延症」&#xff09;&#xff0c;以及「即便动起手来也觉得举步维艰」大概是每个现代人都逃不过的日常感受&#xff0c;不管是学习、在企业中工作&#xff0c;还是从事学术研究。我们可能都看过许多…

JDK源码研究Jstack,JMap,threaddump,dumpheap的原理

JDK最新bug和任务领取&#xff1a;https://bugs.openjdk.java.net/projects/JDK/issues 参加OpenJDK社区&#xff1a;https://bugs.openjdk.java.net/projects/JDK/issues openjdk源码地址&#xff1a; https://jdk.java.net/java-se-ri/8 https://download.java.net/openj…