二分查找与二分答案

阅读时长: 2 分钟 494 字

原题单链接:https://www.luogu.com.cn/training/111#problems

AcWing789. 数的范围

#include 
using namespace std;

const int N = 1e5 + 10;
int n, q, a[N];

int bs1(int x)
{
    int l = -1, r = n;
    while (l + 1 != r)
    {
        int mid = l + r >> 1;
        if (a[mid] > 1;
        if (a[mid] > n >> q;
    for (int i = 0; i > a[i];
    }
    while (q--)
    {
        int x;
        cin >> x;
        int res1 = bs1(x);
        if (res1 == -1)
        {
            cout 
using namespace std;

double n;

int main()
{
    cin>>n;
    double l=-100,r=100;
    // while(r-l>1e-8)
    for(int i=0;i
using namespace std;

const int N=1e6+10;
int n,m;
int a[N];

int main()
{
    cin>>n>>m;
    for(int i=1;i>a[i];
    }
    while (m--)
    {
        int x;
        cin>>x;
        int l=0,r=n+1;
        while (l+1!=r) // l+1>1;
            if(a[mid]
using namespace std;

const int N=2e5+10;
int n,C;
int q[N];

int bs1(int x)
{
    int l=0,r=n+1;
    while(l+1>n>>C;
    for(int i=1;i>q[i];
    }
    sort(q+1,q+n+1);
    long long cnt=0;
    for(int B=1;B
using namespace std;

const int N=1e6+10;
int n,m;
int q[N];

bool check(int x)
{
    long long sum=0;
    for(int i=1;i=m)return true;
    }
    if(sum>=m)return true;
    else return false;
}

int main()
{
    cin>>n>>m;
    for(int i=1;i>q[i];
    }
    int l=0,r=4e5;
    while(l+1
using namespace std;

const int N = 1e5 + 10;
int n, k;
int q[N];

bool check(int x)
{
    int sum = 0;
    for (int i = 1; i = k)
        return true;
    else
        return false;
}

int main()
{
    cin >> n >> k;
    for (int i = 1; i > q[i];
    }
    int res = 0, sum = 0;
    int l = 0, r = 1e8;
    while (l + 1 
using namespace std;

const int N=5e4+10;
int L,n,m;
int q[N];

bool check(int x)
{
    int cnt=0;
    int i=0,now=0;
    while(i>L>>n>>m;
    for(int i=1;i>q[i];
    }
    q[n+1]=L;

    int l=0,r=L+1;
    while(l+1
using namespace std;

const int N=1e5+10;
int L,n,k;
int q[N],s[N];

bool check(int x)
{
    int cnt=0;
    for(int i=1;ix)
        {
            cnt++;
            int num=s[i]-x;
            while (num>x)
            {
                cnt++;
                num-=x;
            }
            // cnt+=num/x-1;
            // if(num%x)cnt++;
        }
    }
    if(cnt>L>>n>>k;
    for(int i=1;i>q[i];
        s[i]=q[i]-q[i-1];
    }
    q[n+1]=L;
    s[n+1]=L-q[n];
    int l=0,r=1e7+1;
    while(l+1<r)
    {
        int mid=(l+r)/2;
        if(check(mid))r=mid;
        else l=mid;
    }
    if(check(l))cout<<l<<'\n';
    else cout<<r<<'\n';
    return 0;
}

P1182数列分段 Section II

P1163银行贷款

P3743小鸟的设备

本网站已运行: 计算中...
备案 赣公网安备36072502000191 | 赣ICP备2024040374号
使用 Hugo 构建 · 主题 Stack 由 Jimmy 设计