-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兩數字組成,...