前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【HBUOJ】吃货阿生

【HBUOJ】吃货阿生

作者头像
韩旭051
发布2019-11-08 09:39:56
3810
发布2019-11-08 09:39:56
举报
文章被收录于专栏:刷题笔记

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/shiliang97/article/details/100562302

吃货阿生

Description

阿生的朋友都知道阿生是个吃货,吃对于他来说就是生活中必不可少的一件事。阿生最近突然想自己制作一些没吃过的美食。因此他买了一些原料。但是他并不知道这些原料是否足够,所以希望你写一个程序帮助他。

阿生将会给出每种原料的名称和数量,以及一道完整的菜所需要的原料。它包含每种菜所需的原料及数量。并且每道菜只需制作一次。

Input

第一行给出两个整数 n , m,分别代表原料种类和菜品的数量。

第 二 到第 n+1 行,每行一个由小写字母组成的字符串si和一个数字ai,表示这种原料的名称和数量。

接下来 m 行,每行首先有一个整数 k,代表这种菜品所需的原料种类数。

随后将会有 k 个字符串,代表原料名称,每个字符串后跟有一个数字ti​,用空格隔开,代表需要的原料数量。

1 <= n,m <= 1000, 1 <= k<= 10,且 k<=n

1 <= ai,ti <= 10^9, 1<= | si | <= 20

保证输入合法,原料名称不会相同,且菜谱中不会有未出现的食材。

Output

如果原料足够将菜单上的所有菜品全部制作一遍,请输出一行“YES”,并且按照输入顺序输出剩下的食材以及对应的数量,每行一个食材,用空格将食材和其数量隔开。如果某种食材全部被用完,则不输出该食材。

如果不能,输出一行“NO”。

Sample Input 1

代码语言:javascript
复制
5 3
water 100
flour 20
cabbage 71
pork 12
bean 5
2 water 20 flour 5
3 water 70 cabbage 54 pork 10
5 water 1 flour 1 cabbage 1 pork 2 bean 1

Sample Output 1

代码语言:javascript
复制
YES
water 9
flour 14
cabbage 16
bean 4

map存食材,然后顺序输出得了~~

代码语言:javascript
复制
#include<iostream>
#include<map> 
using namespace std;
string str[1000];
int main(){
	int m,n;
	cin>>m>>n;
	map<string,int>cai;
	for(int i=0;i<m;i++){
		string s;
		int l;
		cin>>s>>l;
		str[i]=s;
		cai[s]=l;
	}
	for(int i=0;i<n;i++){
		int k;
		cin>>k;
		while(k>0){
			k--;
			string s;
			int l;
			cin>>s>>l;
			if(cai[s]>=l){
				cai[s]-=l;
			}
			else{
				cout<<"NO";
				return 0;
			}
		} 
	}
	cout<<"YES"<<endl;
	for(int i=0;i<m;i++){
		if(cai[str[i]]==0){
			continue;
		}
		cout<<str[i]<<" "<<cai[str[i]]<<endl;
	}
	return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 吃货阿生
  • map存食材,然后顺序输出得了~~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档