CodeForces 180E Cubes(vector+尺取)
来源:互联网 发布:to do list软件 编辑:程序博客网 时间:2024/05/21 17:06
题目链接:点击打开链接
Let's imagine that you're playing the following simple computer game. The screen displaysn lined-up cubes. Each cube is painted one ofm colors. You are allowed to delete not more thank cubes (that do not necessarily go one after another). After that, the remaining cubes join together (so that the gaps are closed) and the system counts the score. The number of points you score equals to the length of the maximum sequence of cubes of the same color that follow consecutively. Write a program that determines the maximum possible number of points you can score.
Remember, you may delete no more than k any cubes. It is allowed not to delete cubes at all.
The first line contains three integers n,m and k (1 ≤ n ≤ 2·105, 1 ≤ m ≤ 105, 0 ≤ k < n). The second line contains n integers from 1 to m — the numbers of cube colors. The numbers of colors are separated by single spaces.
Print the maximum possible number of points you can score.
10 3 21 2 1 1 3 2 1 1 2 2
4
10 2 21 2 1 2 1 1 2 1 1 2
5
3 1 21 1 1
3
In the first sample you should delete the fifth and the sixth cubes.
In the second sample you should delete the fourth and the seventh cubes.
In the third sample you shouldn't delete any cubes.题目大意:n个立方体并列放着,然后有m种颜色,你可以取出0~k个立方体,然后再并拢,问最大的连续相同颜色的立方体有多少个
思路:vector存每个颜色的位置,然后之后用尺取法,最后取最大的就好了
#include <bits/stdc++.h>using namespace std;vector<int>v[111111];int main(){ int n,m,k; while (~scanf("%d%d%d",&n,&m,&k)) { for (int i = 1 ; i <= n ; i++ ) { int a; scanf("%d",&a); v[a].push_back(i); } int res = 1; for (int i = 1 ; i <= m ; i++ ) { int x = v[i].size(); int temp = 1; int cou = 0; int y = 0; for(int j = 1 ; j < x ; j ++ ) { temp++; cou += v[i][j] - v[i][j-1] - 1; while ( cou > k) { temp--; cou -=v[i][y+1] - v[i][y] - 1; y++; } if ( res < temp) { res = temp; } } } printf("%d\n",res); }}
- CodeForces 180E Cubes(vector+尺取)
- Codeforces Round #116 E-Cubes 180E
- CodeForces Round #116 (180E) - Cubes
- CodeForces 180E Cubes--后续指针--当前个数
- codeforces 180E Cubes 双指针经典题
- E. Cubes codeforce 180/E
- Anya and Cubes - CodeForces 525 E dp
- codeforces 525E. Anya and Cubes
- CODEFORCES 525E Anya and Cubes
- codeforces 525E E. Anya and Cubes( dp+折中搜索)
- 中途相与法(Codeforces Round #297 (Div. 2)E - Anya and Cubes )
- codeforces 525E Anya and Cubes(暴力,meet-in-the-middle)
- Codeforces Round #297 (Div. 2) E. Anya and Cubes (双向DFS)
- Codeforces Round #116 (Div. 2, ACM-ICPC Rules) E - Cubes
- Codeforces Round #297 (Div. 2)---E. Anya and Cubes
- Codeforces Round #297 (Div. 2) E - Anya and Cubes
- Codeforces Round #297 (Div. 2) E. Anya and Cubes
- Codeforces Round #297 (Div. 2) E Anya and Cubes
- 剑指Offer----面试题35:第一个只出现一次的字符
- java Map及Map.Entry详解
- SpringMVC+Ajax页面无刷新提交多个文件和数据
- 看不见你的笑我怎么睡得着
- matlab 集合操作
- CodeForces 180E Cubes(vector+尺取)
- C++、Java语法差异对照表
- 递归实现字符串的逆序。
- C++虚函数表
- Kafka深度解析,众人推荐,精彩好文!
- 2301: [HAOI2011]Problem b
- 简单好看的圆形进度条对话框开源库
- 一款android App需要考虑的问题:
- ViewStub