AtCoder Beginner Contest 043 题解
作者:互联网
目录
- A - Children and Candies (ABC Edit)
- 题目大意:
- 分析:
- B - Unhappy Hacking (ABC Edit)
- 题目大意:
- 分析:
- C - Be Together
- 题目大意:
- 分析:
- D - Unbalanced
- 题目大意:
- 分析:
A - Children and Candies (ABC Edit)
题目大意:
求 \(1-n\) 之和
分析:
公式 / 暴力 都可
cout << (t + 1) * t / 2 << endl;
B - Unhappy Hacking (ABC Edit)
题目大意:
给一个字符串,01表示输入,B表示退格,问最后结果
分析:
按题意模拟即可
int main (){
IOS
string s1, s2 = "";
cin >> s1;
for (int i = 0 ; i < s1.size () ; i ++){
if (s1[i] != 'B'){
s2 += s1[i];
}
else {
if (!s2.empty()) s2.pop_back();
}
}
cout << s2 << endl;
return 0;
}
C - Be Together
题目大意:
找到 \(k\) 使得 \(\sum (a_i - k)^2\) 最大。
分析:
暴力枚举即可
int main (){
IOS
int n; cin >> n;
for (int i = 1 ; i <= n ; i ++)
cin >> a[i];
int ans = 0x3f3f3f3f;
for (int i = -100 ; i <= 100 ; i ++){
int cnt = 0;
for (int j = 1 ; j <= n ; j ++){
cnt += (a[j] - i) * (a[j] - i);
}
ans = min (cnt, ans);
}
cout << ans << endl;
return 0;
}
D - Unbalanced
题目大意:
题给一个字符串,找到是否存在这样字串,字串内出现次数最多字符超过字符串长度的一半。字符串长度 \(1e5\) 。
分析:
很容易发现,对于任何满足该条件的字符串都可以找到长度为 3 的同样满足条件的子串,因此存下所有字母的位置,找是否有距离小于2的即可
vector<int> a[26];
int main (){
IOS
string s; cin >> s;
for (int i = 0 ;i < s.size () ; i ++){
a[s[i] - 'a'].push_back(i);
}
for (int i = 0 ; i < 26 ; i ++){
for (int j = 1 ; j < a[i].size () ; j ++){
if (a[i][j] - a[i][j - 1] <= 2){
cout << a[i][j - 1] + 1<< ' ' << a[i][j] + 1 << endl;
return 0;
}
}
}
cout << -1 << ' ' << -1 << endl;
return 0;
}
标签:AtCoder,ABC,题目,int,题解,s1,Edit,大意,043 来源: https://www.cnblogs.com/sweet-guagua/p/15851203.html