/*
description
以下**可以從陣列a中找出第k小的元素。
它使用了類似快速排序中的分治演算法,期望時間複雜度是o(n)的。
請仔細閱讀分析原始碼,填寫劃線部分缺失的內容。
input
見上文描述。
output
注意:只填寫劃線部分缺少的**,不要抄寫已經存在的**或符號。
*///注意:題目要求的是時間複雜度是要o(n)的時間複雜度,所以執行結果正確的話答案也不一定正確。做此題時需要了解快速排序與分冶演算法
#include
intquick_select
(int a,
int l,
int r,
int k)
int i = l, j = r;
while
(i < j)
while
(i < j && a[j]
> x) j--;if
(i < j)
} a[i]
= x;
p = i;
if(i - l +
1== k)
return a[i];if
(i - l +
1< k)
return
quick_select
( a, i+
1, r, k-
(i-l+1)
);//填空
else
return
quick_select
(a, l, i -
1, k);}
intmain()
;printf
("%d\n"
,quick_select
(a,0,14
,5))
;return0;
}
description
給定三個整數陣列
a = [a1, a2, … an],
b = [b1, b2, … bn],
c = [c1, c2, … cn],
請你統計有多少個三元組(i, j, k) 滿足:
1 <= i, j, k <= n
ai < bj < ck
input
第一行包含乙個整數n。
第二行包含n個整數a1, a2, … an。
第三行包含n個整數b1, b2, … bn。
第四行包含n個整數c1, c2, … cn。
對於30%的資料,1 <= n <= 100
對於60%的資料,1 <= n <= 1000
對於100%的資料,1 <= n <= 100000 0 <= ai, bi, ci <= 100000
output
乙個整數表示答案。
sample input 1
31 1 1
2 2 2
3 3 3
sample output 127/
/思路:首先從 1 <= n <= 100000 知道,這道題最多只能有單層迴圈,我們利用函式 sort 分別將a,b,c陣列排序 ,再遍歷一遍b陣列,
求出比在a中比b中乙個元素小的元素個數m,再求出c中b中乙個元素大的元素個數n,mn便是b中該數可以構成的 所有組合,再將所有組合求和即為最終答案/
//sort函式用於c++中,對給定區間所有元素進行排序,預設為公升序,也可進行降序排序。sort函式進行排序的時間複雜度為n*log2n,比冒泡之類的排序演算法效率要高,sort函式包含在標頭檔案為#include的c++標準庫中
#include
#include
using
namespace std;
intmain()
cout
}
/*
description
如圖p1.png所示的螺旋折線經過平面上所有整點恰好一次。
對於整點(x, y),我們定義它到原點的距離dis(x, y)是從原點到(x, y)的螺旋折線段的長度。
例如dis(0, 1)=3, dis(-2, -1)=9
給出整點座標(x, y),你能計算出dis(x, y)嗎?
x和y對於40%的資料,-1000 <= x, y <= 1000
對於70%的資料,-100000 <= x, y <= 100000
對於100%的資料, -1000000000 <= x, y <= 1000000000
output
輸出dis(x, y)
sample input 1
0 1sample output 1
3*///思路:根據其對測試資料的大小範圍,此題的複雜度只能為 o(1) ,所以推測不能有迴圈出現,以及利用該圖的對角線來觀察,會發現所求點路徑大小與距離最近對角線上的點之間的關係,所以分四種情況來說明即可
#include
#include
using
namespace std;
intmain()
else
if(x>0&&
abs(y)
<=x)
else
if(x<0&&
-x>=y)
else
if(y<0&&
-y>=x)
sum=(2
*cnn+cnn*
(cnn-1)
*2)+
(4*cnn+cnn*
(cnn-1)
*2);
cout<}
結語 藍橋杯第九屆決賽
x星球的鈔票的面額只有 100元,5元,2元,1元,共4種。小明去x星旅遊,他手裡只有2張100元的x星幣,太不方便,恰好路過x星銀行就去換零錢。小明有點強迫症,他堅持要求200元換出的零鈔中2元的張數剛好是1元的張數的10倍,剩下的當然都是5元面額的。銀行的工作人員有點為難,你能幫助算出 在滿足小...
第九屆藍橋杯C組 一二題
小明被不明勢力劫持。後被扔到x星站再無問津。小明得知每天都有飛船飛往地球,但需要108元的船票,而他卻身無分文。他決定在x星戰打工。好心的老闆答應包食宿,第1天給他1元錢。並且,以後的每一天都比前一天多2元錢,直到他有足夠的錢買票。請計算一下,小明在第幾天就能湊夠108元,返回地球。public c...
第九屆藍橋杯 螺旋折線
如圖p1.png所示的螺旋折線經過平面上所有整點恰好一次。對於整點 x,y 我們定義它到原點的距離dis x,y 是從原點到 x,y 的螺旋折線段的長度。例如dis 0,1 3,dis 2,1 9 給出整點座標 x,y 你能計算出dis x,y 嗎?輸入格式 x和y 對於40 的資料,1000 x,...