2021年3月30日百度笔试题

本文介绍了一道编程笔试题,题目涉及概率论和数组操作。牛牛有一个硬币,有p%的概率为正,需要根据硬币的正反面来组合数组中的元素,以最大化组合后的和的期望值。通过排序和贪心策略,可以解决这个问题。文章提供了AC代码,并解释了处理大数据规模时避免溢出的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021年3月30日 百度笔试编程题第二题

描述:
牛牛有一个硬币,有p%的概率为正。现在要把一个数组 a[1]…a[2*n]拆分成n个二元组。对于这n个二元组,抛硬币,如果是正面就选择这两个数里最大的数字,反之则选最小的数字。
求最终和的结果的最大值的期望

输入:
第一行输入一个 n,一个p
第二行2*n个数据

输出:
如果是整数,则输出整数,如果是小数,则输出带%的数据

贪心即可。很容易知道,如果p%<0.5那么肯定得小的和小的组合,大的和大的组合,如果p%>0.5 那么肯定得小的和大的组合,大的和小的组合。
所以,先进行排序,然后判断p的大小,选择组合即可。

but 这样数据无法AC,应为数组的大小范围是1–1e11 ;n的范围是1–1e6,p的范围是0-1e2,累乘后是1e19。 所以long long也会爆。处理方法是,在加的过程就除掉100,并记录余数,最后进行总结即可

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e6+10;
ll n,p,a[maxn],ans=0,re=0;
int main(){
	cin>>n>>p;
	for(ll i=1;i<=2*n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+2*n);
	if(p<=50){
		for(ll i=1;i<=2*n;i+=2){
			ll cnt=(p*a[i+1]+(100-p)*a[i]);
			ans+=cnt/100;
			re+=cnt%100;//记录余数
		}
	}else{
		for(ll i=1;i<=n;i++){
			ll cnt=(p*a[2*n-i+1]+(100-p)*a[i]);
			ans+=cnt/100;
			re+=cnt%100;
		}
	}
	//总结
	if(re%100==0){//若余数的累加也是100的倍数,则答案肯定是个整数
		printf("%lld\n",ans+re/100);
	}else{//答案不是整数
		ans+=re/100;//ans加上缺省值
		re=re%100;//re对100取余
		printf("%lld%lld%\n",ans,re);//直接输出即可
	}
	
}

第一题的连接

百度2012 至今笔试题 以及简介 5.1 百度运维部笔试题................................................................................................................................17 5.2 百度商务搜索笔试题...................................................................................................................................18 5.3 百度商务搜索部笔试题...............................................................................................................................18 5.4 百度质量部笔试题.......................................................................................................................................18 5.5 百度质量部第一场笔试的笔试题................................................................................................................19 5.6 百度RD-2卷(质量部等)笔试真题..........................................................................................................19 5.7 百度商业应用产品部(非技术类)笔试题................................................................................................21 5.8 百度商业产品部笔试归来~~~真题奉献......................................................................................................22 5.9 百度用户体验部笔试题...............................................................................................................................23 5.10 百度电子商务事业部笔试真题....................................................................................................................24 5.11 百度运维web开发两道笔试题...................................................................................................................24 5.12 百度技术类笔试真题...................................................................................................................................25 5.13 百度技术类笔试真题(原题扫描)............................................................................................................25 5.14 百度技术研发笔试题目...............................................................................................................................29 5.15 百度笔试题...................................................................................................................................................36 5.16 百度笔试题目--回忆版 ................................................................................................................................36 5.17 百度笔试题(市场部) ....................................................................................................................................37 5.18 用户体验笔试题...........................................................................................................................................40 5.19 2008-9-24百度笔试题(第一套题) ..........................................................................................................40 5.20 2008-9-24百度笔试题(第三套题) ..........................................................................................................42
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值