第一次训练周赛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;}这题尝试用暴力不好解那么我们就得想是否会有什么优解来做。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2473889.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!