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下history命令详解---转载

    Linux下History命令主要用于显示历史指令记录内容, 下达历史纪录中的指令 . >History命令语法:[www.linuxidc.com@linux]# history [n][ww ...

  2. spinner中的onNothingSelected方法到底什么时候调用?

    这个东东大家在开发中可能不太能用到,所以总是容易被忽略,由于工作原因,我最近琢磨了一下onNothingSelected方法的调用时机问题,其实很简单,只要我们稍微看一下源码就明白了: /** * C ...

  3. jQuery免费资料

     JQvery免豆.pdf       jQuery实战之仿flash跳动的按钮效果[源码]http://down.51cto.com/data/188600JQuery 1.4.2 手册简体中文版h ...

  4. 深入理解计算机系统第二版习题解答CSAPP 2.2

    填写空白项. n 2n(十进制) 2n(十六进制) 9 512 0x200 19 0x80000 16384 0x4000 0x10000 17 0x20000 32 0x20 0x80

  5. .net中下载文件的方法(转)

    .net中下载文件的方法 一.//TransmitFile实现下载      protected void Button1_Click(object sender, EventArgs e)      ...

  6. YII缓存Cache

    缓存Cache 定义:将数据暂时存放在一个存储速度更快的介质上,下次读取数据时就可以从这个介质上来读取数据 介质:内存.文件.数据库(优化好的数据库) Yii缓存的分类:(framework/cach ...

  7. 黑色遮罩引导蒙版 CSS实现方式

    一.微云的实现 网站有一些改动的时候,为了让用户熟知新的操作位置,往往会增加一个引导,常见的方式就是使用一个黑色的半透明蒙版,然后需要关注的区域是镂空的. 然后上周五我去微云转悠的时候,也看到了引导层 ...

  8. Ext.Net学习笔记02:Ext.Net用法概览

    这两天越来越觉得Ext.Net很强大,如果运用熟练可以极大的提高编程效率.如果你也要学习Ext.Net,推荐你看一下<Ext.Net Web 应用程序开发教程>. Ext.Net与ExtJ ...

  9. java内存

    java内存分为四部分: 1).栈区(stacksegment),由编译器自动分配释放,存放函数的参数值和局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源: 2).堆区(heapseg ...

  10. python模块与包

    模块是包括python定义和声明的文件.文件名=模块名+".py".模块名保存在全局变量__name__中. 1.模块中的执行语句,只是在导入时执行一次.这些语句通常用于初始化模块 ...