当前位置: 首页 > news >正文

BestCoder Round #81 (div.2) 1003 String

题目地址:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=691&pid=1003
题意:找出一个字符串满足至少有k个不相同的字母的字串的个数
可以注意到 如果 i到j 是满足条件的 则 i到j+1,j+2...n都是满足的,所以可以用尺取法,每次找到满足条件最短的 i,j 然后每次都加上 n-j+1就是答案
#include<bits/stdc++.h>

#define inf 0x3f3f3f3f

const int maxn=1000000;

using namespace std;

int t,k,len,sum;

__int64 ans;

char a[maxn+10],flag[maxn+10];

int main()
{
    scanf("%d",&t);
    for(int h=1;h<=t;h++){
        memset(flag,0,sizeof(flag));
        scanf("%s%d",a,&k);
        len=strlen(a);
       // printf("%d\n",len);
        int head=0,tail=0,sum=0;
        ans=0;
        for(;;){
            while(head<len&&sum<k){
                if(!flag[a[head]-'A']) {
                sum++;
                }
                 flag[a[head]-'A']++;
                head++;
              //  printf("1\n");
            }
            if(sum<k) break;
            ans+=(len-head+1);
            //printf("%I64d\n",ans);
            while(tail<head&&sum>=k){
                if(flag[a[tail]-'A']) {
                        flag[a[tail]-'A']--;
                        if(!flag[a[tail]-'A']) sum--;
                }
                if(sum>=k) ans+=(len-head+1);
                tail++;
            }
           // printf("%d\n",head);
        }
        printf("%I64d\n",ans);
    }
    return 0;
}
 
   

 

 

转载于:https://www.cnblogs.com/GeniusYang/p/5440799.html

相关文章:

  • 2010年架构社区回顾:悠长的一年
  • 【VS开发】使用VS2010创建MFC ActiveX工程项目
  • Java Resource路径小结
  • 在ubuntu 15.04下安装VMware Tools
  • ZeroMQ(java)中监控Socket
  • hdu1418 欧拉公式
  • S3C2440-DMA
  • 冲刺第三天
  • 落花流水又一年
  • 九、oracle 事务
  • 路由器to路由器
  • 【问题】background:url(imagePath)不能显示图片
  • 需求-开发-售后-需求是一条财富信息链
  • 第九周学习进度表
  • 计易数据图片搜索搜索突破8秒返回结果
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【RocksDB】TransactionDB源码分析
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Akka系列(七):Actor持久化之Akka persistence
  • android 一些 utils
  • Apache Zeppelin在Apache Trafodion上的可视化
  • create-react-app做的留言板
  • ECS应用管理最佳实践
  • Javascript编码规范
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • redis学习笔记(三):列表、集合、有序集合
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue官网教程学习过程中值得记录的一些事情
  • Windows Containers 大冒险: 容器网络
  • 分布式熔断降级平台aegis
  • 记一次用 NodeJs 实现模拟登录的思路
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 通信类
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微服务框架lagom
  • 中文输入法与React文本输入框的问题与解决方案
  • 最简单的无缝轮播
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ###C语言程序设计-----C语言学习(3)#
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (02)vite环境变量配置
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (多级缓存)多级缓存
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转载)虚函数剖析
  • .Net mvc总结
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net 受管制代码
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调