NYoj 1112 求次数 【水】

求次数

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述

题意很简单,给一个数n 以及一个字符串str,区间【i,i+n-1】 为一个新的字符串,i 属于【0,strlen(str)】如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过

求ans;

输入
LINE 1: T组数据(T<10)

LINE 2: n ,n <= 10,且小于strlen(str);

LINE 3:str

str 仅包含英文小写字母 ,切长度小于10w

输出
求 ans
样例输入
2
2
aaaaaaa
3
acmacm
样例输出
5
1

就是将所有的都存起来,排个序,遍历

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
const int M = 200000;
using namespace std;

struct node{
	char str[12];
}s[M];
char str[M];

bool cmp(node a, node b){
	if( strcmp(a.str, b.str) <= 0 ) return 1;
	return 0;
}

int main(){
	int t, n;
	scanf("%d", &t);
	while(t --){
		scanf("%d%s", &n, str);
		int len = strlen(str);
	//	memset(s, 0, sizeof(s));
		for(int i = 0; i <= len-n; ++ i){
			for(int j = 0; j < n; ++ j)
				s[i].str[j] = str[j+i];
			s[i].str[n] = '\0';
		}
		sort(s, s+len-n+1, cmp);
		int ans = 0;
		for(int i = 1; i <= len-n; ++ i){
			if(strcmp(s[i].str, s[i-1].str) == 0) ++ans;
		}
		printf("%d\n", ans);
	}
	return 0;
}        
时间: 2024-11-03 21:40:55

NYoj 1112 求次数 【水】的相关文章

nyoj 1112 求次数(map, set)

求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strlen(str)]如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过 求ans; 输入 LINE 1: T组数据(T<10)LINE 2: n ,n <= 10,且小于strlen(str);LINE 3:strstr 仅包含英文小

nyoj 1112 求次数 (map)

求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strlen(str)]如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过 求ans; 输入 LINE 1: T组数据(T<10) LINE 2: n ,n <= 10,且小于strlen(str); LINE 3:str str 仅包含

NYOJ---题目1112求次数

求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strlen(str)]如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过 求ans; 输入 LINE 1: T组数据(T<10) LINE 2: n ,n <= 10,且小于strlen(str); LINE 3:str str 仅包含

南阳oj 求次数 题目1112

 /* 求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strlen(str)]如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过 求ans; 输入LINE 1: T组数据(T<10) LINE 2: n ,n <= 10,且小于strlen(str); LINE 3:str st

nyoj1112 求次数 (对结构体字符串排序)

题目1112 题目信息 运行结果 本题排行 讨论区 求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strlen(str)]如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过 求ans; 输入 LINE 1: T组数据(T<10) LINE 2: n ,n <= 10,且小于strle

NYOJ 90 —— 求n划分为若干个正整数的划分个数

整数划分 时间限制:3000 ms  |  内存限制:65535 KB 描述 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1. 正整数n的这种表示称为正整数n的划分.求正整数n的不 同划分个数. 例如正整数6有如下11种不同的划分: 6: 5+1: 4+2,4+1+1: 3+3,3+2+1,3+1+1+1: 2+2+2,2+2+1+1,2+1+1+1+1: 1+1+1+1+1+1.  输入 第一行是测试数据的数目M(1<=M<=10).以下每

NYOJ 155 求高精度幂

求高精度幂 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 对数值很大.精度很高的数进行高精度计算是一类十分常见的问题.比如,对国债进行计算就是属于这类问题. 现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < =n <= 25. 输入 输入有多行,每行有两个数R和n,空格分开.R的数字位数不超过10位. 输出 对于每组输入,要求输出一行,该行包含精确的

求次数

求次数 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 题意很简单,给一个数n 以及一个字符串str,区间[i,i+n-1] 为一个新的字符串,i 属于[0,strlen(str)]如果新的字符串出现过ans++,例如:acmacm n=3,那么 子串为acm cma mac acm ,只有acm出现过 求ans; 输入 LINE 1: T组数据(T<10) LINE 2: n ,n <= 10,且小于strlen(str); LINE 3:str str 仅包含

nyoj 155 求高精度幂 【大数】

做了一下午,总算做出来了!! 思路:将R转换成整数,同时计算好小数的个数,计算整数的次幂之后,然后根据规律将小数点适当的时候输出(如有3位实际小数,则应在第36位输出小数点) 链接http://acm.nyist.net/JudgeOnline/problem.php?pid=155 代码: #include<stdio.h> #include<string.h> int main() { int i, j, n, doc, ans[200]; //doc是逗号后面实际的位数 ch