2017.1.14【初中部 GDKOI】模拟赛B组 Mooo Moo 题解
来源:互联网 发布:淘宝预热 编辑:程序博客网 时间:2024/05/16 14:42
原题:
http://172.16.0.132/senior/#contest/show/1895/2
题目描述:
FJ 已经完全忘记了他有多少头奶牛!但是,跑到他的草场里数奶牛是一件很尴尬的事情,因为他不想让奶牛们知道他记忆有问题。作为替代,他决定秘密地把麦克风种在奶牛们通常聚集的草场里,然后只要从他听到的哞哞声音量中确定奶牛的数目即可。
FJ 的N 块草场(1 <= N <= 100)沿着一条笔直的路排成了一排。每块草场里可能有若干种不同的奶牛;FJ 的奶牛总共有B 种不同的种类(1 <= B <= 20),并且种类i 的一头奶牛叫起来的音量为V (i)(1 <= V (i) <= 100)。再者,沿着道路有一股强悍的风在吹,将哞哞叫的声音从路的左边传到右边:如果在某草场哞哞叫声音量为X,那么在下一个草场里会听到上边X -1 音量的叫声(并且在再下一个草场是X -2,等等)。更正式地说,一个草场的哞哞叫总音量为这个草场里奶牛哞哞的音量之和,加上X -1,这里X 是上一个草场的哞哞叫总音量。
给定FJ 从每个草场里记录的哞哞音量,请帮助他计算出他所拥有的奶牛的可能的最少数量。
任何一个草地上记录的音量值不超过100,000
输入:
第一行:整数N 和B。
第2 至B + 1 行:第i + 1 行包含整数V (i)。
第B + 2 至B + N + 1 行:第B + i + 1 行包含第i 个草场哞哞叫的总音量。
输出:
输出单独一行一个整数——FJ 最少拥有多少头奶牛;或者如果没有一种奶牛分配方案满足输入的限制,那么输出-1。
样例输入:
5 2
5
7
0
17
16
20
19
样例输出:
4
样例解释:
FJ 有5 块草场,哞哞音量分别为0; 17; 16; 20; 19。有两种奶牛,第一种哞哞的音量为5,另外一种音量为7.
在第二块草场,有两头种类#1 的奶牛和一头种类#2 的奶牛,并且在第4 块草场有另外一头种类#1 的奶牛。
数据范围限制:
对于20% 的数据,N <= 20。
对于30% 的数据,N <= 30;B <= 5。
题目测试数据有梯度。
分析:
很明显的背包,f[i]表示要这块田总叫声为i的最小花费。用无限背包解。
对于每一块田,d[i]-(d[i-1]-1)就是它自己的叫声,然后统计就好了。
实现:
#include<cstdio>#include<cstring>#include<iostream>using std::max;int a[25],mc[105],dp[100005];int n,b,mx,ans;void chk(int &x,int y){if(x==-1||x>y)x=y;}int main(){ int i,j; scanf("%d %d",&n,&b); memset(dp,-1,sizeof(dp)); for(i=1;i<=b;i++) scanf("%d",&a[i]); for(i=1;i<=n;i++) scanf("%d",&mc[i]); for(i=n;i>=1;i--) { mc[i]-=max(0,mc[i-1]-1); mx=max(mc[i],mx); } dp[0]=0; for(i=1;i<=b;i++) for(j=0;j+a[i]<=mx;j++) { if(dp[j]==-1)continue; int x=j+a[i]; chk(dp[x],dp[j]+1); } for(i=1;i<=n;i++) ans+=dp[mc[i]]; printf("%d",ans); return 0;}
- 2017.1.14【初中部 GDKOI】模拟赛B组 Mooo Moo 题解
- 2017.1.14【初中部 GDKOI】模拟赛B组 Mooo Moo 题解
- 2017.1.14【初中部 GDKOI】模拟赛B组题解
- 2017.1.13【初中部 GDKOI】模拟赛B组 逆光 题解
- 2017.1.19【初中部 GDKOI】模拟赛B组 开灯 题解
- 2017.1.19【初中部 GDKOI】模拟赛B组 长方形 题解
- 2017.1.21【初中部 GDKOI】模拟赛B组 国色天香 题解
- 2017.1.14【初中部 GDKOI】模拟赛B组 心灵终结 题解
- 2017.1.14【初中部 GDKOI】模拟赛B组 Watering the Fields 题解
- 2017.1.14【初中部 GDKOI】模拟赛B组 心灵终结 题解
- 2017.2.09【初中部 GDKOI】模拟赛B组 昵称 题解
- 2017.2.10【初中部 GDKOI】模拟赛B组题解
- 2017.2.11【初中部 GDKOI】模拟赛B组题解
- 2017.2.11【初中部 GDKOI】模拟赛B组题解
- 2017.1.14【初中部 GDKOI】模拟赛B组
- 2017.1.13【初中部 GDKOI】模拟赛B组 我要的幸福 题解
- 2017.1.13【初中部 GDKOI】模拟赛B组 天黑黑 题解
- 2017.1.17【初中部 GDKOI】模拟赛B组 穿越泥地 题解
- md5加密
- android 权限
- vue-cli
- TextView滚动显示内容
- BZOJ2527Meteors
- 2017.1.14【初中部 GDKOI】模拟赛B组 Mooo Moo 题解
- Go-作用域
- 一张图让你看懂Exress & Koa
- 运维面试题
- 把资源编译进EXE之(一)探秘Qt Rcc 的实现
- 排序、数组方法、字符串方法
- HTML表单标签(极客学院)
- c语言的位操作
- 高僧斗法