题目链接

题目简介:有n组,每组有若干个蛇的蛇队伍。(也可以理解为n条长度若干的蛇。)我们要用网捕捉,中途可以改变网的大小。目标是浪费空间最小。

解法:首先明确方法:DP。设f[i][t]为捕捉了n条,变换了t次的最小浪费空间。直接求浪费可能稍显麻烦,但是 浪费空间+必要空间=总空间,所以说求浪费空间就直接用 总-必就行了。

那么什么是必要空间呢,即每条蛇的长度。要求一群蛇的总长度,就利用前缀和。

   那什么是总空间呢?为了使空间最小,同时又能抓蛇,所以我们追求 刚好能抓 的情况,也就是 最大蛇长*蛇数。


预处理:一段范围内的最大值与前缀和

动态转移方程:f[i][t]=min(f[i][t],f[p][t-1]+maxx[p+1][i]*(i-p)-sum[i]+sum[p]);

       p为枚举的,在第p条蛇变换后从p一直网到第i条的意义

代码

#include<iostream>
#include<cstdio>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
int read(){
char ch;
int res=,f=;
ch=getchar();
while(ch<''||ch>''){
if(ch=='-')f=-;
ch=getchar();
}
while(ch>=''&&ch<=''){
res=res*+(ch-'');
ch=getchar();
}
return res*f;
}
int u=<<;
int n,k,a[],f[][],maxn,sum[],maxx[][];
int main(){
memset(f,/,sizeof(f));
n=read();
k=read();
for(int i=;i<=n;++i){
a[i]=read();
maxn=max(maxn,a[i]);
sum[i]=sum[i-]+a[i];
maxx[i][i]=a[i];
}
for(int i=;i<=n;++i){
for(int j=i+;j<=n;++j){
maxx[i][j]=max(maxx[i][j-],maxx[j][j]);
}
}
for(int i=;i<=n-k;++i)f[i][]=maxx[][i]*i-sum[i];
for(int t=;t<=k;++t){
for(int i=t+;i<=n-(k-t);++i){
for(int p=t;p<i;++p){
f[i][t]=min(f[i][t],f[p][t-]+maxx[p+][i]*(i-p)-sum[i]+sum[p]);
}
}
}
printf("%d",f[n][k]);
return ;
}

[USACO19OPEN]Snakes的更多相关文章

  1. 洛谷 P5424 [USACO19OPEN]Snakes

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

  2. [POJ 2588] Snakes

    同swustoj 8 Snakes Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1015   Accepted: 341 ...

  3. [POJ 2588]--Snakes(并查集)

    题目链接:http://poj.org/problem?id=2588 Snakes Time Limit: 1000MS   Memory Limit: 65536K   Description B ...

  4. [lightoj P1151] Snakes and Ladders

    1151 - Snakes and Ladders Time Limit: 2 second(s)    Memory Limit: 32 MB 'Snakes and Ladders' or 'Sh ...

  5. python Snakes 库安装

    SNAKES : A A Flexible High-Level Petri Nets Library SNAKES是python一个可以用于Petri网的库 python2安装SNAKES库:  在 ...

  6. Snakes and Ladders LightOJ - 1151( 概率dp+高斯消元)

    Snakes and Ladders LightOJ - 1151 题意: 有100个格子,从1开始走,每次抛骰子走1~6,若抛出的点数导致走出了100以外,则重新抛一次.有n个格子会单向传送到其他格 ...

  7. LightOJ - 1151 Snakes and Ladders —— 期望、高斯消元法

    题目链接:https://vjudge.net/problem/LightOJ-1151 1151 - Snakes and Ladders    PDF (English) Statistics F ...

  8. E - Polycarp and Snakes

    E - Polycarp and Snakes 题意:在一个全是点的图上开始画线,每次将一行或一列任意长度染成字母,一笔染一种字母,字母必须从a开始连续到后面某个字母可以覆盖. 问所给图案是否满足 , ...

  9. UVAlive-2554 Snakes & Ladders---BFS状态的存储

     题目链接: https://vjudge.net/problem/UVALive-2554 题目大意: 题目的大概意思是又N*N的棋盘,编号从1 到 N*N 棋盘中分布着蛇和梯子玩家在位置1处,   ...

随机推荐

  1. LC 173. Binary Search Tree Iterator

    题目描述 Implement an iterator over a binary search tree (BST). Your iterator will be initialized with t ...

  2. matplotlib笔记1

    散点图-scatter 散点图显示两组数据的值,每个点的坐标位置由变量的值决定由一组不连接的点完成,用于观察两种变量的相关 import numpy as np import matplotlib.p ...

  3. 『Python基础练习题』day02

    1.判断下列逻辑语句的True, False 1) 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 2) ...

  4. (二十二)SpringBoot之使用mybatis generator自动生成bean、mapper、mapper xml

    一.下载mybatis generator插件 二.生成generatorConfig.xml new一个generatorConfig.xml 三.修改generatorConfig.xml 里面的 ...

  5. mysql cmd命令行 创建数据库 表 基础语句

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1. 连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u roo ...

  6. Unity 自定义"=="操作符 [翻译来源blogs.unity3d,2014/05]

    主要内容来源 https://blogs.unity3d.com/cn/2014/05/16/custom-operator-should-we-keep-it/ 在我们代码里,如果有这样的代码: i ...

  7. svnkit 用java 操作 svn

    官网 https://svnkit.com/ https://blog.csdn.net/Hui_hai/article/details/80318518 https://blog.csdn.net/ ...

  8. 【推荐】 Neutralizer 安卓上特殊的均衡器

    首先 直切正题 这个均衡器特殊就特殊在   会产生  特定频率的声音   根据声音来调整  自己喜欢的声音 下载地址: https://d-02.apkplz.org/dl.php?s=czlDeEt ...

  9. Framework7 - 入门教程(安装、配置、创建一个H5应用)

    1,Framework7介绍 (1)Framework7 是一个开源免费的框架.可以用来开发混合移动应用(原生和 HTML 混合)或者开发 iOS & Android 风格的 WEB APP. ...

  10. MySQL锁表解决方法

    https://blog.csdn.net/a5582ddff/article/details/79566678 MySQL锁表解决方法 一.我的处理过程 1.查进程,主要是查找被锁表的那个进程的ID ...