我是靠谱客的博主 斯文唇彩,这篇文章主要介绍CodeForces 1732B Ugu 题解,现在分享给大家,希望可以做个参考。

题意翻译

Feyn 有一个数列,这个数列只包含 0 和 1。定义一次操作是选择一个后缀并把这个后缀的所有元素取反,求最少使用多少次操作可以让这个序列单调不降。

题目分析

因为对于连续的1和0,每次改变第一位就可以将后面的一起改变,所以可以将连续的0整合,连续的1整合,将给定串整合为一个010...01串或010...10串。

设连续1的段数个数为cnt,

当连续1的段数为1时,对第一个1操作,1次操作可将给定串变为不递减序列。

当连续1的段数大于等于2时,(cnt-1) * 2次操作可将给定串变为不递减序列。

注意:如果给定串最后一位是0,就需多进行一次操作,即(cnt-1)* 2+1次操作。

ACcode

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream> #include<cstring> using namespace std; string a; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int T,ans,n; cin>>T; while(T--) { int cnt=0; cin>>n; cin>>a; a=" "+a; for(int i=1;i<=n;++i) { if(a[i]=='1') { ++cnt; while(a[i]=='1'&&i<=n) ++i; } } if(cnt==0) { cout<<"0n"; continue; } ans=(cnt-1)*2; if(a[n]=='0') ++ans; cout<<ans<<"n"; } }

最后

以上就是斯文唇彩最近收集整理的关于CodeForces 1732B Ugu 题解的全部内容,更多相关CodeForces内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部