這題dp即可。
我們先求出rank[i]表示「a[k]=i」中的k。
設f[i][j]表示第i位放j的最大價值和。
我們可以分情況討論:
(對於a[i])
1:第a[i-1]位的字母小於第a[i]位的字母,直接取max即可。
2:第a[i-1]位的字母等於第a[i]位的字母,且第a[i]+1位的大於第a[i-1]+1位的,取max。
最後輸出max(f[n][i])即可。
上標:
#include
#define ll long long
#define n 100010
#define max(x,y) x>y ? x:y
using namespace std;
int n,a[n]
,rank[n]
,w[n][27
];ll x,f[n][27
],ans=0;
inline
intread()
void
update
(ll &x)
bool check
(int x,
int y)
intmain()
for(
int i=
1;i<=
26;i++
) ans=
max(ans,f[n]
[i])
;printf
("%lld\n"
,ans)
;return0;
}
五校聯考3day2 B
這題dp即可。我們先求出rank i 表示 a k i 中的k。設f i j 表示第i位放j的最大價值和。我們可以分情況討論 對於a i 1 第a i 1 位的字母小於第a i 位的字母,直接取max即可。2 第a i 1 位的字母等於第a i 位的字母,且第a i 1位的大於第a i 1 1位的,...
JZOJ 4227 五校聯考3day2 B
傳送門 求對乙個字串在符合其字尾陣列的順序下填上任意字母使得和最大 不知道為什麼可以想到dpdp dp但其實dpdp dp方程還是很好理解的 設f i j f i j f i j 表示填到第i ii位,當前這一位應填jjj include include include include includ...
五校聯考3day2 A
這題考場考慮不太全 但相比於60,其它90分的人,還是很全的 long long我是開了的,然後後面的特判我也是加了的,可是竟然打錯了?其實這題不需要打的像我這樣麻煩 設a i 表示i點還需連線的邊數 ans表示sigma a i max表示max a i 如果max ans 2,就說明全部連項那個...