zoukankan      html  css  js  c++  java
  • CF1313A Fast Food Restaurant

    A. Fast Food Restaurant

    原题传送门

    Problem Restatement

    由于Denis工作得很累,他想开家餐厅。

    第一天,他做了 (a) 份饺子,(b) 份莓果汁和 (c) 份淋有炼乳的松饼。

    Denis餐厅奇怪的地方在于订餐的过程。对于每位客人Denis会自己选一份套餐给客人。

    Denis选套餐的规则是这样的:

    1. 每个客人都要至少有一份食物(饺子、莓果汁、淋有炼乳的松饼都是食物)。
    2. 每个客人不能收到多于一份饺子不能收到多于一份莓果汁且不能收到多于一份淋有炼乳的松饼
    3. 每个客人都要有不一样的套餐。

    Denis最多可以为几个客人提供套餐呢?

    Solution

    最开始看错题了,没看到第二点,所以写了个01背包问题版的动态规划,QAQ。

    那既然看错题了,就当通用版讲吧。把每一个套餐当作01背包里物品,然后和01背包问题一样DP即可。具体可以看代码。

    Code

    #include <bits/stdc++.h>
    using namespace std;
    
    int dp[11][11][11];
    
    void solve(){
    	int a,b,c;
    	scanf("%d %d %d", &a, &b, &c);
    	memset(dp,0,sizeof(dp));
    	for(int i=0;i<=1;i++)
    	for(int j=0;j<=1;j++)
    	for(int k=0;k<=1;k++){
    		if(i+j+k==0)continue;
    		for(int ii=a;ii>=i;ii--)
    		for(int jj=b;jj>=j;jj--)
    		for(int kk=c;kk>=k;kk--){
    			dp[ii][jj][kk]=max(dp[ii][jj][kk],dp[ii-i][jj-j][kk-k]+1);
    		}
    	}
    	printf("%d
    ", dp[a][b][c]);
    }
    
    int main(){
    	int T;
    	scanf("%d", &T);
    	while(T--){
    		solve();
    	}
    	return 0;
    }
    
  • 相关阅读:
    day1-字符串拼接、表达式、break和continue
    ssh免密登录
    1-5 文档的基本 CRUD 与批量操作
    1-4 安装logstash
    1-3 安装cerebro
    1-2 kibana 7.5.1 安装配置
    1-1 elasticsearch7.5 集群搭建 es 7
    生产环境k8s集群搭建
    Gearman任务分布系统部署windows平台_使用Cygwin
    [转载]单元测试之道(使用NUnit)
  • 原文地址:https://www.cnblogs.com/leachim/p/12388628.html
Copyright © 2011-2022 走看看