zoukankan      html  css  js  c++  java
  • 百度2015春季实习生招聘附加题_今天要吃点好的!


    加班了一个通宵的度度熊,神经有点恍惚,想到依旧未能解决的Bug。眼泪禁不住霹雳哗啦往下掉……他抬头看了看帝都灰蒙蒙的天空,一咬牙。一跺脚,大叫一声——劳资今天要吃点好的! 已知本厂有n个食堂。第i(i属于[1,n])个食堂有m[i]种食物。每种食物有一个价钱c,享受度v。度度熊希望去一个食堂就餐,花费[bot,top]范围内的钱数(也能够拍桌子走人,哪里都不吃了),选择若干种食物。使得自己所能获得的享受度最大。(注意,度度熊另一个挑食的特点,同一种食物他最多仅仅会点一份。) 如今告诉你全部食堂食物的信息,希望你进行选择搭配。使得度度熊能够得到最大的享受度,并输出这个享受度的值。 
    输入描写叙述:


    第一行是一个正整数T(1<=T<=20),表示有T组測试数据。
    对于每组数据——
    第一行是三个数n,bot。top。n代表食堂数1<=n<=10)。bot是这次吃饭的最低消费。top是这次吃饭的最高消费(0<=bot,top<=10000)
    接下来依次是n个食堂的信息,对于第i个食堂
    第一行是一个数m[i](o<=m[i]<=100),代表第i个食堂的食物数
    第二行有2*m[i]个数,各自是c[i][1],v[i][1]。c[i][2],v[i][2]。……c[i][m[i]],v[i][m[i]]
    c[i][j]表示第i个餐厅第j种食物的价钱。v[i][j]代表第i个餐厅第j种食物给度度熊带来的享受度。




    输出描写叙述:


    对于每组数据,请输出一行,每行一个正整数。表示度度熊所能获得的最大享受度。


    数据结果保证不会超过2^31-1.


    输入样例:


    2
    2 10 20
    5 1 1 2 1 5 1 10 1 20 1
    5 1 2 2 2 5 2 10 2 20 2
    2 10 10
    1 5 1
    1 5 1


    输出样例:


    8

    0


    01背包问题。算是比較经典的dp了


    #include <iostream>
    #include <cstring>
    #include <cmath>
    
    using namespace std;
    
    int ans[10010];
    
    int main()
    {
    	int T,n,bot,top,m,c,v,i,k;
    	cin>>T;
    	while(T--)
    	{
    		cin>>n>>bot>>top;
    
    		k=0;
    		while(n--)
    		{
    			memset(ans,0,sizeof(ans));
    			cin>>m;
    			while(m--)
    			{
    				cin>>c>>v;
    				for(i=top;i>=c;i--)
    					if((ans[i-c]>0) || (0==i-c))
    						ans[i]=max(ans[i],ans[i-c]+v);
    			}
    			for(i=bot;i<=top;i++)
    				k=max(k,ans[i]);
    		}	
    		cout<<k<<endl;
    	}
    	return 0;
    }


  • 相关阅读:
    初遇黑客
    第四周学习总结
    第三周学习总结
    关于base64编码的原理及如何在python中实现
    在python中如何将十进制小数转换成二进制
    《信息安全专业导论》第二周学习总结
    计算机科学概论速读问题
    刘谨铭的自我介绍
    师生关系
    20201318快速浏览教材提问
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5269970.html
Copyright © 2011-2022 走看看