騰訊2020校園招聘 假期

2021-10-05 09:37:05 字數 2601 閱讀 9707

一、題目描述

二、題目分析

三、**

由於業績優秀,公司給小q放了 n 天的假,身為工作狂的小q打算在在假期中工作、鍛鍊或者休息。他有個奇怪的習慣:不會連續兩天工作或鍛鍊。只有當公司營業時,小q才能去工作,只有當健身房營業時,小q才能去健身,小q一天只能幹一件事。給出假期中公司,健身房的營業情況,求小q最少需要休息幾天。

輸入描述:

第一行乙個整數  表示放假天數

第二行 n 個數 每個數為0或1

,第 i 個數表示公司在第 i 天是否營業

第三行 n 個數 每個數為0或1

,第 i 個數表示健身房在第 i 天是否營業

(1為營業 0為不營業)

輸出描述:

乙個整數,表示小q休息的最少天數
輸入例子1:

411

0001

10

輸出例子1:

2
例子說明1:

小q可以在第一天工作,第二天或第三天健身,小q最少休息2天
這顯然是一道動規題,我們可以選擇讓小q工作或者鍛鍊的時間最長從而讓小q的休息時間最少

先捋一下動規的步驟:

第⼀步, ⼀定要明確 dp 陣列的含義

首先我們需要明確動規的狀態:顯然只有三種狀態:工作、鍛鍊、休息,那麼我們怎麼在dp陣列中表示出來呢??

其實還有一種狀態,就是休假的天數,因為天數是在動態變化的,所以也需要記錄,而工作、鍛鍊、休息不會出現連續的鍛鍊和工作,所以可以用乙個二維陣列來表示:dp[

i][j

]dp[i][j]

dp[i][

j]= ==k

kk;意思是:在第i天j狀態下最小的休息天數

規定:dp[

i][0

]dp[i][0]

dp[i][

0]代表在第i天休息的情況下小q最少的休息天數;

d p[

i][1

]dp[i][1]

dp[i][

1]代表在第i天鍛鍊的情況下小q最少的休息天數;

d p[

i][2

]dp[i][2]

dp[i][

2]代表在第i天工作的情況下小q最少的休息天數;

如:dp[3][0] = k;代表第3天休息的情況下小q的最少休息天數為k;

第⼆步, 定義 base case

dp陣列出來了,base case就比較簡單了dp[

0][0

]=

0dp[0][0] = 0

dp[0][

0]=0

d p[

0][1

]=

0dp[0][1] = 0

dp[0][

1]=0

d p[

0][2

]=

0dp[0][2] = 0

dp[0][

2]=0

還沒開始休假整個錘子~~~~

第三步, 找狀態轉移⽅程

到這裡我們就需要找狀態轉移方程

最後我們要求的結果就儲存在min

(dp[

n][0

],mi

n(dp

[n][

1],d

p[n]

[2])

)min(dp[n][0], min(dp[n][1], dp[n][2]))

min(dp

[n][

0],m

in(d

p[n]

[1],

dp[n

][2]

))中

# include

# include

# include

using

namespace std;

intmain()

if( work[i-1]

==1)//可以休息,選工作和鍛鍊最小的 +1

dp[i][0

]=min(dp[i-1]

[0],

min(dp[i-1]

[1], dp[i-1]

[2])

)+1;

}//返回結果

int res =

min(dp[n][0

],min(dp[n][1

], dp[n][2

]));

cout<}}

騰訊2020校園招聘 後台

小q在週末的時候和他的小夥伴來到大城市逛街,一條步行街上有很多高樓,共有n座高樓排成一行。小q從第一棟一直走到了最後一棟,小q從來都沒有見到這麼多的樓,所以他想知道他在每棟樓的位置處能看到多少棟樓呢?當前面的樓的高度大於等於後面的樓時,後面的樓將被擋住 輸入描述 輸入第一行將包含乙個數字n,代表樓的...

騰訊2020校園招聘 後台(3)

乙個簡單的動態規劃,注釋寫的很明白了 var n parseint readline var p1 newarray n var p2 newarray n var line readline var lines line.split for let i 0 i n i line readline ...

騰訊2020校園招聘 後台 程式設計題

a 壓縮演算法 做法 遞迴處理每個匹配的 中的單詞,再拼接起來。b 逛街 做法 假設現在在i樓,一定可以看到i 1和i 1的樓,i 往左看是形成的序列是乙個單調增的序列,用單調棧可以求出離當前樓最近,而且高度還要高於當前樓的樓。c 逆序對 做法 把序列的歸併樹畫出來,每一層是由許多段構成的。而每一層...