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 安徽

相关推荐

HR_丸山彩同学:你的项目描述里,系统设计讲了很多:MemCube是什么、三级存储架构怎么设计、四种遗忘策略分别是什么。这些面试的时候讲没问题,但简历上不需要这么细。 简历要突出的是影响力,不是实现细节。面试官看简历的时候想知道的是「这个项目有多大价值」,不是「这个项目具体怎么实现的」。实现细节是面试时候聊的 怎么改:技术细节可以精简为一句「采用三级存储架构+四种遗忘策略」,把省出来的篇幅用来写影响力。比如:项目有没有开源?有没有写成技术博客?有没有被别人使用过? 校园经历没有任何信息量,任何人都可以写这句话,写了等于没写。更关键的是,你投的是技术岗,校园活动经历本来就不是加分项。如果非要写,必须写出具体的数字和成果。如果你没有这些数字,那就老老实实删掉 「端到端耗时缩减30-40%」要给出确切数字和绝对值。从1000ms降到600ms是降了40%,从100ms降到60ms也是降了40%,但这两个含义完全不一样。其他也是,涉及到数据,准备好证据,口径统一,面试会问 「熟练」「熟悉」「了解」混在一起用,读起来很乱。而且「了解前端需求」最好改成「具备前后端协作经验」
点赞 评论 收藏
分享
哞客37422655...:你猜为什么福利这么好还得一直追着你问
点赞 评论 收藏
分享
评论
4
8
分享

创作者周榜

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