洛谷 P2214 [USACO14MAR]哞哞哞Mooo Moo

洛谷传送门

JDOJ 2416: USACO 2014 Mar Silver 3.Mooo Moo

JDOJ传送门

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的更多相关文章

  1. 【题解】Luogu P2214 [USACO14MAR]哞哞哞Mooo Moo

    P2214 [USACO14MAR]哞哞哞Mooo Moo 题目描述 Farmer John has completely forgotten how many cows he owns! He is ...

  2. (寒假集训)Mooo Moo (完全背包)

    Mooo Moo 时间限制: 1 Sec  内存限制: 64 MB提交: 5  解决: 4[提交][状态][讨论版] 题目描述 Farmer John has completely forgotten ...

  3. P2214 [USACO14MAR]哞哞哞Mooo Moo

    链接:Miku ---------------------- 这道题还是个背包 --------------------- 首先看一下声音的组成,对于每一个农场的声音,它是由两部分组成的 :上一个农场 ...

  4. USACO 2020 OPEN Silver Problem 3. The Moo Particle

    题意: 解法: 首先给出在本题中连通和连通块的定义: 连通: 两个粒子a,b连通,当且仅当ax≤bx.ay≤by或者bx≤ax.by≤ay. 如图,A,B两粒子是连通的,而C.D不是. 可以看出,本题 ...

  5. usaco silver

    大神们都在刷usaco,我也来水一水 1606: [Usaco2008 Dec]Hay For Sale 购买干草   裸背包 1607: [Usaco2008 Dec]Patting Heads 轻 ...

  6. Moo University - Financial Aid

    Moo University - Financial Aid Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 6020 Accep ...

  7. Bzoj 1657: [Usaco2006 Mar]Mooo 奶牛的歌声 单调栈

    1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 631  Solved: 445[Submi ...

  8. BZOJ1657: [Usaco2006 Mar]Mooo 奶牛的歌声

    1657: [Usaco2006 Mar]Mooo 奶牛的歌声 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 489  Solved: 338[Submi ...

  9. poj 2010 Moo University - Financial Aid(优先队列(最小堆)+ 贪心 + 枚举)

    Description Bessie noted that although humans have many universities they can attend, cows have none ...

随机推荐

  1. requests访问https站点证书告警问题

    背景 想使用api的方式去访问公司内部azkaban平台,https站点,azkaban的官方api文档使用的curl语句,如下: curl -k -X POST --data "actio ...

  2. DingTalk钉钉消息推送(.net core 3 WebApi尝鲜记)

    我发了个朋友圈,Swagger真他妈的牛B,解放了开发API的码农,麻麻再也不用担心我们写API文档耽误回家吃饭了. /// <summary> /// 发送钉钉消息 /// </s ...

  3. 推荐AndroidGodEye Android性能检测工具

    推荐AndroidGodEye Android性能检测工具 1 介绍 AndroidGodEye是一个可以在PC浏览器中实时监控Android性能数据指标的工具,你可以通过wifi/usb连接手机和p ...

  4. BizTalk增强型RosettaNet跟踪报告

      BizTalk 的数据报表能力一直是比较弱的,好在Rosettanet 支持使用BAM 跟踪功能来跟踪各PIP消息状态.增强的跟踪功能能跟踪流程为消息.错误和事件.不可否认性的数据.可以根据跟踪的 ...

  5. 动手学深度学习5-softmax回归

    softmax回归 softmax 回归模型 单样本分类的矢量计算表达式 小批量样本分类的矢量计算表达式 交叉熵损失函数 模型预测以及评价 小结 softmax回归 前几节介绍的是线性回归模型适用于输 ...

  6. 排列组合(包括n中随机抽取m个)

    有些情况我们需要获取一个数组中的所有排列组合情况,或者获取一部分数据进行随机组合,这个在python中有一个模块可以实现.具体情况如下 :::::::::::::::::::::::::::::::: ...

  7. [转帖]k8s 如何让你的应用活的更久

    k8s 如何让你的应用活的更久 https://www.jianshu.com/p/132319e795ae 众所周知,k8s 可以托管你的服务 / 应用,当出现各种原因导致你的应用挂掉之后,k8s ...

  8. C/C++ 随笔目录

    [1]基础部分 (1)宏定义 <assert> <offset宏> <#pragma once> <宏定义学习> <预处理语句> <# ...

  9. c#实现串口通信

    参考文章:https://www.cnblogs.com/Zed-H/p/8651882.html 利用虚拟串口软件连接两个虚拟串口,如图连接6,7: 打开串口进行通信如下:

  10. iTextSharp生成pdf含模板(一)---制作pdf模板

    参考地址:https://www.cnblogs.com/ibeisha/p/itextsharp-pdf.html 一.使用场景:在线填写一些信息,根据对应的信息生成奖状. 二.解决方案 1.新建w ...