TZOJ 3326: Barn Repair 线性DP

news/2024/10/21 9:53:25/

题意:

在一个夜黑风高、下着暴风雨的夜晚,farmer John的牛棚的屋顶、门都被吹飞了。所幸,许多牛都在度假,所以牛棚并没有住满。
牛棚一个挨着一个相邻排列成一行,牛就在里面过夜。一些牛棚里面有牛,而一些没有。所有的牛棚都有相同的宽度。
自从门被吹走后,farmer John必须尽快地在牛棚前建立新的木板。他的新木料供应商将会供应给他任意他想要长度的木板,但是供应商只能够提供少量的木板。Farmer John想要将木板的总长度减到最少。
给出可能买到的木板的最大数目M(1<= M<=50),每块长度任意;牛棚的总数S(1<= S<=200); 牛棚里牛的总数C(1 <= C <=S);以及牛所在牛棚的编号stall_number(1 <= stall_number <= S),计算拦住所有有牛的牛棚所需木板的最小总长度。
输出你所计算得到的所需木板的最小总长度作为答案。

考虑 DP:

DP状态:dp[i][k] : 对第i头牛的时候用了k个木板的最小值

DP转移:dp[i][k] = min (dp[i][k],dp[j][k-1]+a[i]-[j]+1)

DP初始状态:dp[0][0] = 0,什么都不用为 0。

#define _CRT_SECURE_NO_WARNINGS 1
#pragma GCC target ("avx")
#pragma GCC optimize (2, 3, "Ofast", "inline", "-ffast-math")
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef long long  ll;
const int INF = 1e18;
typedef pair<int,int> PII;
const int maxn = 2005, N = 1e5 + 5,mod = 998244353;
int n,m,s;
int dp[205][55];
int a[205];
inline void solve() {cin >> m >> s >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}sort(a + 1, a + 1 + n); //注意要先排序memset(dp, 0x3f, sizeof(dp));dp[0][0] = 0;int ans = 0x3f3f3f3f;for (int i = 1; i <= n; i++) {for (int j = 1; j <= i; j++) {for (int k = 1; k <= m; k++) {dp[i][k] = min(dp[j - 1][k - 1] + a[i] - a[j] + 1, dp[i][k]);//cout << i << " " << k << " "<< dp[i][k] << endl;if (i == n) ans = min(ans, dp[n][k]);}}}cout << ans << endl;
}
signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t = 1;//cin >> t;while (t--)solve();return 0;}

 


http://www.ppmy.cn/news/1025995.html

相关文章

浅析MySQL InnoDB的隔离级别

隔离性简介 隔离性主要是指数据库系统提供一定的隔离机制,意思就是多个事务并发执行时&#xff0c;一个事务的执行不应影响其它事务的执行。 数据库中并发一致性问题&#xff1f; 在并发环境下&#xff0c;事务的隔离性很难保证&#xff0c;因此会出现很多并发一致性问题。 …

sip语音对讲终端怎么样?

sip语音对讲终端怎么样&#xff1f; IP语音对讲终端是一种通过网络进行语音通信的设备&#xff0c;具有以下特点&#xff1a; 1. 便捷性&#xff1a;IP语音对讲终端可以通过互联网实现远程通信&#xff0c;用户可在任何地点与他人进行语音交流&#xff0c;无需受到距离的限制…

【Nginx】Nginx网站服务

国外主流还是使用apache&#xff1b;国内现在主流是nginx&#xff08;并发能力强&#xff0c;相对稳定&#xff09; nginx&#xff1a;高新能、轻量级的web服务软件 特点&#xff1a; 1.稳定性高&#xff08;没apache稳&#xff09;&#xff1b; 2.系统资源消耗比较低&#xf…

【Linux 网络】 数据链路层协议

数据链路层协议 数据链路层解决的问题以太网协议认识以太网以太网帧格式 认识MAC地址对比理解MAC地址和IP地址认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响ARP协议ARP协议的作用ARP协议的工作流程ARP数据报的格式 总结 数据链路层解决的问题 IP拥有将数据跨…

python:使用geopandas和rasterio将矢量范围内的栅格值赋为0并重新输出

需求&#xff1a;有一个点shp文件和一个栅格&#xff0c;想要构建shp中每个点的缓冲区&#xff0c;并且缓冲区范围内的栅格值重新赋为0并输出新的tif文件 解决方法&#xff1a;使用python中的geopandas和rasterio中的掩膜操作实现 代码如下&#xff1a; import numpy as np …

mysql获取第一个逗号前面的字符串

字符串内容如下&#xff1a; 统编版&#xff08;2019&#xff09;,必修下册,第五单元 ,第10课,10-2 在马克思墓前的讲话 /恩格斯, 想获取&#xff0c;第一个逗号前面的字符串&#xff0c;即&#xff1a;统编版&#xff08;2019&#xff09; 需要第一获取逗号的下标位置&…

leetcode242. 有效的字母异位词

题目&#xff1a;leetcode242. 有效的字母异位词 描述&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同&#xff0c;则称 s 和 t 互为字母异位词。 示例 1: 输入: s “…

面试了无数家公司整理的软件测试面试题【含答案】

1、自动化代码中,用到了哪些设计模式? 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2、什么是断言( Assert) ? 断言Assert用于在代码中验证实际结果是不是符合预期结果&#xff0c; 如果测试用例执行失败会抛出异常并提供断言日志 3、什么是web自动…