算法做题记录04

目录

签到(牛客网--河南省萌新赛第(二)场)

题目描述

代码

字符串(牛客网)

题目描述

代码


签到(牛客网--河南省萌新赛第(二)场)

题目描述

背景:本来正在水群,计划12题,但是少了一题签到,群友给了建议(见样例下面的备注),就出了个签到题,在此感谢。

给定一个序列,你可以在序列中任取 4 个数 a,b,c,d (可以重复选取),问是否有一种选择满足:a+b+c=d。

输入描述:

第一行,一个正整数 n (1<=n<=1e3)。

第二行,n 个正整数,a1,a2,a3,...,an (1 ≤ ai ≤ 1e9)。

输出描述:

如果存在一种情况满足,则输出"Yes"(不加引号),否则输出"No"(不加引号)。

示例1

输入

4
1 8 20 90

输出

No

示例2

输入

4
1 2 3 4

输出

Yes

代码

需要解析下方评论

#include<iostream>
#include<set>
using namespace std;
set<int> a;
int b[10000];
int main(){
	int n,m;
	cin>>n;
	for(int i=0;i<n;i++){
		scanf("%d",&b[i]);
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			a.insert(b[i]+b[j]);
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			if(a.find(b[i]-b[j])!=a.end()){
				cout<<"Yes";
				return 0;
			}
		}
	}
	cout<<"No";
	return 0;

字符串(牛客网)

题目描述

小N现在有一个字符串S。他把这这个字符串的所有子串都挑了出来。一个S的子串T是合法的,当且仅当T中包含了所有的小写字母。小N希望知道所有的合法的S的子串中,长度最短是多少。

输入描述:

一行一个字符串S。只包含小写字母。S的长度不超过1e6.

输出描述:

一行一个数字,代表最短长度。数据保证存在一个合法的S的子串。

示例1

输入

ykjygvedtysvyymzfizzwkjamefxjnrnphqwnfhrnbhwjhqcgqnplodeestu

输出

49

代码

需要代码解析下方评论

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<set>
#include<cstring>
using namespace std;
char a[1000005];
int f[26];
int check(){
	for(int i=0;i<26;i++) if(f[i]==0) return 0;
	return 1; 
}
int main(){
	cin>>a;
	int N=strlen(a);
	int ans=N;
	for(int i=0,j=0;j<N&&i<N;i++){
		f[a[i]-'a']++;
		while(check()&&j<N) ans=min(i-j+1,ans),f[a[j]-'a']--,j++;
	}
	cout<<ans;
	return 0;
} 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值