牛客Round76(补题)
牛客Round76(补题)
B串串香
思路
容易想到的是构造出来的子串肯定是越短越好,那么最短的时候是长度为1,所以本题就是让你统计出现次数最多的字符。
评述
又是及其傻×的一天
代码
#include <bits/stdc++.h>
typedef std::pair<long long, long long> pll;
typedef std::pair<int, int> pii;
#define INF 0x3f3f3f3f
#define MOD 998244353
using i64 = long long;
const int N = 1e5+5;
void solve(){
int n;
std::cin >> n;
std::array<int, 26> aa;
std::fill(aa.begin(), aa.end(), 0);
for (int i = 0; i < n; i++){
char a;
std::cin >> a;
aa[a-'a']++;
}
int pos = -1, cnt = 0;
for (int i = 0; i < 26; i++){
if (aa[i] > cnt){
cnt = aa[i];
pos = i;
}
}
std::cout << pos << '\n';
std::cout << char(pos+'a') << '\n';
}
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout<<std::setiosflags(std::ios::fixed)<<std::setprecision(2);
int t = 1, i;
for (i = 0; i < t; i++){
solve();
}
return 0;
}
C小红的gcd
思路
首先要明确的是用gcd得到的新值替换旧的值这个事情肯定是不增的,所以一个序列的最终一定会全部等于一个定值,并且这个定值至多是原本序列的最小值。
gcd算法是有结合性的,gcd(gcd(a, b) ,gcd(c, d)) = gcd(a, b, c, d)。所以选择哪两个数先做gcd这件事是没有意义的,直接全部做gcd即可。
评述
对于题目中出现的性质一定要想清除,每次都是简单的想一下,模模糊糊觉得是错的就直接跳过了,结果跳过了真理。
代码
#include <bits/stdc++.h>
typedef std::pair<long long, long long> pll;
typedef std::pair<int, int> pii;
#define INF 0x3f3f3f3f
#define MOD 998244353
using i64 = long long;
const int N = 1e5+5;
void solve(){
int n;
std::cin >> n;
i64 gcd = 0;
for (int i = 0; i < n; i++){
int a; std::cin >> a;
gcd = std::gcd(a, gcd);
}
std::cout << 1LL * gcd * n << '\n';
}
signed main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout<<std::setiosflags(std::ios::fixed)<<std::setprecision(2);
int t = 1, i;
for (i = 0; i < t; i++){
solve();
}
return 0;
}

浙公网安备 33010602011771号