【bzoj1742】[Usaco2005 nov]Grazing on the Run 边跑边吃草 区间dp
题目描述
输入
输出
* Line 1: A single integer: the minimum total staleness Bessie can achieve while eating all the clumps.
样例输入
4 10
1
9
11
19
样例输出
44
题解
区间dp,膜拜popoqqq
因为路过的草一定吃,所以吃的草一定是一段区间。
用f[i][k]表示吃完从i开始连续的k堆草,且此时在左侧的最小腐败值,
用g[i][k]表示吃完从i开始连续的k堆草,且此时在右侧的最小腐败值。
这样我们发现腐败值很难求,并且无法保证最优。
所以我们可以先计算出每段时间所有草增加的腐败值,这样既能保证dp的成立,又方便计算。
状态转移方程应该很容易由f/g[i/i+1][k-1]推出来。
由于空间限制,需要用到滚动数组黑科技。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
long long f[1001][2] , g[1001][2] , p[1001];
int main()
{int n , i , j , k , cl = 0 , cr = 0;long long m;scanf("%d%lld" , &n , &m);for(i = 1 ; i <= n ; i ++ )scanf("%lld" , &p[i]);sort(p + 1 , p + n + 1);for(i = 1 ; i <= n ; i ++ ){if(p[i] <= m)cl = i;if(!cr && p[i] > m)cr = i;}memset(f , 0x3f , sizeof(f));memset(g , 0x3f , sizeof(g));if(cl) f[cl][1] = g[cl][1] = n * (m - p[cl]);if(cr) f[cr][1] = g[cr][1] = n * (p[cr] - m);for(k = 2 ; k <= n ; k ++ ){for(i = 1 ; i + k - 1 <= n ; i ++ ){j = i + k - 1;f[i][k & 1] = min(f[i + 1][~k & 1] + (n - k + 1) * (p[i + 1] - p[i]) , g[i + 1][~k & 1] + (n - k + 1) * (p[j] - p[i]));g[i][k & 1] = min(g[i][~k & 1] + (n - k + 1) * (p[j] - p[j - 1]) , f[i][~k & 1] + (n - k + 1) * (p[j] - p[i]));}}printf("%lld\n" , min(f[1][n & 1] , g[1][n & 1]));return 0;
}
转载于:https://www.cnblogs.com/GXZlegend/p/6396881.html
【bzoj1742】[Usaco2005 nov]Grazing on the Run 边跑边吃草 区间dp相关推荐
- bzoj 1694 1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草(DP)
1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 395 So ...
- [Usaco2005 nov]Grazing on the Run 边跑边吃草 BZOJ1742
分析: 首先,连续选择一段必定最优... 区间DP,f[i][j]表示从i开始,连续j个被吃掉了,并且,牛在i处,g[i][j]则表示在i+j-1处 f[i][j]可以从g[i+1][j]和f[i+1 ...
- bzoj 1630 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁(有重复元素的组合数)
2023: [Usaco2005 Nov]Ant Counting 数蚂蚁 Time Limit: 4 Sec Memory Limit: 64 MB Submit: 281 Solved: 18 ...
- 2.16([Usaco2005 Nov]Ant Counting)
描述 Bessie was poking around the ant hill one day watching the ants march to and fro while gathering ...
- vue2.x 在引用插件的时候,npm run dev跑正常 ,npm run build 报错vue-cli Unexpected token: punc (() [...
这是因为,引用的插件在node_modules里,并不在vue-cli的es6编译范围内,所以语法报错,修改方法: 转载于:https://www.cnblogs.com/cynthia-wuqian ...
- BZOJ 1738: [Usaco2005 mar]Ombrophobic Bovines 发抖的牛( floyd + 二分答案 + 最大流 )
一道水题WA了这么多次真是.... 统考终于完 ( 挂 ) 了...可以好好写题了... 先floyd跑出各个点的最短路 , 然后二分答案 m , 再建图. 每个 farm 拆成一个 cow 点和一个 ...
- Weex Project (npm run android)-Error: Error: Command failed
问题描述: weex项目在运行npm run android跑安卓端时出现以下错误,尝试了网上的很多方法,包括Stack Overflow上的大神的建议依然没有解决,问题如下: Error: Erro ...
- mysql 5.7临时表空间_深度解析MySQL 5.7之临时表空间
临时表 临时表顾名思义,就是临时的,用完销毁掉的表. 数据既可以保存在临时的文件系统上,也可以保存在固定的磁盘文件系统上. 临时表有下面几种: 1.全局临时表 这种临时表从数据库实例启动后开始生效,在 ...
- 【系列5】使用Dockerfile创建带weblogic的Centos Docker镜像
Weblogic是一个基于Java EE架构的中间件(应用服务器),WebLogic由Oracle公司维护. WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的J ...
最新文章
- Mock.js mysql_平台支持mock功能—未完成版
- linq 解决winForm中控件CheckedListBox操作的问题。(转载)
- 在WordPress文章中插入表格的四种方法,史上最全
- Flask wtforms
- 全球数据库--基金/管理产品--分类/行业平均
- JavaScript 中判断一个函数的 this 绑定
- PHP获取对象的hashcode_php 字符串转hashcode(包括中文)
- linux shell 命令批量杀死进程
- CVAL,PVAL,SVAL宏定义
- python古诗代码案例_用python实现古诗词横板竖版显示 【二维列表的使用】
- Dell服务器进入双系统按键,dell进bios按什么键 戴尔进bios的方法
- 对于Java黑皮书课后习题22.8的补充
- 量化投资策略与技术1:概念
- 用手机快速制作真人手办模型
- 安卓集成Google Play支付(谷歌支付)最新版本
- 阿里暑期实习二面3.28
- 《马上有招儿:PPT商务演示精选20讲(全彩) 》
- Github项目加速下载
- adb 查看磁盘占用_如何使用adb 指令查看机器序列号
- 苏宁闯入二手房市场,每套服务费仅9999元
热门文章
- 风格之争:Coroutine vs Callback
- 《Face alignment at 3000 FPS via Regressing Local Binary Features》阅读笔记
- 计算机未来的发展趋势三百字,数字媒体毕业论文5000字_大专毕业论文5000字_计算机类毕业论文5000字文库...
- imwrite函数 matlab_用matlab做一个脉动磁势分解的动画
- 自用_C/C++报错记录汇总
- 数据:Uniswap V3的24小时交易量已超过2亿美元
- SAP License:在产品结算参数设置
- SAP License:SAP ECC6安装系列四:安装过程详解
- 客户关系管理系统中实现对客户信息标记颜色的处理
- 微信小程序-腾讯地图显示偏差问题