[DP][RQNOJ 3822]选择题

来源:互联网 发布:超级基因优化液txt全集下载 编辑:程序博客网 时间:2024/04/27 22:48

描述

众所周知,如果一个函数在区间内可导,他必定连续。所以他想连续的图选择题,即对于第i个选择题,他只能涂与i-1相同的答案或者是i-1道选择题上一个活下一个选择题(第i-1道题涂了A,第i道只能涂A,B;第i-1道题涂了B,第i道只能涂A,B,C;第i-1道题涂了C,第i道只能涂B,C,D;第i-1道题涂了D,第i道只能涂C,D)。他已经知道了选择题答案,求他能获得的最大分数。注意每道题都一个不同的分数.

输入格式

首先输入一个数n表示一共有n个选择题。

以下共有n行,第i+1行共有一个ai字符和一个数字ci表示分别第i道选择题的答案和分数。

输出格式

输出一个数字,表示按照给定要求最多能够拿到的最大分数。

输入

8
B 1
A 4
B 1
C 1
D 9
C 1
C 9
D 7

输出

33

备注

ai属于{A,B,C,D}
0< ci<=10
对于25%的数据0< n<=5000
对于50%的数据0< n<=10000
对于100%的数据0< n<=500000

var w,dp:array[0..500000,1..4]of longint; n,l:longint; i,j,k:longint; t:char;function max(a,b:longint):longint;begin if a>b then exit(a) else exit(b);end;begin readln(n); for i:=1 to n do  begin   readln(t,l);   case t of   'A':w[i,1]:=l;   'B':w[i,2]:=l;   'C':w[i,3]:=l;   'D':w[i,4]:=l;   end;  end; for i:=1 to n do  begin   dp[i,1]:=max(dp[i-1,1],dp[i-1,2])+w[i,1];   dp[i,2]:=max(max(dp[i-1,1],dp[i-1,2]),dp[i-1,3])+w[i,2];   dp[i,3]:=max(max(dp[ i-1,2],dp[i-1,3]),dp[i-1,4])+w[i,3];   dp[i,4]:=max(dp[i-1,3],dp[i-1,4])+w[i,4];  end; writeln(max(max(max(dp[n,1],dp[n,2]),dp[n,3]),dp[n,4]));end.
0 0