選牛(二分查詢)

2022-05-22 20:33:08 字數 1196 閱讀 4871

在一條座標軸上,有n頭奶牛,第i頭奶牛的位置是xi。fj現在要選出三頭奶牛去比賽,不妨假設選擇了奶牛a,b,c。那麼必須要滿足:

1:xa<xb<xc。

2:xb-xa≤xc - xb≤2×(xb-xa)。

你的任務是計算,fj總共有多少種不同的選擇?

輸入格式:

第一行,乙個整數n。(3≤n≤1000)。

接下來有n行,第i行是整數xi。

輸出格式:

一行,乙個整數。

輸入樣例:

531

1074

輸出樣例:

4

樣例說明:

可以有4種不同的選擇,每種選擇對應的3頭奶牛的座標是:

日常分析來了!!

需要:1.二分查詢

2.列舉

首先看條件:

1:xa<xb<xc。

2:xb-xa≤xc - xb≤2×(xb-xa)

那麼我們就可以列舉xa牛和xb牛,再二分xc牛

先不看第乙個條件,那麼我們就可以將第二個條件分解成:

1 xb-xa≤xc-xb  2 xc-xb≤2×(xb-xa)兩條式子

先二分符合2.1條件的有多少牛,再二分符合2.2條件的有多少牛

再將2.2的結果減去2.1的結果就可以得出方案數了。

注:主要滿足2.2而不是2.1,所以用2.2的結果減去2.1的結果

努力理解,加油!!!!

#include#include

#include

#include

using

namespace

std;

int a[1000000

];int

n;int

num,num1,t;

intmain()

sort(a+1,a+1+n);

for(int i=1;i<=n;i++)

else

}num=left;

left=0,right=n+1

;

while(left+1

else

}num1=left;

t+=num1-num;}}

cout

}

牛克程式設計 二分查詢

題目描述 對於乙個有序陣列,我們通常採用二分查詢的方式來定位某一元素,請編寫二分查詢的演算法,在陣列中查詢指定元素。給定乙個整數陣列a及它的大小n,同時給定要查詢的元素val,請返回它在陣列中的位置 從0開始 若不存在該元素,返回 1。若該元素出現多次,請返回第一次出現的位置。測試樣例 1,3,5,...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

586 瘋牛(二分查詢 貪心)

農夫 john 建造了一座很長的畜欄,它包括n 2 n 100,000 個隔間,這些小隔間依次編號為x1,xn 0 xi 1,000,000,000 但是,john的c 2 c n 頭牛們並不喜歡這種布局,而且幾頭牛放在乙個隔間裡,他們就要發生爭鬥。為了不讓牛互相傷害。john決定自己給牛分配隔間,...