您当前的位置: 首页 >  后端

MangataTS

暂无认证

  • 0浏览

    0关注

    423博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Bilibili校招C++后端开发笔试 | 编程部分

MangataTS 发布时间:2022-09-20 20:37:01 ,浏览量:0

编程 T1 最大正方形 思路

因为数据范围 1 e 5 1e5 1e5 我们只需要排序后从大到小枚举一下这个正方形的边长即可,然后拿这个边长去与这 n n n 个方块的高度做对比,找到第一个大于等于枚举的高度的位置,看一下这个位置是否合法(当前是否能组成正方形,肯定是从当前位置到最大元素的位置差大于等于边长,并且当前的方块也是要大于等于边长的)

代码
#include 
using namespace std;

const int N = 1e5+10;

int a[N],n;

int main()
{
	cin>>n;
	for(int i = 0;i >a[i];
	sort(a,a+n);
	for(int i = N;i >= 1; --i) {
		int loc = lower_bound(a,a+n,i) - a;
		int tt = loc;
		loc = n - loc;
		if(loc >= i && a[tt] >= i) {
			cout= 0; j -= 2) {
			f[i] = max(f[j] + a[i],f[i]);
		}
		for(ll j = i - 5,k = 1;j >= 0; j -= 5,k++) {
			if(k % 2)
				f[i] = max(f[j] + a[i],f[i]);
		}
	}
	for(ll j = 0;j             
关注
打赏
1665836431
查看更多评论
0.0584s