首页 > 其他分享 >跳石头

跳石头

时间:2022-08-14 23:33:22浏览次数:37  
标签:return int mid 距离 石头 const include

/*
 *                                |~~~~~~~|
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *                                |       |
 *     |~.\\\_\~~~~~~~~~~~~~~xx~~~         ~~~~~~~~~~~~~~~~~~~~~/_//;~|
 *     |  \  o \_         ,XXXXX),                         _..-~ o /  |
 *     |    ~~\  ~-.     XXXXX`)))),                 _.--~~   .-~~~   |
 *      ~~~~~~~`\   ~\~~~XXX' _/ ';))     |~~~~~~..-~     _.-~ ~~~~~~~
 *               `\   ~~--`_\~\, ;;;\)__.---.~~~      _.-~
 *                 ~-.       `:;;/;; \          _..-~~
 *                    ~-._      `''        /-~-~
 *                        `\              /  /
 *                          |         ,   | |
 *                           |  '        /  |
 *                            \/;          |
 *                             ;;          |
 *                             `;   .       |
 *                             |~~~-----.....|
 *                            | \             \
 *                           | /\~~--...__    |
 *                           (|  `\       __-\|
 *                           ||    \_   /~    |
 *                           |)     \~-'      |
 *                            |      | \      '
 *                            |      |  \    :
 *                             \     |  |    |
 *                              |    )  (    )
 *                               \  /;  /\  |
 *                               |    |/   |
 *                               |    |   |
 *                                \  .'  ||
 *                                |  |  | |
 *                                (  | |  |
 *                                |   \ \ |
 *                                || o `.)|
 *                                |`\\) |
 *                                |       |
 *                                |       |
 */
#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<stack>
#include<unordered_map>
// #pragma GCC optimize(3)
using namespace std;
#define rep(i,x,y) for(int i=x;i<y;i++)
#define scan(x)   scanf("%lld",&x)
#define int long long
#define lowbit(x) x&(-x) //二进制最低位所代表的数
#define PI 3.1415926535
typedef pair<int,int> PII;
int gcd(int a,int b){
    return b>0 ? gcd(b,a%b):a;
}
int exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x = 1,y = 0;
        return a;
    }
    int d = exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}
const int N = 1e6+10;
const int mod = 1e9+7;
const int INF = 0x3f3f3f3f;
void init()
{
    cin.tie(0),cout.tie(0);
    ios::sync_with_stdio(false);
}

int a[N];

int L,n,m;

bool check(int x)
{
    int tot = 0,last=0;
    for(int i=0;i<=n;i++)
    {
        if(a[i]-last<x)tot++;
        else last=a[i];
    }

    return tot<=m;
}

signed main()
{
    // 最小值最大 二分
    init();
    cin>>L>>n>>m;
    for(int i=0;i<n;i++)cin>>a[i];
    a[n]=L;
    int l = 0,r = L;
    while(l<r)
    {
        int mid = l+r+1>>1;
        if(check(mid))l=mid;
        else r = mid-1;
    }
    cout<<l<<endl;
}
View Code

思路:

最小距离最大值:二分

直接看题意找,找区间距离,如果区间距离符合我猜的距离,那么 计数器CNT加一 如果计数器比输入的m大,那么就不符合,返回错误。

还有二分的细节,如果题目要求找<=的只能用l+r+1>>1的板子

如果题目要求找>=用l+r>>1的板子

标签:return,int,mid,距离,石头,const,include
From: https://www.cnblogs.com/yeonnyuui/p/16586711.html

相关文章