第一次训练周赛I题分析

张开发
2026/6/1 12:41:26 15 分钟阅读
第一次训练周赛I题分析
这题来解决的话需要我们思考怎么才能排序最多个那么我们知道_是需要一个的-是需要两个的那么我们就让-放在_的左右边来排序试试呢那么要是放在左右边左右各放多少呢那不如就试试平均分配呢那么想到这里这题基本上就解决了。我们让_全部放在-的中间然后所以得-就把它们平均来放到他们的两边然后进行选择排序如果左边有n个-中间有m个_,右边有k个-那么最终答案就是Cn1*Cm1*Ck1实现代码#includebits/stdc.husing namespace std;int main(){ios::sync_with_stdio(0);cin.tie(0);int t;cin t;while(t--){int n;string s;cin n s;long long shu 0, num 0;for(int i0; is.size(); i){if(s[i] -) shu;else num;}long long a shu / 2;long long b shu - a;cout num * a * b \n;}return 0;}这题尝试用暴力不好解那么我们就得想是否会有什么优解来做。

更多文章