歡迎檢視原題位址
此題思路(最初版):
暴力,得出最相近的,1000ms呢,除非資料超大,否則不超時。
說明: 爆搜,搜出結果,時間複雜度基本 $o(n^2)$
注:本文所有時間(與空間)複雜度僅為估計,不排除坑爹資料卡大複雜度的可能
#include using namespace std;
bool kkk(int a,int k)
cin>>m;
for(int i = 0;i>k;
int mink = 2345678;
int minv = 2345678;
for(int j = 0;j詳細提交結果:
測試資料共20組:
$\color$ 6組
$\color$ 14組
$\color\text$
於是,我開始**為什麼沒過。。。
經研究表明:有一部分資料很大,一般的暴力水過是困難(難上加難)了,與其糾結所謂「怎麼水過多騙騙分」還不如花一點時間想想正解,終於,功夫不負有心人,我找到了upper_bound()
先看看他的用法:
#include using namespace std;
int main() ;
int b,c;
b = upper_bound(a,a+10,7)-a;
cout《這是例項,暫時不提供執行結果。
那麼我們不難想到使用upper_bound()查詢不小於這個數的最大數那麼。。。
有兩種情況:
設不小於這個數的最大數 = a;
一種:a==n
二種:a< n
那麼就出來了這段**:
#include using namespace std;
int kkk(int a,int b,int k)
if(tmp2==0)
if(tmp2>tmp1) else
}int main()
sort(a,a+n);
cin>>m;
for(int i = 0;i>m;
int j = upper_bound(a,a+n,m)-a;
int k = j-1;
//cout《詳細提交結果:
測試資料共20組:
$\color$ 20組
$\color\text$
計蒜客T1156 查詢最近的元素 二分
題目貼上 在乙個非降序列中,查詢與蒜頭君的給定值最接近的元素。輸入格式 第一行包含乙個整數 n,為非降序列長度。1 n 100000。第二行包含 n 個整數,為非降序列各元素。所有元素的大小均在 0 1,000,000,000 之間。第三行包含乙個整數 m,為要詢問的給定值個數。1 m 10000。...
計蒜客t36352 魔法
肯定我要佔滿所有的葉子結點,否則以乙個葉子節點建樹的時候你選的所有點就都在一棵子樹裡,也就不符合要求。反過來,選擇了所有葉子節點,可以證明它是可行的,所以葉子節點構成的集合滿足要求而且最小。如果k 0 k 0k 0直接求出度為1 11的點的數目就好了 如果k 1 k 1k 1,列舉刪哪條邊,我用 x...
紅與黑 計蒜客 T1211
題目鏈結 典型的深搜題,基礎題。蒜廠有一間長方形的房子,地上鋪了紅色 黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫乙個程式,計算你總共能夠到達多少塊黑色的瓷磚。輸入格式第一行是兩個整數 w和 h,分別表示 x 方向和 y 方向瓷磚的數量。w 和 h 都不超過 ...