ZZULIoj 1912 小火山的爱情密码
Description
Input
Output
输出最小长度,如果达不到要求输出-1
Sample Input
1
6 3
cancan
c 2
a 2
n 2
Sample Output
6
用数组保存每个字母数的数量,假设最短区间为ant~i,初始化ant=0,令i从0到n找出最小满足条件的,然后将字符串中第ant个字母的数量减一,更新区间ant+1~i,直到找出最小区间,用ans保存区间长度min(ans,i+1-ant).
#include<cstdio>
#include<algorithm>
#include<string.h>
#define INF 0xfffffff
using namespace std;
int n,m,ans;
char str[];
int zic[],zis[];
int check()
{
int i;
for(i = ; i < ; i++)
{
if(zis[i] < zic[i])
return ;
}
return ;
}
int main()
{
int t;
char a;
scanf("%d",&t);
while(t--)
{
int i,b,ans;
memset(zis,,sizeof(zis));
memset(zic,,sizeof(zic));
scanf("%d %d %s",&n,&m,&str);
for(i = ; i < m ; i++)
{
scanf(" %c%d",&a,&b);
zic[a-'a']=b; //用int型数组记录对应字母的数量
}
int ant=;
ans=INF;
for(i = ; i < n ; i++)
{
zis[str[i]-'a']++;
while(check()) //找出满足条件的i
{
ans=min(ans,i+-ant);//对所有满足条件的区间去最小长度
zis[str[ant]-'a']--;
ant++;
}
}
if(ans == INF)
ans=-;
printf("%d\n",ans);
} }
ZZULIoj 1912 小火山的爱情密码的更多相关文章
- ZZULIoj 1907 小火山的宝藏收益
Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这 ...
- ZZULIoj 1913: 小火山的计算能力
Description 别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来. Input 首先是一个t(1<=20)表示测试组数.然后一个表达式,表达式长 ...
- ZZULIoj 1908 小火山的围棋梦想
Description 小火山最近喜欢上了围棋. 对于围棋,其实小火山是一窍不通的.现在棋盘上,有很多小火山的棋子. 如果棋盘上有这样的一个位置, 那么这个位置也会变成小火山 的棋子:这样的位 ...
- zzulioj 1907小火山的宝藏交易(dfs记忆化搜索)
#include <stdio.h> #include <algorithm> #include <string.h> #include <vector> ...
- zzuliOJ 1904小火山的股票交易;
#include <stdio.h> #include <algorithm> #include <string.h> using namespace std; # ...
- (zzuli)1907 小火山的宝藏收益
Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这个房间的宝藏, ...
- zzuli 1907: 小火山的宝藏收益 邻接表+DFS
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 113 Solved: 24 SubmitStatusWeb Board Description ...
- I/O处理小练习--保存用户账号密码
I/O处理小练习--保存用户账号密码 用户输入姓名和密码,将每一个姓名和密码保存到文件中,输入done时程序结束 import java.io.*; public class Example { pu ...
- zzuli 1905 小火山的跳子游戏
Description 小火山和火山火山在一块玩跳子游戏.规则如下: 1:跳子的起始位置为0,棋盘大小从1到N 2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k 3:跳 ...
随机推荐
- tensorflow:实战Google深度学习框架第三章
tensorflow的计算模型:计算图–tf.Graph tensorflow的数据模型:张量–tf.Tensor tensorflow的运行模型:会话–tf.Session tensorflow可视 ...
- axios 访问和返回拦截,token处理,返回异常统一处理
在axios文件夹中,index.js添加拦截 访问拦截: import store from '../store' axios.interceptors.request.use( config =& ...
- Unity Shader入门精要学习笔记 - 第17章 Unity的表面着色器探秘
转自 冯乐乐的<Unity Shader 入门精要> 2010年的Unity 3 中,Surface Shader 出现了. 表面着色器的一个例子. 我们先做如下准备工作. 1)新建一个场 ...
- bootstrap 滚动监听 标签页 和 工具提示
标签 <div class="container"> <h4>Tabs</h4> <ul id="myTab ...
- git push 冲突
git commit -am "test 3" git pull 用自己的:git checkout --ours xxxx路径xxxx 用他人的:git checkout --t ...
- zuul filter
前言 过滤器是Zuul的核心组件,这篇文章我们来详细讨论Zuul的过滤器.下面话不多说,来看看详细的介绍吧. 过滤器类型与请求生命周期 Zuul大部分功能都是通过过滤器来实现的.Zuul中定义了四种标 ...
- sql 使用汇总(PQSQL)
--sql structured query language --DML--Data Manipulation Language--数据操作语言 query information (SELECT) ...
- 打开一个本地apk进行安装
Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); File file = new File(Environment ...
- window.close() 关闭当前浏览器页
function eseFun() { var browserName = navigator.appName; //获取浏览器名称 if(browserName == "Netscape& ...
- 1、Centos7 python2.7和yum完全卸载及重装
完全重装python和yum 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 1.删除现有Python ...