• Noip 2015 Day2 T1 跳石头


    Noip 2015 senior Day2 跳石头

             这道题是一道很经典的二分。

             这点我们在当初学习的时候就有提到过。

             然后这次我们依旧是二分寻找。

             二分判断距离。

             我们写的Check函数,判断的是距离,也就是说我们每一次对距离判断,那么再该距离下我们能去除多少个石头,然后如果多了我们往左找,少了往右找。

             其余的就没什么好讲的了。

     

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 #define N 50010
     8 
     9 int l,n,m;
    10 int rock[N];
    11 
    12 bool check(int distance)
    13 {
    14     int sum = m, last_point = 0;
    15     for(int i=1;i<n;i++)
    16     {
    17         if(rock[i] - rock[last_point] < distance)
    18             sum--;
    19         else
    20             last_point = i;
    21     }
    22     return sum >= 0;
    23 }
    24 
    25 void two_devide()
    26 {
    27     int left = 0, right = l + 10;
    28     while(left + 1 < right)
    29     {
    30         int mid = (left + right) >> 1;
    31         if(check(mid))
    32             left = mid;
    33         else
    34             right = mid;
    35     }
    36     printf("%d",left);
    37 }
    38 
    39 int main()
    40 {
    41     freopen("stone.in","r",stdin);
    42     freopen("stone.out","w",stdout);
    43     
    44     scanf("%d %d %d",&l,&n,&m);
    45     for(int i=1;i<=n;i++) scanf("%d",&rock[i]);
    46     rock[++n] = l;
    47     n++;
    48     two_devide();
    49     
    50     return 0;
    51 }
  • 相关阅读:
    表达式目录树(Expression)
    六大设计原则【单一职责】【里氏替换】【 迪米特法则】【依赖倒置原则】【接口隔离原则】【开闭原则】
    lambda,linq
    c#中的特性Attribute
    CentOS7部署Nginx
    NetCore项目的部署
    ABP+NetCore+Vue.js实现增删改查
    Abp数据库迁移注意事项
    MVC分页
    AspNet5 Changes to [Activate] in beta-5
  • 原文地址:https://www.cnblogs.com/sin-mo/p/7157882.html
Copyright © 2020-2023  润新知