[ACM] FZU 2086 餐厅点餐 (枚举)

2024-01-28 13:18
文章标签 枚举 acm 点餐 餐厅 fzu 2086

本文主要是介绍[ACM] FZU 2086 餐厅点餐 (枚举),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

roblem Description

Jack最近喜欢到学校餐厅吃饭,好吃干净还便宜。

在学校餐厅,有a种汤,b种饭,c种面条,d种荤菜,e种素菜。

为了保证膳食搭配,Jack每顿饭都会点1~2样荤菜,1~2样素菜(不重复)。同时,在Jack心情好的时候,会点一样饭,再配上一种汤。在心情不好的时候,就只吃一种面条。

因为经济有限,Jack每次点餐的总价在min~max之间。Jack想知道,总共有多少种不同的点餐方案。

 Input

输入数据第一行包含一个整数T,表示测试数据的组数,对于每组测试数据:

第一行为整数a,b,c,d,e(0<a,b,c,d,e<=10)

第二行为a个大于零的整数,表示a种汤的价格

第三行为b个大于零的整数,表示b种饭的价格

第四行为c个大于零的整数,表示c种面条的价格

第五行为d个大于零的整数,表示d种荤菜的价格

第六行为e个大于零的整数,表示e种素菜的价格

第七行为两个整数min max,表示每次点餐的价格范围

 Output

对于每组测试数据,输出一行,包含一个整数,表示点餐方案数。

 Sample Input

12 2 2 2 22 33 15 21 43 65 8

 Sample Output

3

 Source

福州大学第九届程序设计竞赛

 

解题思路:

又是因为没看清题意。。。点餐不光要有荤有素,还必须有饭汤或面条。

代码:

#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <iomanip>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <vector>
#include <ctype.h>
using namespace std;
int tang,fan,mian,hun,su;
int Tang[11],Fan[11],Mian[11],Hun[11],Su[11];
int Min,Max;bool ok(int n)
{if(n>=Min&&n<=Max)return true;return false;
}
int p[100000];int main()
{int t;cin>>t;while(t--){cin>>tang>>fan>>mian>>hun>>su;for(int i=1;i<=tang;i++)scanf("%d",&Tang[i]);for(int i=1;i<=fan;i++)scanf("%d",&Fan[i]);for(int i=1;i<=mian;i++)scanf("%d",&Mian[i]);for(int i=1;i<=hun;i++)scanf("%d",&Hun[i]);for(int i=1;i<=su;i++)scanf("%d",&Su[i]);cin>>Min>>Max;int cnt=0;int len=0;for(int i=1;i<=hun;i++)//一荤一素{if(Hun[i]>=Max)continue;for(int j=1;j<=su;j++){if(Su[j]>=Max)continue;int temp=Hun[i]+Su[j];if(temp<Max)p[++len]=temp;}}for(int i=1;i<=hun;i++)//一荤两素{if(Hun[i]>=Max)continue;for(int j=1;j<=su;j++){if(Su[j]>=Max)continue;for(int k=j+1;k<=su;k++){if(Su[k]>=Max)continue;int temp=Hun[i]+Su[j]+Su[k];if(temp<Max)p[++len]=temp;}}}for(int i=1;i<=hun;i++)//两荤一素{if(Hun[i]>=Max)continue;for(int j=i+1;j<=hun;j++){if(Hun[j]>=Max)continue;for(int k=1;k<=su;k++){if(Su[k]>=Max)continue;int temp=Hun[i]+Hun[j]+Su[k];if(temp<Max)p[++len]=temp;}}}for(int i=1;i<=hun;i++)//两荤两素{if(Hun[i]>=Max)continue;for(int j=i+1;j<=hun;j++){if(Hun[j]>=Max)continue;for(int s=1;s<=su;s++){if(Su[s]>=Max)continue;for(int q=s+1;q<=su;q++){if(Su[q]>=Max)continue;int temp=Hun[i]+Hun[j]+Su[s]+Su[q];if(temp<Max)p[++len]=temp;}}}}for(int i=1;i<=len;i++){for(int fan1=1;fan1<=fan;fan1++){int p1=p[i];p1+=Fan[fan1];int d=p1;for(int tang1=1;tang1<=tang;tang1++){p1=d;//注意这一句p1+=Tang[tang1];if(ok(p1))cnt++;}}for(int mian1=1;mian1<=mian;mian1++){int p2=p[i];p2+=Mian[mian1];if(ok(p2))cnt++;}}cout<<cnt<<endl;}return 0;
}


 

这篇关于[ACM] FZU 2086 餐厅点餐 (枚举)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/653736

相关文章

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu 2489 (dfs枚举 + prim)

题意: 对于一棵顶点和边都有权值的树,使用下面的等式来计算Ratio 给定一个n 个顶点的完全图及它所有顶点和边的权值,找到一个该图含有m 个顶点的子图,并且让这个子图的Ratio 值在所有m 个顶点的树中最小。 解析: 因为数据量不大,先用dfs枚举搭配出m个子节点,算出点和,然后套个prim算出边和,每次比较大小即可。 dfs没有写好,A的老泪纵横。 错在把index在d

hdu 6198 dfs枚举找规律+矩阵乘法

number number number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description We define a sequence  F : ⋅   F0=0,F1=1 ; ⋅   Fn=Fn

fzu 2277 Change 线段树

Problem 2277 Change Time Limit: 2000 mSec    Memory Limit : 262144 KB  Problem Description There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each node has a value ai.

fzu 2275 Game KMP

Problem 2275 Game Time Limit: 1000 mSec    Memory Limit : 262144 KB  Problem Description Alice and Bob is playing a game. Each of them has a number. Alice’s number is A, and Bob’s number i

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

枚举相关知识点

1.是用户定义的数据类型,为一组相关的常量赋予有意义的名字。 2.enum常量本身带有类型信息,即Weekday.SUN类型是Weekday,编译器会自动检查出类型错误,在编译期间可检查错误。 3.enum定义的枚举类有什么特点。         a.定义的enum类型总是继承自java.lang.Enum,且不能被继承,因为enum被编译器编译为final修饰的类。         b.只能定义

【C语言】结构体、枚举、联合体

【C语言】结构体、枚举、联合体 文章目录 @[TOC](文章目录) 前言一、结构体声明1.一般格式2.typedef 重命名结构体类型定义变量 二、结构体数组三、结构体与指针及函数传参四、结构体传参五.结构体在内存的存储六、参考文献总结 前言 使用工具: 1.编译器:VScode 2.C Primer Plus 第六版-1 提示:以下是本篇文章正文内容,下面案例可供参考

【转载】ACM感悟

今天看了一篇我们学校前辈的ACM的感悟,觉得写的十分有道理,这里转载,文章还会不断的改进和更新。 原文链接:http://www.cnblogs.com/Chierush/p/3760870.html?ADUIN=1339764596&ADSESSION=1401536826&ADTAG=CLIENT.QQ.5329_.0&ADPUBNO=26349 声明:本文是写给弱校ACM新手的一点

10730-Antiarithmetic?【暴力枚举】

水题 求一个序列是否存在3个数按顺序构成等差数列 直接枚举等差数列的差值 时间复杂度降到 n * n / 3 开pos数组记录每个值得为之 楷vis数组记录目前i是否出现过 强行AC 15221397 10730 Antiarithmetic? Accepted C++ 0.035 2015-03-26 12:09:56 #include<cstdio>#include