Codeforces Round 735 (Div. 2) D. Diane
题意:给出一个n,要求你构造一个字符串,使得所有的子串数量为奇数,一定能给出解,求问
思路:
秒了,开心,瞎写一篇题解,前几天写红温了
1.观察样例,或者随便尝试几下,可以发现连续的相同字符串,分别的字串长度为n,n-1……1
aaaaaa中,a有6个,aa有5个,剩下的不用多说
2.我们不可能答案就是一串相同的,再尝试一下发现,两个相同字符的奇偶性不同连续子串就完成了全为奇数,奇数加偶数为奇数
aabaaa,前者a为2,后者a为3,aa又分别是1,2
所以考虑构造 n*a,b,(n+1)*a的答案,这一串提供的答案是2*n,因此计算到不足,然后剩下的用别的字符补齐就可以
代码单纯我自己防止跑错,加了n<=26,而且构造的好,其实分奇偶就行了,我属于笨代码
代码:
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define IOS \std::ios::sync_with_stdio(0); \std::cin.tie(0); \std::cout.tie(0)const int N = 3e5 + 5;
const int INF = 1e18;
// const int MOD = 998244353;
// const int MOD=1e9+7;
// const int MOD=100003;
const int maxn=5e5+10;void solve(){int n;std::cin >> n;if(n<=26){for(int i=0;i<n;i++){std::cout << (char)('a'+i);}}else{int x=(n-2)/2;for(int i=0;i<x;i++){std::cout << 'a';}std::cout << 'b';for(int i=0;i<x+1;i++){std::cout << 'a';}for(int i=0;i<n-2-x-x;i++){std::cout << (char)('c'+i);}}std::cout << '\n';} signed main(){IOS;int t=1;std::cin >> t;while(t--){solve();}
}