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;
    }
    
  • 相关阅读:
    applicationContext.xml 文件头报错Referenced file contains errors
    oracle与mysql创建表时的区别
    Java 8 Stream
    Java 8 默认方法
    Java 8 函数式接口
    java 链表
    不完整的类型问题解决
    VScode 目录影藏某些文件不显示
    小姨多鹤 电视剧有感
    matlab 简单显示多边形和线条和点
  • 原文地址:https://www.cnblogs.com/leachim/p/12388628.html
Copyright © 2011-2022 走看看