3 28學習心得

2021-10-04 12:31:29 字數 2189 閱讀 5488

本週主要練習了一些分治演算法和動態規劃的題目.

第一題。光榮的夢想

prince 對他在這片大陸上維護的秩序感到滿意,於是決定啟程離開艾澤拉斯。在他動身之前,prince 決定賦予 king_bette 最強大的能量以守護世界、保衛這裡的平衡與和諧。在那個時代,平衡是個夢想。因為有很多奇異的物種擁有各種不穩定的能量,平衡瞬間即被打破。kb 決定求助於你,幫助他完成這個夢想。

一串數列即表示乙個世界的狀態。

平衡是指這串數列以公升序排列,而從一串無序數列到有序數列需要通過交換數列中的元素來實現。kb 的能量只能交換相鄰兩個數字。他想知道他最少需要交換幾次就能使數列有序。

輸入格式:

第一行為數列中數的個數 n nn(n nn ≤ 100000 100000100000)。

第二行為 n nn 個數 a1 a_1a1​

~an a_nan​

(每個數小於 100000 100000100000),表示當前數列的狀態。

輸出格式:

輸出乙個整數,表示最少需要交換幾次能達到平衡狀態。

樣例資料:輸入4

2 1 4 3輸出2

這題看上去是讓求最小次數交換讓序列變為有序序列,我剛開始就在排序的方向上考慮,好像我所知道的排序方式都並不是最小次數交換的排序,那到底用什麼排序方式呢,後來我才發現這題根本不是排序問題,因為只要排序,就需要有逆序對,只要有逆序對就要排序,所以這題就是讓求逆序對的對數,以前做過這題,用樹狀陣列實現。

#include

using

namespace std;

int n,k;

int c[

100005];

long

long ans=

0,s;

intmain()

cout

}

第二題,是分治演算法的月度開銷

題目描述】

農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n (1 ≤ n ≤ 100,000) 天裡每天需要的開銷。

約翰打算為連續的m (1 ≤ m ≤ n) 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個fajo月包含一天或連續的多天,每天被恰好包含在乙個fajo月裡。

約翰的目標是合理安排每個fajo月包含的天數,使得開銷最多的fajo月的開銷盡可能少。

【輸入】

第一行包含兩個整數n,m,用單個空格隔開。

接下來n行,每行包含乙個1到10000之間的整數,按順序給出接下來n天裡每天的開銷。

【輸出】

乙個整數,即最大月度開銷的最小值。

【輸入樣例】

7 5100

400300

100500

101400

【輸出樣例】

500題目就是八n個連續的部分分成連續的m個部分,使得m個部分中最大的部分最小,以我的思考,一上來就會想到min(max(1,2,3…m))這種最直接的貪心方式,但是m個部分怎麼分,如果能把所有分法都遍歷一遍是可以的,但是實在沒有具體思路,於是我就看大佬們是怎麼做的這題。我發現他們都用二分法來解決的這題於是我也學習了一下,我是第一次運用二分法來做題.我感覺二分法就是,快速的遍歷的方法吧。

首先找左右端點,然後結束條件內left>=right,check(mid)然後主要是check函式怎麼寫的問題,只要有連續的月超過了這個mid,月份就加一,如果月份小於等於m,就返回1,否則返回0。這樣最後就能找到那個數了。

#include

#include

#include

using

namespace std;

int n,m,a[

100005

],maxx=

0,tot,ans;

bool

check

(int x)

else

sum+

=a[i];}

if(y<=m)

return1;

else

return0;

}int

main()

int l=maxx,r=tot,mid;

while

(l<=r)

else

l=mid+1;

} cout<}

我這週主要做分治沒怎麼做動態規劃,要在週末補一下了。

學習心得 python學習心得

自從來了深圳工作以後,尤其是屢屢面試碰壁以後。發現其實自己的知識面很窄,做筆試題的時候絞盡腦汁還是漏洞百出,並不是不會做,而是出現一大堆不該有的失誤。每次被問道,對資料庫了解嗎?說一大堆看起來很高階的東西 好啊,那我們寫幾個sql語句吧。馬上完蛋了,沒了手冊關鍵字都記不起。了解哪幾種指令碼語言,sh...

學習心得 我的學習心得

我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...

Spring學習心得

不看不知道,一看便學到,會不會與您產生共鳴呢?喜歡再捧場拍磚 spring使用從一年前開始,邊學習邊開發。這裡講講我的學習心得。第一條 記住ioc就是spring的一切。而掌握ioc的唯一方法就是使用和思考。spring是ioc為核心的,所以第一步就是要深刻理解ioc,最好是能盡快把ioc作為教條式...