『JROI-7』PMK 配匹串符字
题目背景
限制很宽泛,构造也就很憨批。
——command_block 《考前小贴士》
题目描述
对于一个字符串 S S S,记 ∣ S ∣ |S| ∣S∣ 表示 S S S 的长度,记 S i S_i Si 表示 S S S 的第 i i i 个字符,记 S l , r S_{l,r} Sl,r 表示 S l , S l + 1 , . . . , S r S_l,S_{l+1},...,S_r Sl,Sl+1,...,Sr 组成的字符串。定义两个字符串相等,当且仅当他们长度相等,且每个位置的字符相同。
对于一个字符串 S S S 和一个正整数 i ≤ ∣ S ∣ i\le |S| i≤∣S∣,若 k k k 是满足 k < i k<i k<i 且 S 1 , k = S i − k + 1 , i S_{1,k}=S_{i-k+1,i} S1,k=Si−k+1,i 的最大的正整数,则 n e x t i = k next_i=k nexti=k。特别的,若不存在 k k k 满足条件,则 n e x t i = 0 next_i=0 nexti=0。
请你构造一个由小写字母组成的字符串 S S S,满足 ∣ S ∣ = n |S|=n ∣S∣=n,且对于所有正整数 i ≤ ∣ S ∣ i\le |S| i≤∣S∣, n e x t i next_i nexti 之和最小。
输入格式
一行一个正整数 n n n。
输出格式
一行一个字符串,表示你构造的 S S S。输出任意一种方案即可。
样例 #1
样例输入 #1
5
样例输出 #1
abcde
提示
数据规模
本题采用捆绑测试。
对于 50 % 50\% 50% 的数据, n ≤ 26 n\le 26 n≤26。
对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 1 0 5 1\le n\le 10^5 1≤n≤105。
题解
题意一大堆,实际上就是求一个字符串,其字串前缀与后缀的长度-1的和的最小值。其中,子串必须从头开始。
推理发现,只用第一个是‘a’,后面的全部是’b’就好。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n; cin >> n;
cout << "a";
for(int i=1 ; i<n ; i++)
cout << "b";
return 0;
}
[JRKSJ R5] 1-1 A
题目背景
本题是 1-1 的较易版本,较难版本为 1-1 B。
题目描述
给出一个序列 a a a, ∀ i ∈ [ 1 , n ] , a i ∈ { 1 , − 1 } \forall i\in [1,n],a_i\in \{1,-1\} ∀i∈[1,n],ai∈{ 1,−1}。
你可以将序列任意重排,需最小化重排后序列的最大子段和。
输入格式
第一行一个整数 n n n。
第二行 n n n 个整数表示 a a a。
输出格式
一行 n