洛谷2214 哞哞哞Mooo Moo dp
来源:互联网 发布:js水泥基防水涂料 编辑:程序博客网 时间:2024/06/05 12:03
题目大意
农民约翰忘记了他到底有多少头牛,他希望通过收集牛叫声的音量来计算牛的数量。
他的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);}
阅读全文
0 0
- 洛谷2214 哞哞哞Mooo Moo dp
- Mooo Moo(dp)
- USACO2014MarchSilver Mooo Moo
- Mooo Moo题解
- jzoj 3812 Mooo Moo
- 高中OJ3812. 【USACO2014 3月】Mooo Moo
- Mooo
- 2017.1.14【初中部 GDKOI】模拟赛B组 Mooo Moo 题解
- 2017.1.14【初中部 GDKOI】模拟赛B组 Mooo Moo 题解
- POJ2231 Moo Volume [简单dp]
- 简单dp-poj-2231-Moo Volume
- POJ 2231 Moo Volume(dp)
- TOJ 1611 Moo University - Financial Aid -- 线段树 + DP
- 【poj 2010】Moo University - Financial Aid 预处理dp
- Mooo 单调队列求解
- bzoj3480【Usaco2014 Mar】Mooo
- Moo Volume
- Moo Volume
- js cookie的操作
- 普通方法调用,Invoke,begininvoke三者的区别总结及异步与同步的区别总结
- emoji表情替换
- oracle中sql语句(+)符号代表连接
- 【android逆向笔记】(六)从博客找到的可以练习的apk逆向练习
- 洛谷2214 哞哞哞Mooo Moo dp
- 3.Longest Substring Without Repeating Characters
- 566. Reshape the Matrix 重排矩阵
- 关于命名空间和闭包
- c++初级 之 stringstream用法
- 深入理解DOM事件机制系列第一篇——事件流
- 剑指offer---斐波那契额列(9)
- 写了一段代码检测jpg,gif,png的实际类型
- 注解与动态代理解耦权限验证