具体思路已经在代码注释中给出,这里不再赘述。

#include<iostream>
#include<algorithm>
using namespace std;
int t;
string s;
int main()
{
cin >> t;
while(t--)
{
cin >> s;
int len = s.size();
int total0 = 0, total1 = 0;
for(int i = 0; i < len; i++)
{
total0 += (s[i] == '0');
total1 += (s[i] == '1');
}
/**
最终要把它变成111...000 或者 000...111 或者 全零 或者 全1
*/ int ans = min(total0, total1);
int nr0 = 0, nr1 = 0;
for(int i = 0; i < len; i++)
{
nr0 += (s[i] == '0');
nr1 += (s[i] == '1');
/**
假若把它变成111...000这种形式
那么对于左部分是0的部分,要对它进行翻转(也就是对它进行操作),
还要再加上右部分是1的个数
这部分就是total1 - nr1,nr1此时扮演左半部分为1的个数,总的1的个数减去它,
就是右半部分为1的个数。 */
ans = min(ans, nr0 + total1 - nr1);
/**
倘若把它变成000...111这种形式,思路和上面相似
*/ ans = min(ans, nr1 + total0 - nr0);
}
cout << ans << endl; }
}

Codeforces Round #646 (Div. 2)【B. Subsequence Hate题解】的更多相关文章

  1. Codeforces Round #646 (Div. 2) B. Subsequence Hate(前缀和)

    题目链接:https://codeforces.com/contest/1363/problem/B 题意 可以将 $01$ 串中的 $0$ 变为 $1$.$1$ 变为 $0$,问至少需要变换多少字符 ...

  2. Codeforces Round #646 (Div. 2) B. Subsequence Hate (思维,前缀和)

    题意:给你一个只含有\(0\)和\(1\)的字符串,每次操作可以将\(0\)改成\(1\)或\(1\)改成\(0\),问最少操作多少次,使得子序列中不含有\(010\)和\(101\). 题解:仔细想 ...

  3. Codeforces Round #609 (Div. 2)前五题题解

    Codeforces Round #609 (Div. 2)前五题题解 补题补题…… C题写挂了好几个次,最后一题看了好久题解才懂……我太迟钝了…… 然后因为longlong调了半个小时…… A.Eq ...

  4. Codeforces Round #646 (Div. 2) 题解 (ABCDE)

    目录 A. Odd Selection B. Subsequence Hate C. Game On Leaves D. Guess The Maximums E. Tree Shuffling ht ...

  5. Codeforces Round #646 (Div. 2) E. Tree Shuffling(树上dp)

    题目链接:https://codeforces.com/contest/1363/problem/E 题意 有一棵 $n$ 个结点,根为结点 $1$ 的树,每个结点有一个选取代价 $a_i$,当前 $ ...

  6. Codeforces Round #646 (Div. 2) C. Game On Leaves(树上博弈)

    题目链接:https://codeforces.com/contest/1363/problem/C 题意 有一棵 $n$ 个结点的树,每次只能取叶子结点,判断谁能最先取到结点 $x$ . 题解 除非 ...

  7. Codeforces Round #646 (Div. 2) A. Odd Selection(数学)

    题目链接:https://codeforces.com/contest/1363/problem/A 题意 判断是否能从 $n$ 个数中选 $x$ 个数加起来和为奇数. 题解 首先 $n$ 个数中至少 ...

  8. Codeforces Round #646 (Div. 2)【C. Game On Leaves 题解】

    题意分析 关于这道题,意思就是两个人摘叶子,谁最后摘到编号为x的谁就赢了.既然是叶子,说明其最多只有一个分支,由于题目上说了是无向图,那就是度数小于等于的节点.也就是一步步移除度数小于等于的节点,直到 ...

  9. Codeforces Round #646 (Div. 2) C、Game On Leaves

    题目链接:C.Game On Leaves 题意: 给你一个n个节点的无根树,你每次可以删除一个叶节点.如果谁先删除x号节点谁就赢了.两个人轮流操作 题解: 如果x号节点本身就是一个叶节点,那么谁先走 ...

随机推荐

  1. 软件——Jira是什么

    JIRA这个工具接触有好几年了,在多个海外项目上都用过这个工具.去年又在项目上深度使用后就有点爱不释手了,回国后也在找机会推荐给其它项目上用.最近正好有新项目需要用,借这个机会把JIRA的配置学习的过 ...

  2. spring data jpa 多对多 ManyToMany

    环境搭建 源码地址:gitee:https://gitee.com/ytfs-dtx/JPA 导入依赖 <properties> <spring.version>5.2.5.R ...

  3. RMQ问题总结,标准RMQ算法的实现

    RMQ问题:对于长度为N的序列,询问区间[L,R]中的最值 RMQ问题的几种解法: 普通遍历查询,O(1)-O(N) 线段树,O(N)-O(logN) DP,O(NlogN)-O(1) RMQ标准算法 ...

  4. LeetCode寻找两个有序数组的中位数

    题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nu ...

  5. PHP根据抖音的分享链接来抓包抖音视频

    现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...

  6. 黑马程序员_毕向东_Java基础视频教程——进制的相互转换(随笔)

    进制的相互转换 二进制转十进制: 原理对十进制数进行除2运算(余数不是0 就是1) 6 的二进制: 6 / 2 = 3--0 3 / 2 = 1--1 1 / 2 = 0--1 余数倒序排列输出:11 ...

  7. css中文字两端对齐兼容IE

    text-align: justify; text-justify:inter-ideograph;

  8. express+mysql实现简单的登录功能

    登录页面图: node.js文件代码: const express=require("express"); const app=express(); const path=requ ...

  9. DRF视图组件

    DRF视图组件: CVB模式继承----五层 from django.views import View # Django的View from rest_framework.views import ...

  10. 数据结构----链表Link

    链表简介与数据结构 单向链表也叫单链表,是表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值. 单向链 ...