A被称为是B的子串的要求是:A只能由B从头和尾删除字符得到。
比如:b="abc",那么"a","b","c","ab","bc","abc"都是B的子串,而"ac"不是。
给定一个字符串S,问怎么排列S可以使得S的子串中回文子串数量最多。多解输入任意一个。
想到好像相同的排在一起最优,于是尝试就AC了。
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 5;
typedef long long LL;
int n;
string a;
int main()
cin >> n >> a;
sort(a.begin(), a.end());
cout << a << endl;
return 0;
oolol
字符串排序后的回文子串数最多,为ΣNx(Nx+1)/2\Sigma N_x(Nx+1)/2ΣNx(Nx+1)/2
01bfs学习笔记。
bfs获得下一步状态时,选择遍历常数数组与分别枚举中适合的方案。
A. Oh Those Palindromes 回文串,结论
给定一个非空字符串,求它的一个重排,使得回文子串的数量最多。
结论:排序。
证明:每个回文串的第一个与最后一个字符是相同的,...
D 这个题 有点胖胖。
题意是 有一个环 n 1e11 个小朋友 k 1e11 颗糖分给他们,这n个小朋友排成一个圈, 每个人要求得到1个或 2个 糖果, 如果不足全拿完,已知现在从l开始发糖,顺时针一直发发到r号人结束,求 最多有多少人要2颗糖。
考试的时候一直在想如何二分答案。
后来发现枚举圈数非常的方便,以后这种左右摇摆有边界的题直接周围稍微for 一点 只要不TLE。
这类题目先列出方...
直接存四个状态明显会炸,但可以发现,向左走的数量与向右走的数量差是固定的,也就是你每向左多走一格,就要向右走一个走回来。所以直接维护向左走数量的最小值,跑一边最短路,最后对每一个点进行判断即可...
1110G - Tree-Tac-Toe
给出一棵树,上面有白点和未染色点,白色先手,轮流染色。当染成3个连续白点获胜。问是平局还是白胜。 n &amp;lt;= 5e5
这道贪心很好!
首先通过加点把白点转化成无色。加点只要保证进行相同的染色后先后手不变,并且状态和以前一致。
这样转化大大减少了分类讨论的情况。即使不转化也能讨论。但是转化后模型简单很多!