SDU程式設計思維與實踐作業Week10

2021-10-05 21:20:14 字數 2770 閱讀 7611

-1

本題直接暴力就可以了
#include

32

1.lis:最長上公升子串行(嚴格遞增)

我們只需要記錄0~i的最長上公升子串行就可以了

計算i+1時 若 存在j#include

using

namespace std;

const

int maxn =

1e4;

long

long a[maxn]

,b[maxn]

;long

long mark[maxn]

;long

long c[maxn]

[maxn]

;//儲存 a中元素在b**現的位置

10

這是一道拿數問題的變種(dp解決)

實際上僅僅是吧每個數的個數增加了,因此我們更新時增加的數不再是數字本身而是數字*個數

拿數問題:

要從一組數中拿數,但拿完之後x-1、x+1均不可取,我們構建dp[i]為i拿數後的最大值,那麼i+1如何取,i+1有兩種可能,若i被取了那麼i+1不可取,若i-1被取了那麼i可取那麼dp[i]為二者的較大值(只不過此處若取i增加的數量為 x*num_x

#include

using

namespace std;

const

int maxn =

1e6+

500;

long

long num[maxn]

,dp[maxn]

,ele[maxn]

;long

long mx =-1

,mn = maxn,curr;

intmain()

for(

int i=

0;i)for

(int i=mn;i<=mx;i++)if

(i==mn) dp[i]

= i*num[i]

;else

if(i==mn+

1) dp[i]

=max

(dp[i-1]

,i*num[i]);

else dp[i]

=max

(dp[i-1]

,dp[i-2]

+ i*num[i]);

cout<

<

return0;

}

SDU 程式設計思維與實踐 Week15 思維題

新式字串定義如下 長度為偶數 可以為空 每乙個奇數字置的字元都不等於它後面的那個字元 例如,字串 good string xyyx 都符合要求,而字串 bad aa aabc 則不符合。現在你獲得了乙個字串 s,你需要從該字串中刪除最少的字元數,使其變成乙個新式字串 include include ...

SDU程式設計思維Week10 作業 A 簽到題

一開始他有乙個數字n,他的目標是把它轉換成m,在每一步操作中,他可以將n乘以2或乘以3,他可以進行任意次操作。輸入的唯一一行包括兩個整數n和m 1 n m 5 10 8 輸出將n轉換成m的操作次數,如果轉換不了輸出 1。input 1 12051840 output 1 7input 2 4242 ...

程式設計思維與實踐 Week2 作業

b題 倒水問題 bfs 東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。既然已經知道了地圖,那麼東東找到妹紙就不難了,請你編乙個程式,寫出東東找到妹紙的最短路線。input 輸入是乙個5 5的二維陣列,僅由0 1兩數字組成,...