M 有效算法

M 有效算法

在这里插入图片描述
本题考验二分知识,思路是二分k的取值,就按第一组样例来说当我们k取值为1的时候我们遍历数组想让|8-x|<=k1的话x的取值范围是7-9,想让|3-x|<=k2的话x的取值范围是1-5,两者x的区间不重合,说明肯定没有x能同时让|8-x|<=k1和|3-x|<=k2,所以不成立,当k=2的时候我们发现每一组x的区间都有重合的地方,那么此时a数组一定是可以全都变成x的,并且当k>2时毫无疑问绝对都可以符合,k的取值是否达标具有单调性,所以可以用二分来枚举。
题解如下:

#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
#define for1 for(int i = 1;i <= n;i++)
#define for0 for(int i = 0;i < n;i++) 
#define forn1 for(int j = 1;j <= n;j++) 
#define forn0 for(int j = 0;j < n;j++) 
#define form1 for (int j = 1; j <= m; j++)
#define form0 for (int j = 0; j < m; j++)
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define arrn int* arr = new int[n+2];arr[0] = 0,arr[n+1]=0
#define carr cin >> arr[i]
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define endl '\n'
#define mod  1000000007
#define t() int _; cin >> _; while (_--)
int a[300010];
int b[300010];
int n;
bool cheak(int k)
{
    long long ml = a[1] - 1ll * b[1] * k;
    long long mr = a[1] + 1ll * b[1] * k;
    for (int i = 2; i <= n; i++)
    {
        long long ll = a[i] - 1ll * b[i] * k;
        long long rr = a[i] + 1ll * b[i] * k;
        if (ll > ml)ml = ll;
        if (rr < mr)mr = rr;
    }
    if (mr < ml)return false;
    return true;
}
int main() {
    IOS;
    int t;
    cin >> t;
    while (t--)
    {
        cin >> n;
        for(int i = 1; i <= n; i++)
        cin >> a[i];
        for(int i = 1; i <= n; i++)
        cin >> b[i];
        int l = 0, r = 1e9;
        while (l <= r)
        {
            int mid = (l + r) >> 1;
            if (cheak(mid))r = mid-1;
            else l = mid+1;
        }
        cout << l << endl;
    }
    return 0;
}

相关推荐

  1. 算法题】32. 最长有效括号

    2024-05-14 02:54:03       52 阅读
  2. 算法m*n网格最小路径

    2024-05-14 02:54:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 02:54:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 02:54:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 02:54:03       87 阅读
  4. Python语言-面向对象

    2024-05-14 02:54:03       96 阅读

热门阅读

  1. 算法学习笔记(匈牙利算法)

    2024-05-14 02:54:03       40 阅读
  2. LabVIEW电机测试系统

    2024-05-14 02:54:03       38 阅读
  3. mysql的导入与导出

    2024-05-14 02:54:03       27 阅读
  4. google hack常用命令举例

    2024-05-14 02:54:03       36 阅读
  5. leetcode刷题

    2024-05-14 02:54:03       40 阅读
  6. 初识面向对象

    2024-05-14 02:54:03       49 阅读
  7. Docker安装Mysql后无法连接排查过程

    2024-05-14 02:54:03       35 阅读
  8. 区块链中MEV攻击:危害与防护策略

    2024-05-14 02:54:03       34 阅读
  9. 5.13学习日志

    2024-05-14 02:54:03       32 阅读