背包一般多重,(寒假集訓)Mooo Moo (完全背包)

 2023-10-14 阅读 18 评论 0

摘要:Mooo Moo 時間限制: 1 Sec??內存限制: 64 MB提交: 5??解決: 4[提交][狀態][討論版] 題目描述 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

Mooo Moo

時間限制: 1 Sec??內存限制: 64 MB
提交: 5??解決: 4
[提交][狀態][討論版]

題目描述

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.

輸入

* 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.

輸出

* Line 1: The minimum number of cows owned by FJ, or -1 if there is no? configuration of cows consistent with the input.

樣例輸入

5 2
5
7
0
17
16
20
19

樣例輸出

4

提示

背包一般多重、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.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.

【分析】由題意知,每一個區域的聲音大小除了自身外 只受上一個區域有關,減去上一個區域的影響后,就只剩下自己本身產生的聲音,求最少的牛的數目,就是完全背包了。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#define inf 0x3f3f3f3f
#define met(a,b) memset(a,b,sizeof a)
#define pb push_back
typedef long long ll;
using namespace std;
const int N = 1e3;
const int M = 24005;
int n,m,k,maxn=0,ans=0;
int mx=-1;
int v[N],a[N],b[N],dp[N*N];
int main()
{scanf("%d%d",&n,&k);for(int i=1;i<=k;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);mx=max(mx,b[i]);}for(int i=1;i<=mx;i++)dp[i]=inf;for(int i=1;i<=k;i++){for(int j=v[i];j<=mx;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\n");return 0;}ans+=dp[b[i]];}printf("%d\n",ans);return 0;
}

過重的背包??

轉載于:https://www.cnblogs.com/jianrenfang/p/6279653.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/136396.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息