首页 > 其他分享 >B. Swap and Delete

B. Swap and Delete

时间:2023-12-19 11:57:11浏览次数:34  
标签:01 int 个数 a1 ++ Swap Delete b1

原题链接

反思 要明确每个变量的含义!!!

读题

1.取一对01置换,或者删掉一个元素,使得经过若干次改变后的序列\(t\),和\(s\)的前\(|t|\)项元素各不相同。求问最少要删掉几个元素?

一些事实的思考

1.对于一个给定的序列\(a\),和另一个 “0的个数”与“1的个数”均相同,但是排列不同的 序列b,能否经过有限次01置换使b变成a?
答案是可以的。具体请参考线性代数中逆序数的介绍,看完你就明白了。

2.截取\(s\)的前\(|k|\)段为\(s1\),设\(s1\)含0的个数为\(a\),含1的个数为\(b\),则对应的\(t\)需要\(a\)个1,\(b\)个0。

思路

1.线性循环,计算当前状态含01的个数,和达到当前状态时减去01的个数,有多少个零->就需要保留多少个1->就需要减去多少个1
2.如果需要1或0的个数不够了,说明达不到当前状态,后面状态也一定达不到,退出。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        string s;
        cin>>s;
        int a=0,b=0;
        for(int i=0;s[i];i++)
            if(s[i]=='1')a++;
            else b++;


        int ans=a+b;
        int a1=0,b1=0;
        for(int i=0;s[i];i++)
        {
            if(s[i]=='1')b1++;
            else a1++;
            if(a1>a||b1>b)break;
            ans=min(ans,a+b-a1-b1);//总数减去需要保留的个数
        }
        cout<<ans<<endl;
    }
    return 0;
}

标签:01,int,个数,a1,++,Swap,Delete,b1
From: https://www.cnblogs.com/pure4knowledge/p/17913378.html

相关文章

  • C++ new与delete
    C++new与delete在C语言中,动态分配内存时一般常使用malloc()函数,但是对于非内置数据类型(如struct、enum、class),malloc()与free()无法满足动态对象的需求,因此C++引入new与delete关键字,用来进行内存申请与释放空间。1.new运算符new运算符用来申请一块连续的内存,其格式如下:new......
  • elasticsearch 文档删除操作:delete和delete_by_query
    api:(elasticsearch版本7.3)#删除指定id的文档DELETE/<index>/_doc/<_id>#按查询条件删除POST/<index>/_delete_by_query1.DELETE/<index>/_doc/<_id>删除指定id的文档#测试--删除文档DELETE/king_test_person/_doc/223/2.POST/<index>/_dele......
  • C++: 智能指针的自定义删除器 `Custom Deleter` 有什么用?
    C++11智能指针std::shared_ptr和std::unique_ptr都支持自定义删除器,本文将介绍自定义删除器的使用场景和使用方法。智能指针模板参数的第二个类型是删除器,一般是一个函数指针类型或者是一个函数对象类型。通常情况下,删除器的类型是std::default_delete<T>,它是一个函数对象类型,用于......
  • 爬虫遇到`abort` method will be deleted later!怎么解决
     在进行网络爬虫过程中,有时候可能会遇到"abort"methodwillbedeletedlater!的问题,这是由于网站的反爬机制或者请求频率过高导致的。本文将介绍一些解决这个问题的方法和技巧。 1.调整请求频率: 通过减少请求的频率,可以降低被网站检测到的概率。可以使用延时或者随机等方式......
  • mysql的ON DELETE CASCADE 和ON DELETE RESTRICT区别
    ONDELETECASCADE和ONDELETERESTRICT是MySQL中两种不同的外键约束级联操作。它们之间的主要区别在于当主表中的记录被删除时,子表中相关记录的处理方式。ONDELETECASCADE:当在主表中删除一条记录时,所有与之相关的子表中的匹配记录也会被自动删除。这通常用于强耦合的关系,......
  • Delete和Truncate详解
    --delete命令--语法:deletefrom表名[where条件]--删除数据(避免这样写,会全部删除)DELETEFROM`student2`--删除指定数据DELETEFROM`student2`WHEREid=1;--truncate命令--作用:完全清空一个数据库表,表的结构和索引,约束不会变TRUNCATE`student2`/*delete与truncate的区别相......
  • "firmwarepasswd": MacOS Firmware Password Management: CHECK and DELETE Macbook P
    Abaels-MacBook-Pro:~abaelhe$suPassword:bash-3.2#firmwarepasswd-checkPasswordEnabled:Yesbash-3.2#firmwarepasswd-deleteDeleteFirmwarePasswordEnterpassword:PasswordremovedNOTE:MustrestartbeforechangeswilltakeeffectUsage:firmw......
  • linux系统swap交换分区
    swapspace是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者以它们的组合方式出现。当系统物理内存吃紧时,Linux系统会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为其他进程服务,而当系统需要访问swap上存储的内容时,系统会再将swap上的数据加载到......
  • perl:mysql binlog iud (insert、update、delete)分析 小脚本:实用程序
    1#!/usr/bin/perl2#utf-834usestrict;5usePOSIX;6useTime::HiResqw/sleeptime/;78$|=1;910my$line='#-----------------------------------------------------------------------';11my$debug=0;1213##------------......
  • 删除300w数据,delete语句要执行多久
    执行DELETE语句删除300万条数据的时间会受到多种因素的影响,包括数据库性能、服务器硬件配置、表结构等。无法准确预测删除操作所需的准确时间,因为它取决于具体情况。以下是一些可能影响DELETE语句执行时间的因素:数据库性能:数据库管理系统的性能和优化策略将直接影响删除操作的速度......