USACO Mooo Moo
洛谷 P2214 [USACO14MAR]哞哞哞Mooo Moo
JDOJ 2416: USACO 2014 Mar Silver 3.Mooo Moo
Description
Problem 3: Mooo Moo [silver] [Brian Dean, 2014]
Farmer John has completely forgotten how many cows he owns! He is too
embarrassed to go to his fields to count the cows, since he doesn't want
the cows to realize his mental lapse. Instead, he decides to count his
cows secretly by planting microphones in the fields in which his cows tend
to gather, figuring that he can determine the number of cows from the total
volume of all the mooing he hears.
FJ's N fields (1 <= N <= 100) are all arranged in a line along a long
straight road. Each field might contain several types of cows; FJ
owns cows that come from B different breeds (1 <= B <= 20), and a cow
of breed i moos at a volume of V(i) (1 <= V(i) <= 100). Moreover,
there is a strong wind blowing down the road, which carries the sound
of mooing in one direction from left to right: if the volume of mooing
in some field is X, then in the next field this will contribute X-1 to
the total mooing volume (and X-2 in the field after that, etc.).
Otherwise stated, the mooing volume in a field is the sum of the
contribution due to cows in that field, plus X-1, where X is the total
mooing volume in the preceding field.
Given the volume of mooing that FJ records in each field, please compute
the minimum possible number of cows FJ might own.
The volume FJ records in any field is at most 100,000.
Input
* Line 1: The integers N and B.
* Lines 2..1+B: Line i+1 contains the integer V(i).
* Lines 2+B..1+B+N: Line 1+B+i contains the total volume of all mooing
in field i.
Output
* Line 1: The minimum number of cows owned by FJ, or -1 if there is no
configuration of cows consistent with the input.
Sample Input
5 2 5 7 0 17 16 20 19
Sample Output
4
HINT
INPUT DETAILS:
FJ owns 5 fields, with mooing volumes 0,17,16,20,19. There are two breeds
of cows; the first moos at a volume of 5, and the other at a volume of 7.
OUTPUT DETAILS:
There are 2 cows of breed #1 and 1 cow of breed #2 in field 2, and there is
another cow of breed #1 in field 4.
题目翻译:
约翰忘记了他到底有多少头牛,他希望通过收集牛叫声的音量来计算牛的数量。
他的N (1 <= N <= 100)个农场分布在一条直线上,每个农场可能包含B (1 <= B <= 20)个品种的牛,一头品种i的牛的音量是V(i) ,(1 <= V(i) <= 100)。一阵大风将牛的叫声从左往右传递,如果某个农场的总音量是X,那么将传递X-1的音量到右边的下一个农场。另外,一个农场的总音量等于该农场的牛产生的音量加上从上一个农场传递过来的音量(即X-1)。任意一个农场的总音量不超过100000。
请计算出最少可能的牛的数量。
题解:
完全背包问题的一个小变形。
设置dp[i] 为音量为i时最少的奶牛数量,所以最后的答案就是所有牧场自己的音量的总和。
注意,是实际音量,不是实际音量。
所以在原有a数组保存农场总音量的同时,我们引入了b数组来保存这个牧场的单纯音量。
注意,这里统计b数组的时候,一定要加max(和0比较),否则会WA3个点。
然后用maxx统计最大值,这样初始化的时候可以节省一点点时间。
然后就是振奋人心的DP过程啦!套用完全背包的模板的时候注意要加一个判断。
这个判断就是一种优化,emm,怎么说呢》自己体会吧!。
AC CODE:
#include<cstdio>
#include<algorithm>
using namespace std;
const int INF=1e9;
int n,B,maxx=-1,ans=0;
int v[25],a[105],b[105],dp[100005];
int main()
{
scanf("%d%d",&n,&B);
for(int i=1;i<=B;i++)
scanf("%d",&v[i]);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
{
b[i]=a[i]-max(a[i-1]-1,0);
maxx=max(maxx,b[i]);
}
for(int i=1;i<=maxx;i++)
dp[i]=INF;
for(int i=1;i<=B;i++)
for(int j=v[i];j<=maxx;j++)
if(dp[j-v[i]]!=INF)
dp[j]=min(dp[j],dp[j-v[i]]+1);
for(int i=1;i<=n;i++)
{
if(dp[b[i]]==INF)
{
printf("-1");
return 0;
}
ans+=dp[b[i]];
}
printf("%d",ans);
return 0;
}
USACO Mooo Moo的更多相关文章
- 【题解】Luogu P2214 [USACO14MAR]哞哞哞Mooo Moo
P2214 [USACO14MAR]哞哞哞Mooo Moo 题目描述 Farmer John has completely forgotten how many cows he owns! He is ...
- (寒假集训)Mooo Moo (完全背包)
Mooo Moo 时间限制: 1 Sec 内存限制: 64 MB提交: 5 解决: 4[提交][状态][讨论版] 题目描述 Farmer John has completely forgotten ...
- P2214 [USACO14MAR]哞哞哞Mooo Moo
链接:Miku ---------------------- 这道题还是个背包 --------------------- 首先看一下声音的组成,对于每一个农场的声音,它是由两部分组成的 :上一个农场 ...
- USACO 2020 OPEN Silver Problem 3. The Moo Particle
题意: 解法: 首先给出在本题中连通和连通块的定义: 连通: 两个粒子a,b连通,当且仅当ax≤bx.ay≤by或者bx≤ax.by≤ay. 如图,A,B两粒子是连通的,而C.D不是. 可以看出,本题 ...
- usaco silver
大神们都在刷usaco,我也来水一水 1606: [Usaco2008 Dec]Hay For Sale 购买干草 裸背包 1607: [Usaco2008 Dec]Patting Heads 轻 ...
- Moo University - Financial Aid
Moo University - Financial Aid Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 6020 Accep ...
- Bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声 单调栈
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 631 Solved: 445[Submi ...
- BZOJ1657: [Usaco2006 Mar]Mooo 奶牛的歌声
1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 489 Solved: 338[Submi ...
- poj 2010 Moo University - Financial Aid(优先队列(最小堆)+ 贪心 + 枚举)
Description Bessie noted that although humans have many universities they can attend, cows have none ...
随机推荐
- java循环控制语句loop使用
java中break和continue可以跳出指定循环,break和continue之后不加任何循环名则默认跳出其所在的循环,在其后加指定循环名,则可以跳出该指定循环(指定循环一般为循环嵌套的外循环) ...
- sql server 批量备份数据库及删除N天前的备份数据
很多时候,我们都需要将数据库进行备份,当服务器上数据库较多时,不可能一个数据库创建一个定时任务进行备份,这时,就需要进行批量的数据库备份操作,好了,废话不多说,具体实现语句如下: 1 2 3 4 5 ...
- postman使用的时候注意的坑
https://cloud.tencent.com/developer/article/1341037
- 33,Leetcode 搜索旋转排序数组-C++ 递归二分法
题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这 ...
- linux 开机mount nfs
mount -t nfs 10.208.1.235:/home/gis/bigrasterdata/mxds/uploads /usr/local/website/upload/pythonmxds ...
- spring的15个经典面试题
总结Spring框架的15个经典面试题. 什么是Spring框架? Spring是一种轻量级框架,旨在提高开发人员的开发效率以及系统的可维护性. 我们一般说的Spring框架就是Spring Fram ...
- 深入理解react-native
欢迎转载,请支持原创,保留原文链接:http://blog.ilibrary.me http://blog.ilibrary.me/2016/12/25/react-native-internal ( ...
- git add无效,git status(modified content, untracked content)
问题一:git status 时文件目录后提示(modified content, untracked content) git add后也添加不上,文件不能提交上去 例如下图: 原因: 该文 ...
- lombok的@Accessors注解3个属性说明
https://www.cnblogs.com/kelelipeng/p/11326936.html https://www.cnblogs.com/kelelipeng/p/11326621.htm ...
- 2019-11-29-C#-直接创建多个类和使用反射创建类的性能
原文:2019-11-29-C#-直接创建多个类和使用反射创建类的性能 title author date CreateTime categories C# 直接创建多个类和使用反射创建类的性能 li ...