題意:有n種花,每種1支,有m個花瓶,現在給出每種花放在每個花瓶中的美觀程度(可能小於0),並且在擺放的時候要求,第i種花必須在第i+1種花的前面,問你如何擺花使得美觀程度最大並且輸出每種花應該擺在哪個花瓶中,如果有多種方案則輸出字典序小的方案。
狀態轉移由題,我們必須按照順序去擺放這些花,我們不妨用f[i][j]表示前i種花放在了前j個花瓶中並且第j個花瓶剛好是第i種花的最大美觀程度,那麼對於下一種花,我只能擺放在[j+1,m]的花瓶中,所以f[i][j]是由max(f[i-1][i-1]~f[i-1][j-1])+a[i][j]轉化而來。
路徑的儲存與輸出:我們每次會在f[i-1][i-1]~f[i-1][j-1]中選取乙個最大的作為繼承去傳遞給f[i][j],那麼我們只需要記錄f[i][j]這個狀態是由哪個狀態轉移過來的,最後依次向前找即可。
#include
#define endl '\n'
#define null null
#define ls p<<1
#define rs p<<1|1
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define ll long long
//#define int long long
#define pii pair
#define ull unsigned long long
#define all(x) x.begin(),x.end()
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ct cerr<<"time elapsed:"<<1.0*clock()/clocks_per_sec<<"s.\n";
char
*fs,
*ft,buf[
1<<20]
;#define gc() (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<20,stdin),fs==ft))?0:*fs++;
inline
intread()
while
(ch>=
'0'&&ch<=
'9')
return x*f;
}using
namespace std;
const
int n=
1e3+5;
const
int inf=
0x3f3f3f3f
;const
int mod=
998244353
;const
double eps=
1e-20
;const
double pi=
acos(-
1);int a[
105]
[105
],f[
105]
[105];
pii path[
105]
[105];
signed
main()
}for
(int i=
1;i<=m;i++
) f[0]
[i]=0;
for(
int i=
1;i<=n;i++)}
}int res=
-inf,p;
for(
int i=n;i<=m;i++)}
cout
mp(n,p)
; vector<
int>ans;ans.
clear()
;while
(x.first!=0)
for(
int i=ans.
size()
-1;i>=
0;i--
) cout<}
AcWing 31 表示數值的字串
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。注意 小數可以沒有整數部分,例如.123等於0.123 小數點後面可以沒有數字,例如...
AcWing寒假每日一題 Day31比例簡化
在社交 上,經常會看到針對某乙個觀點同意與否的民意調查以及結果。例如,對某一觀點表示支援的有1498人,反對的有902人,那麼贊同與反對的比例可以簡單的記為1498 902。不過,如果把調查結果就以這種方式呈現出來,大多數人肯定不會滿意。因為這個比例的數值太大,難以一眼看出它們的關係。對於上面這個例...
31期 31期 感想
手機不知道什麼時候沒電了,開啟以後忽然發現時間竟然已經快寫進了六月下旬,細數在兄弟連的日子已經有四十天了,慢慢變熱的也慢慢充實的四十天。來北京已經近一年的時間了,還好我是乙個很適應環境的人,北京的繁華北京的國際化都給了我很多的感悟。畢業幾年的時間一直沒有做所學專業的工作,典型的80 後所有的歡樂和無...