9.9科大讯飞笔试算法T3---二分+贪心+结论 100%

那个Ir的规定

等价于任意长为2和长为3的数字平均数大于等于m

因为任意长为x的偶数的话都能分割成长为2的,奇数的话分成若千个长为2的和一个长为3的

所以,直接二分答案,贪心子序列,从大到小,在遍历判断2,3

复杂度为Olgn*n*2*3

可以过

#include <iostream> 
#include <cstring>
#include <algorithm>
using namespace std;

int n, m; 
int a[100010];
bool check(int x)
{
	for(int i = 2; i <= x - 1; i ++)
	{
		double tmp = 1e9;
		// 2 的情况 
		tmp = (double) 1.0 * (a[i] + a[i - 1]) / 2;
		if(tmp < m) return false;
		tmp = (double) 1.0 * (a[i] + a[i + 1]) / 2;
		if(tmp < m) return false;
		
		// 3 的情况 
		if(i >= 3) tmp = (double) 1.0 * (a[i - 2] + a[i - 1] + a[i]) / 3; 
		if(tmp < m) return false;
		
		tmp = (double) 1.0 * (a[i - 1] + a[i] + a[i + 1]) / 3; 
		if(tmp < m) return false;
		
		if(i + 2 <= x) tmp = (double) 1.0 * (a[i] + a[i + 1] + a[i + 2]) / 3; 
		if(tmp < m) return false;
	}
	return true;
}
int main()
{
	cin >> n >> m;
	for(int i = 1; i <= n; i ++) cin >> a[i];
	sort(a + 1, a + n + 1, greater<int>());
	
	int l = 0, r = n;
	while(l < r)
	{
		int mid = l + r + 1 >> 1;
		if(check(mid)) l = mid;
		else r = mid - 1; 
	}
	cout << r << endl;
}

#科大讯飞求职进展汇总##软件开发薪资爆料##晒一晒我的offer#
全部评论
点赞 回复 分享
发布于 2023-09-09 22:05 安徽

相关推荐

面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
董春花_:真诚无罪,别听评论区那个清华的。按他的逻辑,你有分寸人觉得你是不想来,你积极热情人觉得你太想来,你好骗人就可你养鱼,你不好骗人觉得你服从性不高,合着**做啥都白扯。保持谦逊礼貌与对offer的积极性不才是最正常,也正确的做法么?招聘方的错强加到应聘者身上,***何不食肉糜。
点赞 评论 收藏
分享
大佬们,在大厂实习的都是几百一天???
爱睡觉的冰箱哥:实习工资这个不都是公开的吗,a不了,字节400,快手350,有些有房补餐补这样
点赞 评论 收藏
分享
评论
4
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务