n根棍子,i號棍子的長度為ai。從中選出3根棍子組成周長盡可能長的三角形。輸出最大的周長,如果不能組成三角形,輸出0。o(n^3)限制條件:3 <= n <= 100;1 <= ai <= 10^6
#include
using namespace std;
int numberset[
100]
;int
main()
for(
int i =
0;i < num;i++)}
}}cout << ans << endl;
return0;
}
白書上說還有一種o(nlogn)的做法,查了一下
與上面的重要區別就是讀入邊長後先進行排序,因為我們要做的判斷是兩邊之和》第三邊(max),那麼排序後如果總的max值比其後兩邊長的和還要大,就不必再依次判斷,含有這個總max的組合一定是無法組成三角形的。這是就再重複上面的過程,對次大,次次大……進行判斷。同樣的,如果max比其後兩邊的和要小,一次判斷說明可以組成三角形。
(因為我們的題目求的是周長盡可能大,也就是邊長的選用要盡可能大)
#include
#include
using namespace std;
int numberset[
100]
;int
main()
sort
(numberset, numberset + num)
;for
(int i = num -
1;i >=
2;i--)}
cout << ans << endl;
return0;
}
n只螞蟻以每秒1cm的速度在長為lcm的竿子上爬行。當螞蟻爬到竿子的端點時就會掉落。由於竿子太細,兩隻螞蟻相遇時,它們不能交錯通過,只能各自反向爬回去。對於每只螞蟻,我們知道它距離竿子左端的距離xi,但不知道它當前的朝向。請計算所有螞蟻落下竿子所需的最短時間和最長時間。o(2^n)窮竭搜尋列舉所有螞蟻的初始朝向組合1 <= l <= 10^6
1 <= n <= 10^6
0 <= xi <= l
o(n)
#include
#include
using namespace std;
int l,
//桿子長度
n;//螞蟻隻數
int a[
100000];
intmain()
sort
(a, a + n)
; cout <<
"min = "
<< a[0]
; cout <<
"max = "
<< a[n-1]
;return0;
}
這裡有乙個問題,題目輸入給出的距離是針對左端點的。而我們的螞蟻是可以雙向移動的,所以如果用sort只是找到了距離左端點最近和最遠的兩隻螞蟻,但是如果他們可以往右走,結果完全可以不同。
#include
#include
using namespace std;
int l,
//桿子長度
n,//螞蟻隻數
}
binary_search的實現
FC坦克大戰熱身
學了近三個月的彙編級底層知識,期間大部分時間都是看書,看書,看書.編碼才是王道啊,暫時不 不務正業 了,決定持續做一些小專案來鍛鍊自己的物件導向設計能力,實踐設計模式以及開始學uml.這兩周多花了每天深夜和週末的空閒時間,基本模仿出了fc上的坦克大戰的樣子,用的是hge 2d引擎.關卡編輯器是用mf...
軟工熱身作業
專案內容 這個作業屬於哪個課程 2021春季軟體工程 這個作業的要求在 第一次閱讀作業 我在這個課程的目標是 初步獲得軟體工程師的能力 這個作業在哪個具體方面幫助我實現目標 激發程式設計熱情,審視自身情況 1.你為什麼選擇計算機專業?你認為你的條件如何?和這些博主比呢?選擇計算機專業主要有兩個原因,...
軟工熱身作業
專案內容 這個作業屬於哪個課程 2021春季軟體工程 羅傑 任健 這個作業的要求在 2021年軟工 熱身閱讀作業 我在這個課程的目標是 認真完成課程要求並提高相應能力 這個作業在哪個具體方面幫助我實現目標 對自己有乙個更為清晰的認識 scalers表示大學生上課一定要認真聽講,這一點我並不是完全贊同...