哈理工oj 1006 River Hopscotch
生活随笔
收集整理的這篇文章主要介紹了
哈理工oj 1006 River Hopscotch
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
點擊打開鏈接
AC代碼 如下:
#include <stdio.h> #include <cstring> #include <algorithm> #include <cmath> #include <iostream> using namespace std; ///二分搜索答案,最大化最小值 int main() {int L,n,m;int a[50010];while(~scanf("%d %d %d",&L,&n,&m)){for(int i = 1; i <= n; i++)scanf("%d",&a[i]);a[0] = 0;a[n+1] = L;sort(a,a+n+2);int l = 0,r = L,mid;///先模擬一個最小值mid,假設它就是正確答案int num;while(l <= r){int last = 0;int sum = 0;mid = (l + r) / 2;for(int i = 1; i <= n+1; i++){if(a[i] - a[last] < mid)//如果比mid小,就將該節點強制刪除,并計數sum++;else last = i;//如果不是就更新,為啥要更新,如果不更新,那我們計算的就不是兩點之間的距離了啊 }if(sum > m)///刪多了,說明mid值偏大r = mid - 1;else{l = mid + 1;num = mid;}}//最后經過二分循環,得到最大的mid;printf("%d\n",num);}return 0; }
總結
以上是生活随笔為你收集整理的哈理工oj 1006 River Hopscotch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 函数求值需要运行所有线程_精读《深度学习
- 下一篇: 实现图书增删的代码_不仅仅是图书信息管理