zoukankan      html  css  js  c++  java
  • Codeforces Round #116 (Div. 2, ACM-ICPC Rules) E. Cubes (尺取)

    题目链接:http://codeforces.com/problemset/problem/180/E

    给你n个数,每个数代表一种颜色,给你1到m的m种颜色。最多可以删k个数,问你最长连续相同颜色的序列的长度是多少。

    将相同颜色的下标存到对应颜色的容器中,比如ans[a[i]].push_back(i)就是将下标为i颜色为a[i]的数存到ans[a[i]]容器中。

    对于每种颜色序列,尺取一下 在差距小于k的情况下取能取到的最大长度。

     1 //#pragma comment(linker, "/STACK:102400000, 102400000")
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <cstdlib>
     5 #include <cstring>
     6 #include <cstdio>
     7 #include <vector>
     8 #include <cmath>
     9 #include <ctime>
    10 #include <list>
    11 #include <set>
    12 #include <map>
    13 using namespace std;
    14 typedef long long LL;
    15 typedef pair <int, int> P;
    16 const int N = 1e5 + 5;
    17 vector <int> ans[N];
    18 int a[N*2];
    19 
    20 int solve(int u, int k) {
    21     int len = ans[u].size(), notcnt = 0, cnt = 1, l = 0, res = 1;
    22     //notcnt表示中间删除数的多少,cnt表示颜色为u的序列的长度
    23     for(int i = 1; i < len; ++i) {
    24         int v = ans[u][i];
    25         notcnt += v - ans[u][i - 1] - 1; 
    26         cnt++;
    27         while(notcnt > k && l <= i) { 
    28             notcnt -= ans[u][l + 1] - ans[u][l] - 1;
    29             cnt--;
    30             l++;
    31         }
    32         res = max(cnt, res);
    33     }
    34     return res;
    35 }
    36 
    37 int main()
    38 {
    39     int n, m, k;
    40     scanf("%d %d %d", &n, &m, &k);
    41     for(int i = 1; i <= n; ++i) {
    42         scanf("%d", a + i);
    43         ans[a[i]].push_back(i);
    44     }
    45     int res = 1;
    46     for(int i = 1; i <= m; ++i) {
    47         if(ans[i].size()) { //要是存在颜色为i的数
    48             res = max(res, solve(i, k));
    49         }
    50     }
    51     printf("%d
    ", res);
    52     return 0;
    53 }
  • 相关阅读:
    Catharanthus roseus(长春花碱)的生物合成
    论文好句积累
    C# OpenFileDialog用法
    JAVA配置环境变量的意义
    如何为织梦表单添加时间
    winform开发基础
    tomcat中jsp编译
    垂直居中——父元素高度确定的单行文本、父元素高度确定的多行文本
    水平居中——行内元素、定宽块、不定宽块
    批处理文件
  • 原文地址:https://www.cnblogs.com/Recoder/p/5724138.html
Copyright © 2011-2022 走看看