题解 | 小苯的ovo2.0

小苯的ovo2.0

https://www.nowcoder.com/practice/e9745dcd7c534bc4beda0f7ee13addca

import java.util.*;

public class Main{
    static Scanner in = new Scanner(System.in);
    static final int inf = -0x3f3f3f3f;
    static void solve(){
        String s = in.nextLine();
        //System.out.println(s.length());
        int cnto = 0;
        int cntq = 0;
        for(int i = 0; i < s.length(); i++){
            if(s.charAt(i) == 'o') cnto ++;
            if(s.charAt(i) == '?') cntq ++;
        }
        long[][] f = new long[s.length() + 5][s.length() + 5];
        long ans = 0;
        int n = s.length();
        for(int i = cnto; i <= cnto + cntq; i++){
            for(int j=0;j<=n;j++)
                for(int k=0;k<=i;k++)
                    f[j][k] = inf;
            f[0][0] = 0;
            for(int j = 1; j <= n; j++){
               for(int k = 0;k <= i;k++){
                    if(s.charAt(j-1) != 'o' && f[j-1][k] != inf){
                        f[j][k] = Math.max(f[j][k], f[j-1][k] + (long)(i-k)*k);
                    }
                    if(s.charAt(j-1) != 'v' && k > 0 && f[j-1][k-1] != inf){
                        f[j][k] = Math.max(f[j][k], f[j-1][k-1]);
                    }
               }
            }
            ans = Math.max(ans, f[n][i]);
        }
        System.out.println(ans);
    }
    public static void main(String[] args){
        int T = in.nextInt();
        String ss = in.nextLine();
        while(T-- > 0) solve();
    }
}

全部评论
点赞 回复 分享
发布于 03-30 14:54 河北

相关推荐

03-03 23:42
复旦大学 Java
_无论云泥意贯一:把复旦大学放前面,山东大学放后面,并且在两个大学后面标注985(用一些显眼的颜色标注)
点赞 评论 收藏
分享
04-08 23:37
已编辑
东华大学 结构工程师
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务