程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> poj 2456 二分法 最大化最小值

poj 2456 二分法 最大化最小值

編輯:C++入門知識

 

重新練習下二分法,發現還是手速不夠

從這道題學到一下幾點:

1、線性分幾段的方法,看我的Judge()代碼;

2、二分的while()最終打印的是down,而不是mid(我代碼裡寫的是ans),或者up,

這麼想:跳出循環的時候,假設while裡的判斷,Judge(ans)==1,那麼down是正確解,up不是

Judge(ans)==0,那麼ans跟up都不是正確解

綜上,打印down才能輸出正確解

3、調了好一會二才發現的bug:Judge函數裡,if(cnt

 

貼代碼:

#include 
#include 
#include 
#include 

using namespace std;

const int MAXN = 100000+10;

int n,c;
int dis[MAXN];

int Judge(int s)
{
    int cnt=0,last=0,now=0;
    while(now1)
        {
            ans=(up+down)/2;
            if(Judge(ans))down=ans;
            else up=ans;
        }
        printf(%d
,down);//??ans?
    }
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved