zoukankan      html  css  js  c++  java
  • P2678 跳石头

    2019 - 4 - 17


    这道题使我们的市内竞赛的题

     

    然则我们都不会

     

    现在明白了


    这道题的本质就是暴力,二分完了还是暴力,只是二分降低了暴力的次数


    让我们开始吧

    平坦的成功之路?那只是先驱者踏平的 


    ——————————————————————

    难度:普及+/提高-

    链接:Miku最好看

    ——————————————————————

    这个题就是一个二分,暴力,思路?很抱歉,我证不出来,

    你能明白的

    ——————————————————————

    2019/4/17

    哦,对,为什么是l+r+1    /2 呢?

     

    ________________________________________

     1 /*
     2 这道题就是二分
     3 
     4 首先,你要找到暴力做法,找到之后,你就会发现这道题的做法了——二分
     5 
     6 
     7 当然,二分的关键,就是区间,关于这个区间,就是距离,我们从一半一半开始二分距离 
     8 
     9 
    10 以及,看到二分的关键,你会发现 如果这个mid是合法的,那么答案就在mid—r之间,否则,就在l-mid之间
    11 
    12 如果大佬您能证明出来,请留在评论区,谢谢 
    13 
    14 
    15 */
    16 #include<iostream>
    17 
    18 using namespace std;
    19 int stone[50001];//距离记录石头 
    20 
    21 int L,N,M;
    22 
    23 int check(int x)//这里是暴力检查 
    24 {
    25     int last=0,cnt=0; //上一个点,我们需要移走的石头数 
    26     for(int i=1;i<=N+1;++i){//n+1?因为 到终点还有一段路程 
    27         if(stone[i]-last<x) cnt++;//如果留着这块石头 就会发现最短路径小于我们的mid,就要删去它
    28         
    29         //删去了,就不用更新last ,因为石头已经不存在了 
    30         else
    31         last=stone[i];//留着,更新last 
    32     }
    33     if(cnt>M) return 0;//我们为了满足条件 需要拿走超过规定的石头,自然是不合法 
    34     else return 1; //你明白的 
    35 }
    36 
    37 
    38 int main()
    39 {
    40     cin>>L>>N>>M;
    41     for(int i=1;i<=N;++i)
    42     {
    43         cin>>stone[i];//输入石头位置 
    44     }
    45     stone[N+1]=L;//处理到终点的路程 
    46     int l=1,r=L;
    47     while(l<r)//这是二分 
    48     {
    49         int mid=(l+r+1)/2; 
    50         if(check(mid)) l=mid;//看不懂if 
    51         //如果您能证明,可不可以留下过程呢 
    52         
    53         
    54         //感性理解 --slk 
    55         else
    56         r=mid-1;
    57     }
    58     cout<<l;//输出左区间 
    59     return 0; 
    60 }
    AC

    ________________________________________

    Have a good life

    ---恢复内容结束---

  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/For-Miku/p/10698374.html
Copyright © 2011-2022 走看看