题目链接:http://codeforces.com/problemset/problem/701/C

题意:找到字符串中能包含所有元素的最短字符串长度。

利用“滑动窗口”解题

解题思路:

1. 遍历找到所有元素进行统计,元素数sum

2.设置两个”指针“ st、en,双重while 循环

3.先清空dp[]数组,进行统计

双重while

第一个 whielt(st<n)

{

  内部while(en<n&&sum!=sum1)//sum1统计元素个数

  {//内部while

    sum1 统计

    dp[s[en]]++ 每个元素出现的次数统计

    en++

  }

  如果sum==sum1 找到小值 ans=min(ans,en-st);

  *如果--dp[s[st]]==0,则说明 s[st] 这个元素在统计的所有元素个数中没有了,此时sum1--,即应重新统计s[st]  这个元素,以确保长度包含所有元素。【关键点】

  st++;

}

输出 asn 即可。

//16.09.07 22:10

看博再次看到滑动窗口,觉得解释的不算清晰,特补充解释下:

AC code:

 #include<bits/stdc++.h>
using namespace std;
int dp[];
int main()
{
int n;
string s;
while(~scanf("%d",&n))
{
cin>>s;
int sum=;
memset(dp,,sizeof(dp));
for(int i=; i<n; i++)
{
if(!dp[s[i]])
{
dp[s[i]]=;
++sum;
}
}
int st,en,sum1,ans;
st=en=sum1=;
ans=<<;
memset(dp,,sizeof(dp));
while(st<n)
{
while(en<n&&sum!=sum1)
{
if(dp[s[en]]==)
{
sum1++;
}
dp[s[en++]]++;
}
if(sum==sum1)ans=min(ans,en-st);
if(--dp[s[st++]]==)sum1--;
}
cout<<ans<<endl;
}
return ;
}

CodeForces 701C They Are Everywhere (滑动窗口)的更多相关文章

  1. CodeForces 427B Prison Transfer (滑动窗口)

    题意:给定 n, t, c 和 n 个数,问你在这 n 个数中有多少连续的 c 个数,并且这个 c 个数不大于 t. 析:很简单么,是滑动窗口,从第一个开始遍历,如果找到 c 个数,那么让区间前端点加 ...

  2. CodeForces 279B Books (滑动窗口)

    题意:给定n本书的阅读时间,然后你从第 i 本开始阅读,问你最多能看多少本书在给定时间内. 析:就是一个滑动窗口的水题. 代码如下: #pragma comment(linker, "/ST ...

  3. [CF580B]Kefa and Company(滑动窗口)

    题目链接:http://codeforces.com/problemset/problem/580/B 某人有n个朋友,这n个朋友有钱数m和关系s两个属性.问如何选择朋友,使得这些朋友之间s最大差距小 ...

  4. [LeetCode] Sliding Window Maximum 滑动窗口最大值

    Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...

  5. TCP/IP 协议中的滑动窗口

    一个例子明白发送缓冲区.接受缓冲区.滑动窗口协议之间的关系. 在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于 ...

  6. Storm Windowing storm滑动窗口简介

    Storm Windowing 简介 Storm可同时处理窗口内的所有tuple.窗口可以从时间或数量上来划分,由如下两个因素决定: 窗口的长度,可以是时间间隔或Tuple数量: 滑动间隔(slidi ...

  7. lintcode 滑动窗口的最大值(双端队列)

    题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为  ...

  8. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  9. tcp协议头窗口,滑动窗口,流控制,拥塞控制关系

    参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://b ...

随机推荐

  1. Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务(亲测可用)

    一.背景: 1.Dubbo服务正常注册到ZooKeeper 2.客户端调用Dubbo服务正常 二.原因: Dubbo-Admin未配置分组信息 三.解决步骤: 1.dubbo.properties添加 ...

  2. nginx配置实战1----配置虚拟主机

    1 nginx虚拟主机的概念 虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点.应用组件等,提供必要的站点功能.数据存放和传输功能,所谓虚拟主机,也叫"网站空间",就是把 ...

  3. 强连通 HDU 3861

    t个样例 n个点m条边 分成一些区 2个点互相能到达必须分在一个区 一个区中任何2个点可以u->v 或者v->u 任何点都要有自己的区 求最小的区的数目 强联通缩点 成新图 二分匹配 求最 ...

  4. 网络流最小割 POJ 3469

    题意  2个CPU n个任务 给出在第一个 第二个运行时的花费 m  个  a  b 不在同一个CPU运行的额外花费 建图 源点 ->   n    -> 汇点 权          a1 ...

  5. 【POJ 1112】Team Them Up!(二分图染色+DP)

    Description Your task is to divide a number of persons into two teams, in such a way, that: everyone ...

  6. iOS随机生成数字

    有时候我们需要在程序中生成随机数,但是在Objective-c中并没有提供相应的函数,好在C中提供了rand().srand().random().arc4random()几个函数.那么怎么使用呢?下 ...

  7. Python 中文编码问题小结

    1. 下面的语句要放在代码开头,指定文件编码, 可以识别 脚本中的所有字符和中文. # -*- coding:utf-8 -*- 2. codecd 编码转换 如果想要读取文本中的中文,需要借助于co ...

  8. [日常训练]mod

    Description 给定$p_1,p_2,-,p_n,b_1,b_2,...,b_m$, 求满足$x\;mod\;p_1\;\equiv\;a_1,x\;mod\;p_2\;\equiv\;a_2 ...

  9. Jenkins使用jenkins-cli.jar进行远程调用时出现“ERROR: No such job 'test'”的问题解决(Windows)

    网上最提倡的解决办法是用SSH的key进行登录,但是我发觉Linux上非常容易实现,但是Windows压根不知道在哪里设置. 原文:https://issues.jenkins-ci.org/brow ...

  10. ofo走出校园观察:市场定位导致产品错位?

    Ofo和摩拜单车虽然同样都是做单车共享,但实际上两者在最初的市场定位是有明显的差异的,因此提供的产品方案也存在巨大的差异. 市场定位不同,导致产品方案的巨大差异 摩拜单车一开始就定位于开放市场,充分的 ...