A. Diverse Substring
题意:找一个子串满足任何一个字符的出现次数小于 n/2 n是子串的长度,
显然两个不相同的字符组成的子串就是满足情况的;
#include<bits/stdc++.h>
using namespace std;
#define out fflush(stdout)
#define fast ios::sync_with_stdio(0),cin.tie(0);
#define FI first
#define SE second
typedef long long ll;
typedef pair<int,int> P;
const int maxn = 1000 + 7;
const int INF = 0x3f3f3f3f;
int n;
char s[maxn];
map<char, int> mp;
int main() {
scanf("%d", &n);
scanf("%s", s+1);
for(int i = 2; i <= n; ++i) {
if(s[i] != s[i-1]) {
puts("YES");
printf("%c%c", s[i-1], s[i]);
return 0;
}
}
puts("NO");
return 0;
}
B. Vasya and Books
题意:给定n本书的位置,从上往下,编号1~n不重复,没找一本书需要把他上面的书全搬走,问每找一本书需要搬几本书,如果之前已经搬出来的书不用搬动,输出0;
思路:直接模拟
#include<bits/stdc++.h>
using namespace std;
#define out fflush(stdout)
#define fast ios::sync_with_stdio(0),cin.tie(0);
#define FI first
#define SE second
typedef long long ll;
typedef pair<int,int> P;
const int maxn = 2e5 + 7;
const int INF = 0x3f3f3f3f;
int n;
int a[maxn], b[maxn];
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
scanf("%d", &a[i]);
}
for(int i = 1; i <= n; ++i) {
scanf("%d", &b[i]);
}
int id = 1;
set<int> st;
for(int i = 1; i <= n; ++i) {
if(st.count(b[i])) {
printf("%d%c", 0, (i == n ? '\n' : ' '));
}
else {
int ans = 1;
while(a[id] != b[i]) {
st.insert(a[id]);
id++, ans++;
}
id++;
printf("%d%c", ans, (i == n ? '\n' : ' '));
}
}
return 0;
}
C. Vasya and Robot
题解:https://blog.csdn.net/xiang_6/article/details/83686299
D. Berland Fair
题解:https://blog.csdn.net/xiang_6/article/details/83686379
E. Segment Sum
题解: