AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 应用
  • 更多
    • 题解
    • 分享
    • 商店
    • 问答
    • 吐槽
  • App
  • 登录/注册

AcWing 3422. 左孩子右兄弟 0.02 AC币

作者: 作者的头像   y总的小迷弟 ,  2023-02-01 18:00:42 ,  所有人可见 ,  阅读 5


0


1、首先说前面相乘是什么情况–GGGHGGGG,比如这样的情况的牛,左边取1头G右边取1头加上中间H,就组成了GHG,这就是一个孤独的牛,需要删掉,然后右边取到GGGG都是一样,可以组成孤独的牛,然后在左边取两头,右边全部取,这样就是两个数的乘积的结果,
2、然后加上左边 - 1的长度,需要满足长度是3,所以左边是GGGH,左边不同的牛长度是3,你不能直接就取3,要留出一个组成跟中间点组成GH来达到长度是3,所以就是左边剩下两头G,取一头跟两头可以组成两种情况 ,就有G+GH , GG + GH,这样两种情况就是左边长度 - 1;
3、右边同理

import java.util.*;
import java.io.*;
public class Main{
    static int N = 500010;
    static char[] g = new char[N];//存储所有牛
    public static void main(String[] args)throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter wt = new PrintWriter(new OutputStreamWriter(System.out));
        Scanner scan = new Scanner(System.in);
        int n = Integer.parseInt(bf.readLine());//输入n
        g = bf.readLine().toCharArray();//输入所有牛

        long res = 0;
        for (int i = 0 ; i < n ; i ++){  //枚举所有牛
            int lhs = 0; //当前这头牛的左边不同的连续的牛
            //i > 0保证了左边这头牛,如果是=0,那么左边没有牛
            //并且左边跟他不相等的数的长度
            if (i > 0 && g[i] != g[i - 1]){   
                lhs ++;
                //然后看左边最长不超过边界的最长的不同的牛 
                for (int j = i - 2;j >= 0 && g[j] != g[i]; j -- ) lhs ++;
            }
            int rhs = 0;//当前这头牛的右边不同的连续的牛
            //i + 1 < n 保证了右边这头牛,如果是>n,那么右边超过边界没有牛
            //并且右边跟他不相等的数的长度
            if (i + 1 < n && g[i + 1] != g[i]){
                rhs ++;
                //然后看右边最长不超过边界的最长的不同的牛 
                for (int j = i + 2 ; j < n  && g[j] != g[i]; j ++) rhs ++;
            }
            //每次累加所有的牛的应该扔掉的孤独照片
            //左边跟右边的所有点都可以跟中间当前点组成
            //(左边长度*右边长度 + 左边的长度 - 1 + 右边的长度 - 1)
            ///为什么左边减1呢,因为长度最低是3,所以要留出 一个当前点跟左边一个点,
            //然后跟左边其他点组成3以上的长度,右边同理
            res += (long)lhs * rhs + (long)Math.max(0,lhs - 1) + (long)Math.max(0,rhs - 1);
        }
        System.out.println(res);
        wt.flush();
    }
}

0 评论

你确定删除吗?
1024
x

© 2018-2023 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息