SMU Winter 2024 Round #3 (Div.2)
对于自己比较有价值的题目是
D题 https://codeforces.com/gym/102897/problem/D?mobile=true
J题 https://codeforces.com/gym/102897/problem/J
K题 https://codeforces.com/gym/102897/problem/K
E题 https://codeforces.com/gym/102897/problem/K
D题
题目看似很长一大串,非常吓人,但实际上只需要抓住两个关键词:回文字符串被分割 后 的最长长度,我们要记住,单个字符就是一个回文字符串。那么问题就很好解决了,只需要统计总共出现过几个字母就行啦
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int sum;
void solve()
{
string s;
cin>>s;
sum+=s.size();
}
signed main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
cout<<sum;
return 0;
}
J题
这题其实就是在统计出现过的字符种类数,但是每种可能出现多次,那么我们便可以想到一个不存在重复元素的容器set容器,介绍一些set的基础操作,set 的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就像一个集合一样。
s.begin() 返回指向第一个元素的迭代器
s.end() 返回指向最后一个元素的迭代器
s.clear() 清空所有元素
s.empty() 检查集合是否为空 若空返回true
s.insert() 在集合中插入元素
s.size() 集合中的元素数目
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int lj(string&str)
{
set<char> q;
for(char c:str){
if(c!='.') q.insert(c);
}
return q.size();
}
void solve()
{
int n,sum=0;
cin>>n;
while(n--)
{
string s;
cin>>s;
sum+=lj(s);
}
cout<<sum<<endl;
}
int main()
{
int t;
cin>>t;
while(t--)
{
solve();
}
return 0;
}
E题
这一题就是输出图案就行,但是注意‘/’要使用转义字符就是在printf里输入两个//
点击查看代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
printf(" __ _____\n");
printf("| | ___/ ____\\____\n");
printf("| |/ /\\ __\\/ ___\\\n");
printf("| < | | \\ \\___\n");
printf("|__|_ \\ |__| \\___ >\n");
printf(" \\/ \\/");
return 0;
}