题目链接

题目描述

传说,数千年前圣帕特里克消灭了哞尔兰所有的蛇。然而,蛇们现在卷土重来了!圣帕特里克节是在每年的3月17日,所以Bessie要用彻底清除哞尔兰所有的蛇来纪念圣帕特里克。

Bessie装备了一个捕网,用来捕捉 N 组排成一行的蛇(1≤N≤400 )。Bessie必须按照这些组在这一行中出现的顺序捕捉每一组的所有蛇。每当Bessie抓完一组蛇之后,她就会将蛇放在笼子里,然后带着空的捕网开始捕捉下一组。

一个大小为 s 的捕网意味着Bessie可以抓住任意包含 g 条的一组蛇,其中 g≤s 。然而,每当Bessie用大小为 s 的捕网抓住了一组 g 条蛇,就意味着浪费了 s−g 的空间。Bessie可以任意设定捕网的初始大小,并且她可以改变 K 次捕网大小(1≤K<N )。

请告诉Bessie她捕捉完所有组的蛇之后可以达到的总浪费空间的最小值。

题目分析

这道题是一道比较明显的DP。我们首先来考虑一个特例——对于一个区间,如果只能设定捕网大小一次,那么需要设定的捕网大小即为区间内最大组的大小,而浪费的空间即为最大值与组数乘积再减去组内所使用的空间之和。那么当可以设定n次时,我们枚举区间中间的一个点,使它作为改变第n次的点,改变这一次的策略便与上面一样唯一确定了,而改变这一次之前的情况则已经计算过了。

这样,设fi,j为前i组改变j次捕网大小所浪费的最小空间,根据上面的推论,

fi,0=maxof(1,i)*i-sum(1,i),fi,j=max{fl,j-1+maxof(l+1,i)*(i-l)-sum(l+1,i)}(j≠0,j-1<=l<i)。

代码

 #include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,k,a[],f[][],maxof[][],sum[];
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;++i)
{
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
maxof[i][i]=a[i];
}
for(int i=;i<=n;++i)
for(int j=i+;j<=n;++j)
maxof[i][j]=max(maxof[i][j-],a[j]);
memset(f,0x7f/,sizeof f);
for(int i=;i<=n;++i)
f[i][]=maxof[][i]*i-sum[i];
for(int i=;i<=n;++i)
for(int j=;j<=min(i,k);++j)
for(int l=j;l<i;++l)
f[i][j]=min(f[i][j],f[l][j-]+maxof[l+][i]*(i-l)-sum[i]+sum[l]);
printf("%d",f[n][k]);
return ;
}

Snakes

洛谷 P5424 [USACO19OPEN]Snakes的更多相关文章

  1. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  2. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  3. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  4. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  5. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  6. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  7. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  8. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

  9. 洛谷 P1379 八数码难题 Label:判重&&bfs

    特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...

随机推荐

  1. 【git】Git回退代码到指定版本

    1. 查看所有的历史版本,获取你git的某个历史版本的id, git log2. 回退本地代码库:git reset --hard ID3. 推送到远程服务器:git push -f -u origi ...

  2. HDU 3974 Assign the task

    Assign the task Problem Description There is a company that has N employees(numbered from 1 to N),ev ...

  3. mysql5.7密码修改与报错分析

    1.修改密码 修改密码: vim /etc/my.cnf 的mysqld字段加入skip-grant-tables 重启MySQL,service mysqld restart 终端输入 mysql ...

  4. C# 获取控制台程序路径

  5. hibernate映射-继承映射

    对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念.Hibernate的继承映射可以理解成持久化类之间的继承关系.例如:人和学生之间的关系.学生继承人,可以认为学生是一个特殊的人,如果对人进 ...

  6. Struts2 数据标签

    Struts 2 的数据标签主要用于操作页面上显示的数据.下面列出的是重要的数据标签: action标签: 此标记使开发人员能够直接从JSP页面调用动作指定动作的名称和一个可选的命名空间.标签的主体内 ...

  7. redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发?

    redis 和 memcached 有啥区别? redis 支持复杂的数据结构 redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作.如果需要缓存能够支持更复杂的结构 ...

  8. pytorch :: Dataloader中的迭代器和生成器应用

    在使用pytorch训练模型,经常需要加载大量图片数据,因此pytorch提供了好用的数据加载工具Dataloader. 为了实现小批量循环读取大型数据集,在Dataloader类具体实现中,使用了迭 ...

  9. 20191024-3 互评Alpha阶段作品

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9860 本组对构建之法组评价的博客链接:https://www.cnblog ...

  10. 【题解】CTSC1999家园(网络流)

    CTSC1999家园 建模方法类似我NOI2019网络同步赛我的T1写法[[题解]NOI2019Route](70分) 问题的焦点是:空间时间载具. 考虑如何击破时间限制,可以对每个点关于每个时刻建立 ...