【2012百度之星/初赛下】C:度度熊的礼物

程序员有趣的面试智力题 偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开关控制,三架飞机环游世界,用火柴和两根绳子测量45分钟之类的题目,火星得已经可以考古了,这里就不再说了。      1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能 阅读详情

描述:度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值。度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物。不同类型的朋友在收到不同的礼物所能达到的开心值是不一样的。开心值衡量标准是这样的:每种超级礼物都拥有两个属性(A, B),每个朋友也有两种属性(X, Y),如果该朋友收到这个超级礼物,则这个朋友得到的开心值为A*X + B*Y。
由于拥有超级礼物的个数限制,度度熊很好奇如何分配这些超级礼物,才能使好友的开心值总和最大呢?

输入

第一行n表示度度熊的好友个数。

接下来n行每行两个整数表示度度熊好朋友的两种属性值Xi, Yi。

接下来2行,每行三个整数ki, Ai, Bi,表示度度熊拥有第i种超级礼物的个数以及两个属性值。

1<=n<=1000, 0<=Xi,Yi, Ai, Bi 1+k2>=n

输出

输出一行一个值表示好友开心值总和的最大值

样例输入

4

3 6

7 4

1 5

2 4

3 3 4

3 4 3

样例输出

118

提示

送给第一种礼物的人有1,3,4,送给第二种礼物的人有2

代码1:
#include<iostream>
#include<algorithm>
using namespace std;
int f[1001];
struct node
{
	int x , y;
}human[1001];
int num1,num2,a1,b1,a2,b2;

int main(void)
{
	int n , i , j , ans;
	scanf("%d",&n);
	for(i = 1 ; i <= n ; ++i)
		scanf("%d %d" , &human[i].x , &human[i].y);
	scanf("%d %d %d" , &num1 , &a1 , &b1);
	scanf("%d %d %d" , &num2 , &a2 , &b2);

	memset(f,-1,sizeof(f));
	//printf("%d\n",f[1]);
	ans = -1000000;
	f[0] = 0;
	for(i = 1 ; i <= min(n,num2) ; ++i)
		f[i] = f[i-1] + human[i].x*a2 + human[i].y*b2;
	if(f[n] > ans)
		ans = f[n];
	//f[0]=human[1].a*a1+human[1].b*b1;
	//printf("ans:%d\n",ans);
	for(i = 1 ; i <= min(num1,n) ; ++i)
	{
		f[0] = f[0] + human[i].x*a1 + human[i].y*b1;
		//printf("i:%d j:0 f:%d\n",i,f[0]);
		for(j = 1 ; j <= min(n-i,num2) ; ++j)
		{
			f[j] = max(f[j-1]+human[i+j].x*a2+human[i+j].y*b2 , f[j]+human[i+j].x*a1+human[i+j].y*b1);
			//printf("i:%d j:%d f:%d\n",i,j,f[j]);
		}
		if(f[n-i] > ans)
			ans = f[n-i];
	}
	printf("%d\n",ans);
	return 0;
}

代码2:

#include<iostream>
using namespace std;

int c[1000][2000];

int maxx(int a,int b)
{
    if(a > b)
        return a;
	else
		return b;
}

int main(void)
{
    int i , j , t , n , k1 , k2 , a1 , a2 , b1 , b2 , max;
    int x[1001] , y[1001];
    cin >> n;
    for (i = 1 ; i <= n ; ++i)
        cin >> x[i] >> y[i];
    cin >> k1 >> a1 >> b1 >> k2 >> a2 >> b2;

	t = maxx(x[1]*a1+y[1]*b1,x[1]*a2+y[1]*b2);
    c[1][k1+k2] = x[1]*a1+y[1]*b1;
    c[1][0] = x[1]*a2+y[1]*b2;
    for(i = 1 ; i <= k1+k2-1 ; ++i)
        c[1][i] = t;
    for(j = 2 ; j <= n ; ++j)
    {
        for(i = 0 ; i <= k1+k2-j+1 ; ++i)
            c[j][i] = maxx(c[j-1][i+1]+x[j]*a1+y[j]*b1,c[j-1][i]+x[j]*a2+y[j]*b2);
    }
	max = 0;
    for(i = 0 ; i <= k1+k2-n+1 ; ++i)
    {
        if(c[n][i] > max)
            max = c[n][i];
    }
    cout << max << endl;
    return 0;
}
DP方法:
#include<iostream>
#include<cstdio>
using namespace std;

const int MAXN = 1002; 
int x[MAXN], y[MAXN], dp[MAXN][MAXN], a[3], b[3], k[3]; 

int main(void)
{
	int n , i , j , ans , c1 ,c2;
	while(scanf("%d", &n) != EOF)
	{
		for (i = 1; i <= n; ++i)
		{
			scanf("%d %d", &x[i], &y[i]);
		}
		for (i = 1; i <= 2; ++i)
		{
			scanf("%d %d %d", &k[i], &a[i], &b[i]);
		}
		memset(dp , 0 , sizeof(dp));
		for (i = 1; i <= n; ++i)
		{
			for (j = 0; j <= k[1] && j <= i; ++j)
			{
				if (i - j > k[2])
					continue;
				c1 = a[1] * x[i] + b[1] * y[i] ;
				c2 = a[2] * x[i] + b[2] * y[i] ;
				if(j)
					dp[i][j] = dp[i - 1][j - 1] + c1;
				if(i - j)
					dp[i][j] = max(dp[i][j], dp[i - 1][j] + c2);
			}
		}
		ans = 0;
		for (i = 0; i <= k[1]; ++i)
			ans = max(ans, dp[n][i]);
		printf("%d\n", ans);
	}
	return 0;
}


Mac M系列芯片用户必看:UTM虚拟机跑麒麟V10安装达梦DM8全流程避坑指南 本文为Mac M系列芯片用户提供了一份详尽的UTM虚拟机安装麒麟V10并部署达梦数据库DM8的实战指南。文章深入分析了在ARM架构下选择UTM而非其他虚拟化方案的原因,并详细拆解了从系统安装、SPICE工具配置、麒麟V10深度调优到DM8安装与避坑的全流程,重点解决了ARM环境下的兼容性与配置难题,帮助开发者高效搭建国产化开发测试环境。 阅读详情

相关推荐

ThingsBoard入门实战(二):ThingsBoard 设备接入

文章目录ThingsBoard 设备接入一、设备配置/设备类型二、设备三、设备接入HTTPCOAPMQTT四、下一步 ThingsBoard 设备接入 设备接入并不一定需要真正的设备,我们可以通过程序。或者命令来模拟设备,向平台发送信息。 这节我们先为用户分配一个设备,然后通过模拟设备命令更新设备的状态(遥测值)。 一、设备配置/设备类型 添加一个叫"路灯"的设备配置。 设备配置听起来比较抽象,可以认为是设备类型或者是设备类型的配置。实际上,ThingsBoard 中很多时候让选择设备类型,就是选的这个。

AIGC搞起 1万+

DVWA文件上传漏洞实战:从环境搭建到蚁剑连接WebShell

文件上传漏洞是Web安全中常见的高危漏洞类型,其核心原理在于服务器对用户上传的文件未进行充分验证,导致恶意文件被上传并执行。攻击者通过构造特殊文件(如WebShell)并利用服务器解析特性,可获取系统命令执行权限,进而控制服务器。在渗透测试与安全研究中,理解其利用链对于防御至关重要。DVWA(Damn Vulnerable Web Application)作为一款专为安全学习设计的漏洞靶场,为安全测试人员提供了理想的实验环境。通过搭建LAMP(Linux, Apache, MySQL, PHP)环境并部署D

weixin_33946020的博客 500

带你一分钟了解电感与磁珠的区别

在电路设计中会经常使用到电感和磁珠,虽然在电路中的作用有所不同,但它们都属于磁性电子元器件,本文简单介绍下电感和磁珠的区别电感和磁珠电感和磁珠的结构主要由磁性材料金属线圈和外壳组成,具体结构如下图所示:电感磁珠结构图电感其实是金属线圈缠绕在磁芯上,而磁珠是在内部折叠后外围包裹着铁氧体磁性材料。电感器(Inductor)又称扼流器、电抗器、动态电抗器是储能器件,能够把电能转化为磁能而存储起来的元件。磁珠则是能量转换(消耗)器件,将流过他的高频信号以热能的形式消耗掉。

攻城狮鹏哥 1409

2012百度之星初赛之C题:度度熊的礼物

C:度度熊的礼物 时间限制: 1000ms 内存限制: 65536kB 描述 度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值。度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物。不同类型的朋友在收到不同的礼物所能达到的开心值是不一样的。开心值衡量标准是这样的:每种超级礼物都拥有两个属性(A, B),每个朋友

小神 590

省一蓝桥杯嵌入式-09RTC实时时钟

RTC(Real-Time Clock)实时时钟,是一个独立的定时器RTC模块拥有一组连续的计数的计数器,在响应软件配置下,可提供时钟、日历、闹钟功能RTC能提供年月日时分秒等信息(可设置)在系统复位或从待机模式唤醒后,RTC的设置时间维持不变(这个我没实现,复位后时间也重置了,有能力的可以自己研究一下)持续时间跟踪:在主系统断电后或处于低功耗模式时,RTC仍继续工作,原理是有额外的电池为其供电(蓝桥杯板子没有这个备用电源,该功能无效。

qq_46392331的博客 1729

忆阻器(二)——忆阻模拟器

除了真实的器件,我们也可以用运放和乘法器来搭忆阻模拟器。这节将介绍数学模型、matlab仿真及multisim仿真。 一、数学模型 忆阻分为磁控和荷控两种,这里介绍三次非线性磁控忆阻模型: {I=W(φ)VW(φ)=a+3bφ2dφdt=V \begin{cases} I=W(\varphi)V \\ W(\varphi)=a+3b \varphi ^2\\ \frac{d \varphi }{dt}=V \end{cases} ⎩⎪⎨⎪⎧​I=W(φ)VW(φ)=a+3bφ2dtdφ​=V​ 这里的WWW

http://www.icfgblog.com/ 1万+

2012百度之星初赛:C题

C:度度熊的礼物 时间限制:1000ms内存限制:65536kB 描述 度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值。度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物。不同类型的朋友在收到不同的礼物所能达到的开心值是不一样的。开心值衡量标准是这样的:每种超级礼物都拥有两个属性(A, B),每个朋友也

天幕个人博客 1025

YOLOv11 网络结构详解:一文看懂 Backbone、Head、C3k2、SPPF 和 Detect 检测头

在使用 YOLOv11 进行目标检测时,我们经常会接触到或这样的模型配置文件。backbone和head分别是什么意思?ConvC3k2SPPFC2PSA这些模块分别起什么作用?P3/8、P4/16、P5/32 代表什么?为什么最后 Detect 要同时接收 3 个不同尺度的特征图?YOLOv11n、YOLOv11s、YOLOv11m、YOLOv11l、YOLOv11x 的区别在哪里?

learnerYC的博客 1811

2012百度之星初赛下 c题

度度熊拥有一个自己的Baidu空间,度度熊时不时会给空间朋友赠送礼物,以增加度度熊与朋友之间的友谊值。度度熊在偶然的机会下得到了两种超级礼物,于是决定给每位朋友赠送一件超级礼物。不同类型的朋友在收到不同的礼物所能达到的开心值是不一样的。开心值衡量标准是这样的:每种超级礼物都拥有两个属性(A, B),每个朋友也有两种属性(X, Y),如果该朋友收到这个超级礼物,则这个朋友得到的开心值为A*X + B

wsdtwwps的专栏 357

京东商品数据爬取实战:用Selenium+代理IP绕过最新反爬机制(附完整代码)

本文深入解析京东商品数据采集技术,详细介绍了如何利用Selenium与智能反反爬策略绕过京东最新的反爬机制。通过实战案例和完整代码,帮助开发者掌握高效采集京东商品数据的方法,包括动态参数加密、行为验证识别及分布式采集架构设计等关键技术。

cc789的博客 1060

SOME/IP协议详解「1.1·面向服务与面向信号」

面向信号和面向服务的区别,和举例子

雪云飞星的博客 5654

百度笔试题:malloc/free与new/delete的区别

相同点:都可用于申请动态内存和释放内存 不同点: (1)操作对象有所不同。 malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不

Hackbuteer1的专栏 7万+

银行一表通监管报送系统详解

国家金融监管总局对于“一表通”的总体描述为:通过建立一套明细级、标准化的数据体系和汇总计算规则,将银行机构传送至监管可信区的业务明细数据汇总生成财务指标、监管指标和监管报表,大幅提升监管数据时效性,统一数据标准,实现数据间的穿透和整合,同时改变机构多头报送数据模式,减轻机构报送负担。

银行信息系统应用架构详解 2518

操作系统各大公司笔试题汇总

1、在段页式存储管理中,其虚拟地址空间是() A、一维                               B、二维                                C、三维                            D、层次 答案:B 2、采用( )不会产生内部碎片(“内零头”) A、分页式存储管理

Hackbuteer1的专栏 6万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

c++模板类学习

1、模板的概念 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。 //函数1.

Hackbuteer1的专栏 5万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

char str[] 和 char *str 的区别

char* get_str(void) { char str[] = {"abcd"}; return str; }        char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的

Hackbuteer1的专栏 4万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

淘宝2011.9.21校园招聘会笔试题

一、单选题 1、我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分(C) A、5瓶

Hackbuteer1的专栏 3万+

亚信联创2011.9.17招聘会笔试题

1、对于如下程序: #include using namespace std; class A { public: A() { cout<<"A"<<endl; } }; int main(void) { A a[4], b,*p; } 会输出多少个A?(   C   ) A、2                   B、3

Hackbuteer1的专栏 1万+

getchar、scanf以及缓冲区的概念

1、getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。       getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符,getchar带有回显。

Hackbuteer1的专栏 1万+

STL容器学习总结

本文主要讨论C++标准库中的顺序容器及相应的容器适配器,这些内容主要涉及顺序容器类型:vector、list、deque,顺序容器适配器类型:stack、queue、priority_queue。       标准库中的容器分为顺序容器和关联容器。顺序容器(sequential

Hackbuteer1的专栏 1万+

用高精度方法计算n! ,并显示n!(阶乘)的值。

【问题描述】  对于任意给定的n值(n为整数,且1 【样例】 输入:n= 10 输出: 3628800 又输入:n= 20 输出: 2432902008176640000 使用整型数组来存储大数类的每一位,并模拟手工乘法的全过程。。 #include "stdio.h" #include "stdlib.h" const unsigned int MAX = 10000;

Hackbuteer1的专栏 1万+

程序员面试100题之十一:数组循环移位

设计一个算法,把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。      不合题意的解法如下:      我们先试验简单的办法,可以每次将数组中的元素右移一位,循环K次。abcd1234--->4abcd123--->34abcd12--->234abcd1--->1234abcd。代码如下所示: RightShift(int *arr, int N

Hackbuteer1的专栏 1万+

程序员面试100题之十五:数组分割

一、题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。 假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然: S(k, 1) = {A[i] | 1 S(k, k) = {A[1]+A[2]+…+A[k]} S(k, i) = S(

Hackbuteer1的专栏 1万+

淘宝网 校园招聘 技术人员笔试题

通用试题部分: 选择题 1、在按层次遍历二叉树的算法中, 需要借助的辅组数据结构是 A、队列 B、栈 C、线性表 D、有序表 2、所谓指令周期是指 A、取指令和取操作数的时间 B、执行指令和存储操作结果的时间 C、取操作数和执行指令的时间 D、取指令和执行指

Hackbuteer1的专栏 1万+
上一篇: 【2012百度之星/初赛下】B:网页聚类
下一篇: 程序员面试100题之十五:数组分割
hackbuteer1
博客等级 码龄15年 1万+粉丝 251原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值