zoukankan      html  css  js  c++  java
  • CF1307C Cow and Message(思维 + 前缀和)

    Cow and Message

    思路:我们可以发现,超过两位的字符一定先包含两位相同的字符,所以我们只需统计长度为1和长度为2的字符。我们只需枚举所有两位字符的情况就可,用前缀和可以快速算出哪些位置有几个该字符,当然,统计每个字符下标,然后二分也可以。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <functional>
     5 #include <set>
     6 #include <vector>
     7 #include <queue>
     8 #include <cstring>
     9 #include <stack>
    10  
    11 using namespace std;
    12  
    13 #define ll long long
    14 #define pb push_back
    15 #define fi first
    16 #define se second
    17  
    18  
    19 void solve(){
    20  
    21     string str;
    22     cin >> str;
    23     int n = (int)str.size();
    24      vector<vector<int > > pos(26);
    25      vector<vector<int > > pre(26, vector<int >(n + 1));
    26      //坐标+1
    27      for(int i = 0; i < n; ++i){
    28          int x = str[i] - 'a';
    29          for(int j = 0; j < 26; ++j) pre[j][i + 1] = pre[j][i];
    30          pre[x][i + 1] += 1;
    31          pos[x].pb(i + 1);
    32      }
    33      ll Max_cnt = 0;
    34      for(int i = 0; i < 26; ++i) Max_cnt = max(Max_cnt, (ll)pos[i].size());
    35      for(int fi = 0; fi < 26; ++fi){
    36          if((int)pos[fi].size() == 0) continue; //不存在
    37  
    38          for(int se = 0; se < 26; ++ se){
    39              ll cnt = 0;
    40              
    41              if((int)pos[se].size() == 0) continue; //不存在
    42              for(auto inx : pos[fi]){
    43                  cnt += pre[se][n] - pre[se][inx];
    44              }
    45              Max_cnt = max(Max_cnt, cnt);
    46          }
    47          
    48      }
    49      cout << Max_cnt << endl;
    50 }
    51  
    52 int main(){
    53     
    54     ios::sync_with_stdio(false);
    55     cin.tie(0);
    56     cout.tie(0);
    57     solve();
    58     
    59     return 0;
    60 }
  • 相关阅读:
    三层架构(我了解并详细分析)
    define a class for a linked list and write a method to delete the nth node.
    无阻塞情况connect生产EINPROGRESS错
    辛星和你解读PHP递归
    Android -- Looper.prepare()和Looper.loop() —深度版
    Canvas翻转方法
    BP神经网络的基本原理
    muduo网络图书馆评测
    HBASE
    MySQL
  • 原文地址:https://www.cnblogs.com/SSummerZzz/p/12800609.html
Copyright © 2011-2022 走看看