[Lydsy1806月赛] 最长公共子序列
首先可以证明,只由一种字符构成的串总会是最优解中的一种。。。
考虑随便一个T与S的LIS都至少是出现次数最少的字符个数(考虑反证法,如果要更短,那么T中每种字符的个数都至多是 S 中最少的字符个数-1,最后长度肯定不到N),于是我们就拿出现次数最少的字符填成T就行了。。。
#include<bits/stdc++.h> #define ll long long using namespace std; int cnt[26],ans=1e9; char ch; int main(){ for(ch=getchar();ch>='a'&&ch<='z';ch=getchar()) cnt[ch-'a']++; for(int i=0;i<26;i++) ans=min(ans,cnt[i]); printf("%d\n",ans); return 0; }
我爱学习,学习使我快乐