在一條座標軸上,有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。
輸出格式:
一行,乙個整數。
輸入樣例:
5311074
輸出樣例:
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決定自己給牛分配隔間,...