zoukankan      html  css  js  c++  java
  • 洛谷 P2697 宝石串

    题目传送门

    解题思路:

    将红色的设置为-1,绿色的为1,统计前缀和sum,如果sum[i] == sum[j],则说明i~j是一个稳定的区间

    因为答案要求最大,所以我们要记录每个sum值的最左端点(也就是哪个位置第一次出现某个sum值)

    每当遇到某个sum值,便利用最左端点求出区间长度,更新答案

    吐槽:洛谷标签里是个DP,我就没往其他方面考虑,实在想不出来看了一下题解,tm我信你个鬼,这tm算DP?******(some bad words)反正我不认为这是个DP

    最终结论:我太菜了......

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 
     5 using namespace std;
     6 
     7 string l;
     8 int pos[2000006],sum[2000006],ans;
     9 
    10 inline int max(int a,int b) {
    11     if(a >= b) return a;
    12     return b;
    13 }
    14 
    15 inline int min(int a,int b) {
    16     if(a >= b) return b;
    17     return a;
    18 }
    19 
    20 int main() {
    21     cin >> l;
    22     int len = l.length();
    23     for(int i = 1;i <= len; i++)
    24         if(l[i-1] == 'R') sum[i] = -1;
    25         else sum[i] = 1;
    26     memset(pos,0x3f3f3f,sizeof(pos));
    27     pos[len] = 0;
    28     for(int i = 1;i <= len; i++) {
    29         sum[i] += sum[i-1];
    30         pos[sum[i]+len] = min(i,pos[sum[i]+len]);
    31         ans = max(ans,i - pos[sum[i]+len]);
    32     }
    33     printf("%d",ans);
    34     return 0;
    35 }
  • 相关阅读:
    JS一些概念知识及参考链接
    CSS中浮动属性float及清除浮动
    前端一些概念知识及参考链接
    CSS中属性百分比的基准点
    CSS中的单位
    css居中问题
    Vue使用的扩展
    vue使用中的问题总结
    CSS中的position属性
    CSS中的flex布局
  • 原文地址:https://www.cnblogs.com/lipeiyi520/p/12293358.html
Copyright © 2011-2022 走看看