洛谷2214 哞哞哞Mooo Moo dp
题目大意
农民约翰忘记了他到底有多少头牛,他希望通过收集牛叫声的音量来计算牛的数量。
他的N (1 <= N <= 100)个农场分布在一条直线上,每个农场可能包含B (1 <= B <= 20)个品种的牛,一头品种i的牛的音量是V(i) ,(1 <= V(i) <= 100)。一阵大风将牛的叫声从左往右传递,如果某个农场的总音量是X,那么将传递X-1的音量到右边的下一个农场。另外,一个农场的总音量等于该农场的牛产生的音量加上从上一个农场传递过来的音量(即X-1)。任意一个农场的总音量不超过100000。
请计算出最少可能的牛的数量。
分析
用dp算出每种音量时,最少要多少头牛。
dp[i]=min(dp[i],dp[i-v[j]]+1)
再统计答案就好了。
水题
code
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<queue>using namespace std;const int maxm=100000+10,maxn=100+10;int dp[maxm];
int v[maxn],a[maxn],b[maxn];
int n,m;
int mx;int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=m;i++) scanf("%d",&v[i]);for (int i=1;i<=n;i++){int x;scanf("%d",&x);a[i]=x;if (a[i-1]==0) b[i]=x-a[i-1];else b[i]=x-a[i-1]+1;mx=max(b[i],mx);}memset(dp,127/2,sizeof(dp));dp[0]=0;for (int i=1;i<=mx;i++){for (int j=1;j<=m;j++){if (i-v[j]<0) continue;dp[i]=min(dp[i],dp[i-v[j]]+1);}}int ans=0;for (int i=1;i<=n;i++){ans+=dp[b[i]];}printf("%d",ans);
}
洛谷2214 哞哞哞Mooo Moo dp相关推荐
- 【题解】Luogu P2214 [USACO14MAR]哞哞哞Mooo Moo
P2214 [USACO14MAR]哞哞哞Mooo Moo 题目描述 Farmer John has completely forgotten how many cows he owns! He is ...
- 洛谷P2214 [USACO14MAR]哞哞哞Mooo Moo(完全背包)
设a[i]为第i个农场的总音量,如果我们将a[i]减去a[i-1]-1(前提是a[i-1]不为0),设最终为b[i],就不难发现,其实就相当于完全背包问题,要我们用B种物品去,以最少的数量去填满容量为 ...
- P2214 [USACO14MAR]哞哞哞Mooo Moo
一道不错的背包题. 首先,只考虑这个单点,我们一定是希望用最少的牛的组合来完成这个点的音量.因为有用的信息只是音量,而对于这个音量是怎么组合出来的,其实是无所谓的.所以,我们要每一个单点提供的音量的所 ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
- 洛谷P4322 最佳团伙(树上dp)
题目描述 洛谷传送门 题目描述 JSOI 信息学代表队一共有 N 名候选人,这些候选人从 1 到 N 编号.方便起见,JYY 的编号是 0 号.每个候选人都由一位编号比他小的候选人Ri推荐.如果 Ri ...
- 洛谷 P3205 [HNOI2010]合唱队(区间dp)
题目链接: [HNOI2010]合唱队 - 洛谷https://www.luogu.com.cn/problem/P3205 思路: 这题我是看了题解才做出来的,贴一下这位大佬的博客题解 P320 ...
- 洛谷P1006 传纸条 (棋盘dp)
好气,在洛谷上交就过了,在caioj上交就只有40分 之前在51nod做过这道题了. https://blog.csdn.net/qq_34416123/article/details/8180902 ...
- 【题解】洛谷P4158 [SCOI2009] 粉刷匠(DP)
次元传送门:洛谷P4158 思路 f[i][j][k][0/1]表示在坐标为(i,j)的格子 已经涂了k次 (0是此格子涂错 1是此格子涂对)涂对的格子数 显然的是 每次换行都要增加一次次数 那么当j ...
- [洛谷]P4158 [SCOI2009]粉刷匠 (#线性dp+背包dp)
题目描述 windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个格子最多只能被 ...
最新文章
- 搬箱轮滑再炫技!一个被波士顿动力耽误的机器人
- 打包python程序
- linux配置gprs modem
- 在朋友圈求助的NTP问题~
- SQL Server中时间格式转换函数convert()的使用
- Linux 命令(88)—— more 命令
- Custom Basic Authentication for IIS
- Presto数组函数
- 太赞了,竟然用SpringBoot打造一款网页版的IM,进行聊天...
- Android layoutInflate.inflate 方法具体解释,removeView()错误解决
- Python安装Tensorflow
- Mac 设置终端命令快捷方式
- 海康威视视频监控客户端开发实践
- 极好用的c++ http server和client库
- JVM - 垃圾回收(垃圾标记阶段算法,内存泄漏与溢出)(2)
- 程序员不好好写报告的结果是很严重的
- NOIp系列题目及CF小结
- Oracle实现竖表转横表的几种常用方法(行转列)
- ajax请求数据成功但是success中拿不到数据。
- 阿拉伯数字中文oracle,【oracle】中文数字转阿拉伯数字