Description

一只带着先进设备和药物的医疗团队来到了埃博拉病毒疫区的某个非洲国家。这个国家有n个村庄,均坐落在该国唯一的一条公路旁,n个村庄依次标号为1,2,…n。第i个村庄有a_i个埃博拉感染者。
到来后的第一天早晨,医疗团队在第1个村庄。每天他们可以选择治疗所在村庄的村民,这样所有感染者都会痊愈;他们也可以选择前往相邻的一个村庄,路程需要1天。每天结束时,如果第i个村庄的a_i个感染者没有痊愈,那么他们会死去,同时会有另外a_i个人被感染。也就是说,如果第i个村庄没有被治疗,那么每天这个村庄会死去a_i个人。
医疗团队在经过村庄i时,可能选择不治疗这个村庄而前往下一个村庄i+1。但为了不让村民失去希望,如果医疗团队在村庄j决定往回走时,则他们要治疗村庄j之前所有没有被治疗的村庄,同时在返回的过程中,如果经过没有接受治疗的村庄,他们需要停下来进行治疗。
医疗团队最终会治愈所有村民。作为团队的领导人,你需要得出在合理规划行程下最少的死亡人数。
 
 

Input

第一行为一个正整数n,表示村庄的个数。接下来一行是n个正整数a_i(1<=a_i<=10^9),为每个村庄的感染人数

Output

输出一个整数,表示在治愈所有村民前最少的死亡人数。

Sample Input

6
40 200 1 300 2
10

Sample Output

1950

HINT

100%的数据,n<=3000

题解:
设g[i][j]表示从j开始走,走到i,然后回头到j,i到j之间的村子的最小死亡人数
显然g[i][i]=0
考虑j这个村子一开始是治疗还是被跳过
所以g[i][j]=g[i][j+1]+sum[j+1,i]+min((i-j)*3*a[j],sum[j+1,i])
然后设f[i]表示走到i,且前面的都治好了的情况下,总共的最小死亡人数
转移就是枚举j,考虑从j+1出发到i,然后回头到j+1,再回头到i
即f[i]=min{f[j]+g[i][j+1]+sum[i+1,n]*((i-j)*4-2)}
复杂度O(n2)
PS:这也是jsoi2016R2D2T1
code:
 #include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long int64;
char ch;
bool ok;
void read(int &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
void read(int64 &x){
for (ok=,ch=getchar();!isdigit(ch);ch=getchar()) if (ch=='-') ok=;
for (x=;isdigit(ch);x=x*+ch-'',ch=getchar());
if (ok) x=-x;
}
const int maxn=;
int n;
int64 a[maxn],sum[maxn],g[maxn][maxn],f[maxn];
inline int64 s(int l,int r){return sum[r]-sum[l-];}
int main(){
read(n);
for (int i=;i<=n;i++) read(a[i]);
for (int i=;i<=n;i++) sum[i]=sum[i-]+a[i];
for (int i=;i<=n;i++){
g[i][i]=;
for (int j=i-;j>=;j--) g[i][j]=g[i][j+]+s(j+,i)+min(3LL*(i-j)*a[j],s(j+,i));
}
memset(f,,sizeof(f));
f[]=;
for (int i=;i<=n;i++) for (int j=;j<i;j++) f[i]=min(f[i],f[j]+g[i][j+]+s(i+,n)*(4LL*(i-j)-));
printf("%lld\n",f[n]);
return ;
}

bzoj4038: 医疗援助的更多相关文章

  1. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  2. 智软科技医疗器械GSP监管软件通过多省市药监局检查

    提供医疗器械GSP监管软件,通过多省市药监局检查,符合2016年最新GSP监管条例的要求. 企业客户列表 温岭市万悦医疗器械有限公司 杭州市上善医疗器械有限公司 武汉明德生物科技股份有限公司 http ...

  3. 系统建设 > 医疗集团CRM系统建设步骤与分析

    概述 医院客户关系管理系统(Customer Relationship Management,简称CRM)是一个完善的“以病人为中心”的管理系统,为集团/医院/总院分院/管理机构提供院前.院中.院后的 ...

  4. 数据中心第三方服务、金融IT外包服务、社保医疗信息化解决方案,这三类业务是什么关系,区别在哪?

    这个话题很大,牵扯很多,试着回答一下,算是胡扯了. 三类业务的关系,都是IT外包,至于外包的内容很杂.DC的外包,多半是基建和建维,一般不牵扯到软件开发,网站建设类的.金融IT外包就复杂多了,信息系统 ...

  5. 在GMIC听“移动互联网+医疗”的感受 2015-04-29

    “互联网+”这个词挺火的,基本格式是“互联网+传统行业”,比如医疗.教育.交通等等.就更别说电子商务.金融这些领域了,相比已经和互联网分不 开了.在我看来,互联网+的背后,是信息化.智能化.信息沟通的 ...

  6. 《100种过度医疗大公开》:转译自日文版,日文版依据的是美国的“Choosing Wisely”项目。三星推荐

    本书转译自日文,日文版则是在美国的“Choosing Wisely”项目中选择了100个相对常见的过度医疗项目做解说.Choosing Wisely项目,是由美国多个专业医学组织发起的列出过度医疗项目 ...

  7. 044医疗项目-模块四:采购单模块—采购单保存(Dao,Service,Action三层)

    我们上上一篇文章(042医疗项目-模块四:采购单模块-采购单明细添加查询,并且把数据添加到数据库中)做的工作是把数据插入到了数据库,我们这篇文章做的是042医疗项目-模块四:采购单模块-采购单明细添加 ...

  8. 005医疗项目-模块一:用户的查找:1.用户表查询的sql语句

    这是医疗项目的第一个模块:做一个用户的查询,可以根据用户的账号,用户的名称,单位的名称,用户的类型去查询.要求效果如下:

  9. K2 BPM医疗行业EMS解决方案

    EMS,即Event Management System,K2医疗行业EMS解决方案包括四方面的内容. 详情链接:http://www.k2software.cn/zh-hans/ems-soluti ...

随机推荐

  1. Linux运维工程师成长必经之路

    本路线图是从0基础开始,全方位由浅入深,按照多年Linux培训经验和优秀教学方法制定的学习思路和学习方法,路线图包括初级入门.中级进阶.高级提升和资深冲刺四个阶段,每阶段对应着不同优秀的课程和学习方法 ...

  2. Java基础知识强化之IO流笔记40:字符流缓冲流之特殊功能 [ newLine() / readLine() ]

    1. 字符缓冲流的特殊方法 BufferedWriter: public void newLine():根据系统来决定换行符 BufferedReader: public String readLin ...

  3. mysql 中间件 分析

    360的Atlas 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB altas 在10000/s的请求量级应该是毫无问题的 https: ...

  4. semaphore(信号量)使用说明

    例子:      以一个停车场运作为例.为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下车拦,剩下的车则必须在入口等待, ...

  5. Socket.io 0.7 – Sending messages to individual clients

    Note that this is just for Socket.io version 0.7, and possibly higher if they don’t change the API a ...

  6. Android Studio之could not reserve enough space for object heap

    在用AndroidStudio时出现这样的错误:  每次创建工程后,在项目文件 gradle.properties文件中加入如下代码: org.gradle.jvmargs=-Xmx512m -XX: ...

  7. count()与sum()

    介绍Mysql中的count()与sum()区别 CREATE TABLE `result` ( `name` varchar(20) default NULL, `subject` varchar( ...

  8. Timestamp的作用及与字符串的相互转换 .

    一.Timestamp的介绍 每一个数据库都有一个计数器,这个计数器记录着数据行的插入.更新行为.如果我们为一个表中增加 timestamp 列,那么,该列将记录每一个数据行的计数器值.假如数据库中当 ...

  9. 一、Maven环境搭建(windows 环境)

    所需工具 : JDK 1.7    java 环境 Maven 3.3.9  下载最新版本 Windows 7 注 Maven 3.2 要求 JDK 1.6 或以上版本, 而 Maven 3.0/3. ...

  10. CDT 错误 Cannot run program "gcc"

    Eclipse+CDT 编辑C/C++程序出错误: 出现编译错误: **** Rebuild of configuration Debug for project example **** **** ...