题意

有 \(n​\) 个村庄按标号排列,每个村庄有一个死亡速度 \(a_i​\) 表示每天死 \(a_i​\) 人(除非你治好这个村庄)。

你从 1 号村庄出发,每天可以选择向相邻的村庄进发或者治愈所在的村庄。

如果在这个过程中你的左边有未治愈的村庄,同时你向左走了一步,那么你需要把这些村庄全部治愈后才能接着自由行动。

求所有村庄都被治愈时最少的死亡人数。

\(n\le3000,a_i\le 10^9\)

分析

  • 如果一个村庄不及时救治,代价就是 \(|返回的位置 - pos| \times a_{pos}\) 。这启发我们枚举返回的位置。

  • 记录 \(a\) 的前缀和 \(s\) 定义状态 \(f_i\) 表示前 \(i\) 个村庄已经治愈,当前在 \(i\) 的最小代价。枚举返回位置 \(j\) ,容易得到:

    \[f_i=\min\{f_j+[j==0](s_n-s_j)+g_{j+1,i}+[i==n](i-j-1)(s_n-s_i)\}\]

    其中 \(g_{j,i}\) 表示从 \(j\) 走到 \(i\) ,然后走回 \(j​\) 的最小代价。

  • 枚举 \(j\) 是否在返回前治愈可以得到:

    \[g_{j,i}=g_{j+1,i}+\min\begin{cases}3a_j(i-j)+(s_n-s_j)+2(s_n-s_i)\\2(s_n-s_j)+(s_n-s_i)\end{cases}\]

    其中 \(g_{i,i}=(s_n-s_i)​\) 。

  • 这保证了在转移 \(f​\) 时,第一个走到的位置时返回后治愈的,如果不是,可以转化为此问题。

  • 时间复杂度 \(O(n^2)\)

代码

代码链接

[JSOI2016]病毒感染[dp]的更多相关文章

  1. BZOJ4856 JSOI2016 病毒感染 区间DP

    传送门 原Word文档 题意:太长不给 这种题目一看就是区间DP 设$f_i$表示治愈了前$i$个村子的时候最少死了多少村民,又设前缀和为$sum_i$,通过枚举折返时最后经过的村子$j$,并且提前计 ...

  2. P5774 [JSOI2016]病毒感染

    题目描述 JOSI 的边陲小镇爆发了严重的 Jebola 病毒疫情,大批群众感染生命垂危.计算机科学家 JYY 采用最新的算法紧急研制出了 Jebola 疫苗,并火速前往灾区救治患者. 一共有 NN  ...

  3. JSOI2016 病毒感染(动态规划)

    题目传送门:洛谷P5774 思路来源:郭大佬(我就是凑不要脸的白嫖党 : P) 题目分析: 我们一点点来分析这道题: 起点固定为1号,所有村庄是按线性排列的,而不是图,所以我们应该用线性DP(废话 ) ...

  4. 区间dp提升复习

    区间\(dp\)提升复习 不得不说这波题真的不简单... 技巧总结: 1.有时候转移可以利用背包累和 2.如果遇到类似区间添加限制的题可以直接把限制扔在区间上,每次只考虑\([l,r]\)被\([i, ...

  5. BZOJ4856 病毒感染 [Jsoi2016] dp

    正解:区间dp+辅助dp 解题报告: 先放个传送门qwq 然后这题,又是一道看不懂题目的玩意儿:( 大概是语文太差 那就先解释下 其实只是一个点比较难明白就是它港 "假设JYY 进入i村庄并 ...

  6. [JSOI2016]最佳团体 DFS序/树形DP

    题目 洛谷 P4322 [JSOI2016]最佳团体 Description 茜茜的舞蹈团队一共有\(N\)名候选人,这些候选人从\(1\)到\(N\)编号.方便起见,茜茜的编号是\(0\)号.每个候 ...

  7. BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)

    题目链接 \(Description\) 每个点有费用si与价值pi,要求选一些带根的连通块,总大小为k,使得 \(\frac{∑pi}{∑si}\) 最大 \(Solution\) 01分数规划,然 ...

  8. 【LOJ】#2080. 「JSOI2016」病毒感染

    题解 那个限制表示一回头要治完前面的所有病人 我们处理一个g[i][j]表示治疗i到j的病人至少会死多少病人 \(g[i][j] = g[i + 1][j] + sum[i + 1,j] + min( ...

  9. [BZOJ4850][JSOI2016]灯塔(分块/决策单调性优化DP)

    第一种方法是决策单调性优化DP. 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优. 根号函数是一个典型的具有决策单调性的函数,由 ...

随机推荐

  1. Django中使用bookstarp框架(4)

    Django中使用bookstarp框架(4) 注意:要使用bookstarp框架前,要先有css的基础 因为主要是研究后台的使用方法,就引入前端的框架,简化html上的耗时(主要是不想把时间浪费在前 ...

  2. mysql数据库备份与导入

    1.数据库的备份 注意:导出的数据里是没有 use mydb; 这句话 **************************************************************** ...

  3. Python不可变对象

    str是不变对象,而list是可变对象. 对于不可变对象,比如对str进行操作: # 对于list进行操作,list内部的内容是会变化的: >>> a = ['c', 'b', 'a ...

  4. 前端测试框架jest 简介

    转自: https://www.cnblogs.com/Wolfmanlq/p/8012847.html 作者:Ken Wang 出处:http://www.cnblogs.com/Wolfmanlq ...

  5. Ext.net 3.1学习

    主页面前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainF ...

  6. 3.5Python数据处理篇之Numpy系列(五)---numpy文件的存取

    目录 目录: (一)以文本形式存取 1.说明: 2.语法解释: 3.实例(以.csv文件为例) 4.效果展示 (二)以任意的形式存取 1.说明: 2.语法解释: 3.实例(以.bat二进制文件为例) ...

  7. ABAP 内表访问表达式的性能

    内表访问表达式是ABAP 7.4中引入的重要特性,可以使语句变得更加简洁.美观.那么它的读写性能怎么样呢?我进行了一点点测试. 读取 测试代码,使用三种方式读取同一内表,分别是read table关键 ...

  8. Python3编写网络爬虫12-数据存储方式五-非关系型数据库存储

    非关系型数据库存储 NoSQL 全称 Not Only SQL 意为非SQL 泛指非关系型数据库.基于键值对 不需要经过SQL层解析 数据之间没有耦合性 性能非常高. 非关系型数据库可细分如下: 键值 ...

  9. EasyUI tabs指定要显示的tab

    <div id="DivBox"  class="easyui-tabs" style="width: 100%; height: 100%;& ...

  10. centos7下安装docker(11容器操作总结)

    这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...