题目


分析

此题肯定不是绿题,哪有这么恶心的dp

试想这样的情形:假设当 JYY 第一次抵达村庄 \(i\),未作救治并直接前往了另一个村庄。那么由于 \(i\) 村庄的人们求生心切,

一旦当 JYY 朝向靠近 \(i\) 村庄的方向前行时,\(i\) 村庄的村民就会以为 JYY 是来救他们了,而产生巨大的期望。

之后倘若 JYY 再次掉头朝着远离 \(i\) 村庄的方向行进,那么 \(i\) 村庄的村民就会因为巨大的失落而产生绝望的情绪。

所以JYY应该是一段一段治愈的,设\(dp[i]\)表示JYY治愈完前\(i\)个村庄的最少不幸人数

\(dp[i]=\min\{dp[j]+???(calc(j+1,i))+(s[n]-s[i])*(???)\}\),这样\(O(n^2)\)的dp明显还不够,需要预处理一些东西,

首先这一段应该是从\(j+1\)到\(i\)再到\(j+1\)再到\(i\),先考虑后面的天数就是\(4*(i-j-1)+1+1\),

也就是往返三遍再治愈当中所有村民总计4遍(治愈要加1),还要加上从\(j\)到\(j+1\)的天数

考虑中间\(calc\)的部分,\(calc(j,i)\)可以选择治愈\(j\)先(\(j+1\sim i\)都拖延1天)或者先治愈\(j+1\sim i\)再回来治愈\(j\),

那也就是

\[calc(j,i)=calc(j+1,i)+s[i]-s[j]+\min\{3*(i-j)*a[j],s[i]-s[j]\}
\]

正序枚举\(i\)倒序枚举\(j\)就可以做到\(O(n^2)\)

综上所述

\[dp[i]=\min\{dp[j]+calc(j+1,i)+(s[n]-s[i])*(4*(i-j-1)+2)\}
\]

代码

  1. #include <cstdio>
  2. #include <cctype>
  3. #include <cstring>
  4. #define rr register
  5. using namespace std;
  6. const int N=3011; typedef long long lll;
  7. lll a[N],s[N],dp[N],f[N][N],n;
  8. inline signed iut(){
  9. rr int ans=0; rr char c=getchar();
  10. while (!isdigit(c)) c=getchar();
  11. while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
  12. return ans;
  13. }
  14. inline lll calc(int l,int r){return s[r]-s[l-1];}
  15. inline lll min(lll a,lll b){return a<b?a:b;}
  16. signed main(){
  17. n=iut(),memset(dp,42,sizeof(dp)),dp[0]=0;
  18. for (rr int i=1;i<=n;++i)
  19. s[i]=s[i-1]+(a[i]=iut());
  20. for (rr int i=1;i<=n;++i){
  21. f[i][i]=0;
  22. for (rr int j=i-1;j;--j)
  23. f[j][i]=f[j+1][i]+calc(j+1,i)+min(3*(i-j)*a[j],calc(j+1,i));
  24. }
  25. for (rr int i=1;i<=n;++i)
  26. for (rr int j=0;j<i;++j)
  27. dp[i]=min(dp[i],dp[j]+f[j+1][i]+((i-j-1)<<2|2)*calc(i+1,n));
  28. return !printf("%lld",dp[n]);
  29. }

#dp#洛谷 5774 [JSOI2016]病毒感染的更多相关文章

  1. Bzoj4753/洛谷P4432 [JSOI2016]最佳团体(0/1分数规划+树形DP)

    题面 Bzoj 洛谷 题解 这种求比值最大就是\(0/1\)分数规划的一般模型. 这里用二分法来求解最大比值,接着考虑如何\(check\),这里很明显可以想到用树形背包\(check\),但是时间复 ...

  2. 树形DP 洛谷P2014 选课

    洛谷P2014 选课 题目描述 在大学里每个学生,为了达到一定的学分,必须从很多课程里选择一些课程来学习,在课程里有些课程必须在某些课程之前学习,如高等数学总是在其它课程之前学习.现在有N门功课,每门 ...

  3. 洛谷$P4322\ [JSOI2016]$最佳团体 二分+$dp$

    正解:二分+$dp$ 解题报告: 传送门$QwQ$ 这题长得好套路嗷,,,就一看就看出来是个$01$分数规划+树形$dp$嘛$QwQ$. 考虑现在二分的值为$mid$,若$mid\leq as$,则有 ...

  4. 区间DP 洛谷P2858牛奶零食

    题目链接 题意:你有n个货物从1-n依次排列,每天可以从两侧选一个出来卖,卖的价格是当天的天数乘该货物的初始价格,问这批货物卖完的最大价格 输入:第一行n,之后是n个货物的初始价值 这道题不能用贪心做 ...

  5. P1279 字串距离 dp 洛谷

    题目描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为”abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X ...

  6. dp 洛谷P1977 出租车拼车 线性dp

    题目背景 话说小 x 有一次去参加比赛,虽然学校离比赛地点不太远,但小 x 还是想坐 出租车去.大学城的出租车总是比较另类,有“拼车”一说,也就是说,你一个人 坐车去,还是一堆人一起,总共需要支付的钱 ...

  7. 经典DP 洛谷p1880 石子合并

    https://www.luogu.org/problemnew/show/P1880 题目 题目描述 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新 ...

  8. [DP]洛谷P1115最大子段和

    题目来源 https://www.luogu.org/problemnew/show/P1115 题目描述 给出一段序列,选出其中连续且非空的一段使得这段和最大. 输入输出格式 输入格式: 第一行是一 ...

  9. 尼克的任务 dp 洛谷1280

    蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...

  10. dp——洛谷 P1541 乌龟棋 —— by hyl天梦

    题目:(转自 https://www.luogu.com.cn/problem/P1541) 题目描述 乌龟棋的棋盘是一行NN个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第NN格是 ...

随机推荐

  1. flex布局-20201028

    改版自阮一峰的网络日志-Flex 布局教程:语法篇 在flex容器上设置的(即父元素上设置); flex-direction属性决定主轴的方向(即项目的排列方向). flex-direction: r ...

  2. iOS的Runtime知识点繁杂难啃,真的理解它的思想,你就豁然开朗了

    一.Runtime 1.概念: 概念:Runtime是Objective-c语言动态的核心,即运行时.在面向对象的基础上增加了动态运行,达到很多在编译时确定方法推迟到了运行时,从而达到动态修改.确定. ...

  3. Java 练习题 看起来很简单 写起来却有点难度

    1 import java.io.PrintStream; 2 3 /* 4 * 5 * public class ValueTransferTest4 6 *{ 7 * public static ...

  4. 记一次 .NET某设备监控自动化系统 CPU爆高分析

    一:背景 1. 讲故事 先说一下题外话,一个监控别人系统运行状态的程序,结果自己出问题了,有时候想一想还是挺讽刺的,哈哈,开个玩笑,我们回到正题,前些天有位朋友找到我,说他们的系统会偶发性CPU爆高, ...

  5. 建立两台linux主机的ssh信任,实现ssh免密登录远程服务器

    1.介绍 假设我们现在有AB两个服务器,要求A能够远程登录到B服务. CentOS版本:CentOS Linux release 7.6.1810 (Core) 2.实操 1.先在A服务上输入以下命令 ...

  6. 【主流技术】日常工作中关于 JSON 转换的经验大全(Java)

    目录 前言 一.JSON 回顾 1.1结构形式 二.其它类型 -> JSON相关 2.1 JavaBean 转 JsonObject 2.2 JavaBean 转 Json 字符串 2.3 Li ...

  7. [学习笔记].Net5项目打包到Linux系统服务时遇到的坑

    ​如果按照官方文档的步骤手动安装.Net5 会有一个坑: 在 Linux 上手动安装 .NET - .NET | Microsoft Docs 在使用systemd打包.Net5服务的时候,无法运行, ...

  8. 我的电脑 属性 代理 win10 不用的时候记得关闭,git python node 等

  9. tooltip 可算修复了~ view-design 的 table 的cell.vue

    tooltip 可算修复了~ view-design 的 table 的cell.vue 就这个bug可是有年头了,可算是修复了 ViewUI/src/components/table/cell.vu ...

  10. Neural Dynamics on Complex Networks-KDD20

    一.摘要 学习复杂网络上的连续时间动态对于理解.预测和控制科学和工程中的复杂系统至关重要.然而,由于高维系统结构中的组合复杂性.它们难以捉摸的连续时间非线性动力学以及它们的结构-动力学依赖性,使得这项 ...