zoukankan      html  css  js  c++  java
  • 牛客-接机

    题目传送门

    sol:很基础的二分答案板子题。一开始方向搞错了往动规贪心那边想了,想了一个多小时都没思路。

    • 二分答案
      #include "cstdio"
      #include "algorithm"
      using namespace std;
      const int MAXN = 1e5 + 5;
      int arr[MAXN];
      int n, m, c;
      bool check(int t) {
          int k = 1; // k表示每辆车第一头到达的牛的编号 
          for (int i = 1; i <= m; i++) {
              k = min(k + c, upper_bound(arr + 1, arr + 1 + n, arr[k] + t) - arr);
              if (k > n) return true;
          }
          return false;
      }
      int main() {
          scanf("%d%d%d", &n, &m, &c);
          for (int i = 1; i <= n; i++) scanf("%d", &arr[i]);
          sort(arr + 1, arr + 1 + n);
          // r表示当前最小可行答案,l表示当前最大不可行答案 
          int l = -5, r = 1e9 + 5;
          while (r - l > 1) {
              int mid = l + r >> 1;
              if (check(mid)) r = mid;
              else l = mid;
          }
          printf("%d
      ", r);
          return 0;
      }
  • 相关阅读:
    053335
    053334
    053333
    053332
    053331
    053330
    053329
    053328
    053327
    053326
  • 原文地址:https://www.cnblogs.com/Angel-Demon/p/11028943.html
Copyright © 2011-2022 走看看