题解 | #牛客周赛 24#

D小红的矩阵构造

二分数组的最大值。 利用公式需要的最小操作次数为alt

#include<bits/stdc++.h>
using namespace std;

const int N = 1e5 + 10;
long long a[N], n, k, x;
bool check(long long mid)
{
    long long num = 0;
    for (int i = 1; i <= n; i ++) // 在a[i]大于最大值时, 总共所需操作量计数加上
        if (a[i] > mid)
            num += (a[i] - mid + x - 1) / x;// 统计所需操作量? ?可用ceil()代替操作(注意类型转换)
  		  //num += ceil(doule(a[i] - mid) / (double)x);
    return num <= k; // 如果所需最小操作量小于题目标准,代表可行。否则不可行
}

int main()
{
    int i;
    ios::sync_with_stdio(false);
    cin >> n >> k >> x;
    for (i = 1; i <= n; i ++) cin >> a[i];// 输入
    sort(a + 1, a + n + 1); // 排序,成为由小到大的有序状态
    long long l = a[1] - k * x, r = a[n], ans; // 利用二分, 分段求解
    while(l <= r)
    {
        long long mid = (l + r) >> 1; // 求取中间量
        if (check(mid)) ans = mid, r = mid - 1; //如果可行,则计入ans 并移动指针计算当mid更小时是否可行
        else l = mid + 1;
    }
    cout << ans << endl;
    //总体利用二分查找验证最小的最大值为多少

    return 0;
}
牛客周赛题解 便于查看 文章被收录于专栏

方便本人自己查看复习知识点。

全部评论

相关推荐

11-22 16:20
已编辑
青岛黄海学院 Java
等闲_:感觉有好多地方会被问穿,mysql存储向量这个方案问题应该很大的,如果深问的的话,为什么不用es,不用pg,不用mivus,分块策略是怎么做的,向量化是怎么向量化的,稠密向量还是稀疏向量,再深问余弦相似度,HSWM算法,Bm25算法,为什么不用混合检索或者Rank重排序优化?其他的项目不停机分库分表咋实现的,切库过程中数据有diff的话有没有补偿策略?既然有了分库分表了有没有碰到业务上不好优化的慢sql,让这个sql读从库?而且点评的话,最好自己压测过,要不这个数据也不好解释。现在就27的情况来看,很多同学已经有了中大厂实习,这个节点也会偏向这些有大厂实习的92同学,而且hc也不多,所以坚持海投吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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