程序員進(jìn)階之算法練習(xí)(二十三)

前言

7月泪喊,忙著學(xué)習(xí)ReactNative相關(guān)失息,這部分后續(xù)再詳細(xì)介紹,先抽點時間補(bǔ)上算法文集的更新直焙。

正文

1、Tennis Championship

題目鏈接
** 題目大意:**
n個人參加若干個比賽砂轻,比賽是1v1奔誓,輸?shù)娜瞬荒茉賲⒓颖荣悺?br> 如果一個人贏了k次,那么他只會與贏次數(shù)不小于k-1次的人比賽舔清;
問丝里,贏得最多的那個人曲初,能贏多少次体谒;
(n<=1e18)

** Example**
** input**
4
output
2
樣例解釋:四個人假設(shè)是ABCD,那么可以(A, B)臼婆,(C,D)分配抒痒,A和C贏了;再分配(A,C)颁褂,A贏了故响,共2次。

題目解析:
如果n個人颁独,直接兩兩匹配彩届,贏的人再兩兩匹配,這樣會浪費一部分人誓酒,因為贏k次的人是可以和k-1次的比賽樟蠕;
那么,保證每場比賽都是贏k次和k-1次的人靠柑,即可滿足最優(yōu)解寨辩;(注意,贏0次只能贏0次比)

那么k=1的時候歼冰,sum1=2;
k=2, sum2=2+1=3;
k=3, sum3=sum2+sum1=5;
k=4, sum4=sum3+sum2=8;
k=5, sum5=sum4+sum3=13;
...
sum[i] 表示一個人贏k次靡狞,需要sum[i]個人參與;
以此類推隔嫡,可以得到最大的k值甸怕。

2甘穿、Taxes

題目鏈接
** 題目大意:**
給出一個整數(shù)n(n<=2e9);
現(xiàn)在把n分成k個數(shù)的和蕾各,假設(shè)是a[i]扒磁,那么有:
a[1]+a[2]+a[3]...=n;(要求a[i]>=2, k>=1)
分出數(shù)字a[i]的cost式曲,為a[i]的最大因子妨托;(除去a[i])
分成k個數(shù)的代價為k個數(shù)字的cost和;

給出n吝羞,求分成若干個數(shù)字的最小cost兰伤。

** Examples**
** input**
4
** output**
2
樣例解釋:4=2+2,2的代價是1钧排,于是 cost=1+1=2

** 題目解析:**
分出數(shù)字a[i]的cost為a[i]的最大因子敦腔,那么分出素數(shù)的cost為1;
哥德巴赫猜想可以知道:
1恨溜、任一大于2的偶數(shù)符衔,都可表示成兩個素數(shù)之和;
2糟袁、任一大于5的整數(shù)都可寫成三個質(zhì)數(shù)之和判族。

于是有:
素數(shù)是1;
偶數(shù)是2项戴;
如果是奇數(shù)形帮, 那么最大為3;
還有一種情況是奇數(shù)=2+素數(shù)周叮,因為2也算素數(shù)辩撑,如果能拆出這種答案為2。

可怕的隊友提供的想法仿耽,下面是他短小精悍的代碼:

int isprime (int n) {
    for (int i = 2; i * i <= n; ++ i)if (n%i==0) return false;
    return true;
}
int main (){
    int n; cin >> n;
    int ans = 0;
    if (isprime(n)) ans = 1;
    else if(n%2==0) ans = 2;
    else {
        if(isprime(n-2)) ans = 2;
        else ans = 3;
    }
    cout<<ans<<endl;
    return 0;
}

3合冀、Sea Battle

題目鏈接
** 題目大意:**
n個格子排成一行,b個連續(xù)的格子可以放下一艘ship项贺,總共有a艘ship君躺;
ships可以相鄰,但是不能多個ship覆蓋同個格子敬扛;
現(xiàn)在朝這n個格子開槍晰洒,目前已經(jīng)打了k槍,但是沒有打中一艘ship啥箭;
現(xiàn)在問谍珊,還需要打多少槍,保證至少能打中一艘ship急侥。
n, a, b, k (1?≤?n?≤?2e5, 1?≤?a,?b?≤?n, 0?≤?k?≤?n?-?1)

** Examples**
** input**
5 1 2 1
00100
output
2
4 2
樣例解釋:
5 1 2 1 分別對應(yīng)n砌滞、a侮邀、b、k贝润;
00100 表示第3個格子已經(jīng)開槍打過绊茧;(題目保證1的數(shù)量等于k)

題目解析:
貪心。
從左到右打掘,只要出現(xiàn)連續(xù)的b個空的格子就打一槍华畏,假設(shè)總共打了m槍;
最后因為有a艘船尊蚁,答案就是m-a+1;(假設(shè)有3個位置亡笑,2艘船,那么只要打兩槍即可)

4横朋、Anton and Tree

題目鏈接
** 題目大意:**
n個點的樹仑乌,樹的節(jié)點有兩種黑色(黑、白)琴锭,有兩個操作:
1晰甚、path(u, v):表示u到v的最短路徑,包括u决帖、v厕九;
2、paint(v):u是樹上任意點古瓤,假如path(u, v)上所有節(jié)點的顏色相同止剖,那么u的顏色會change(黑白互換)腺阳;

如圖落君,給出一棵樹:



對節(jié)點3進(jìn)行paint操作之后:


現(xiàn)在給出一棵樹和節(jié)點顏色,求最少需要幾次paint操作亭引,使得樹上所有的節(jié)點顏色相同绎速。
n (1?≤?n?≤?200?000)

Examples
input
11
0 0 0 1 1 0 1 0 0 1 1
1 2
1 3
2 4
2 5
5 6
5 7
3 8
3 9
3 10
9 11
** output**
2

** 題目解析:**
相同的顏色縮點,得到一個黑白交替的樹焙蚓。
要使得整棵樹的節(jié)點顏色變成相同纹冤,可以找到最長的鏈,然后對著鏈的中間節(jié)點k购公,不斷進(jìn)行paint(k)操作即可萌京。
答案為最長鏈的長度/2。

要點:并查集縮點+dfs找最長鏈宏浩。

總結(jié)

第1題其實是斐波那契數(shù)列知残,但是用題意很好的包裝起來;
第3題是典型的貪心題目比庄,但是增加了a艘ship的變量求妹,對思考造成一定的影響乏盐;
1、3都很適合作為面試的題目制恍,2父能、4對一個未接觸過該方面知識的人來說不可解。
代碼都可以在github可以找到净神。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末何吝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鹃唯,更是在濱河造成了極大的恐慌岔霸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俯渤,死亡現(xiàn)場離奇詭異呆细,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)八匠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門絮爷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梨树,你說我怎么就攤上這事坑夯。” “怎么了抡四?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵柜蜈,是天一觀的道長。 經(jīng)常有香客問我指巡,道長淑履,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任藻雪,我火速辦了婚禮秘噪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘勉耀。我一直安慰自己指煎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布便斥。 她就那樣靜靜地躺著至壤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枢纠。 梳的紋絲不亂的頭發(fā)上像街,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼宅广。 笑死葫掉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跟狱。 我是一名探鬼主播俭厚,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驶臊!你這毒婦竟也來了挪挤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤关翎,失蹤者是張志新(化名)和其女友劉穎扛门,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纵寝,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡论寨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了爽茴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葬凳。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖室奏,靈堂內(nèi)的尸體忽然破棺而出火焰,到底是詐尸還是另有隱情,我是刑警寧澤胧沫,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布昌简,位于F島的核電站,受9級特大地震影響绒怨,放射性物質(zhì)發(fā)生泄漏纯赎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一窖逗、第九天 我趴在偏房一處隱蔽的房頂上張望址否。 院中可真熱鬧餐蔬,春花似錦碎紊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至词爬,卻和暖如春秃嗜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工锅锨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留叽赊,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓必搞,卻偏偏與公主長得像必指,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子恕洲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容