【CF】873B 前缀和+map

Balanced Substring

刚讲过差分与前缀和专题,一直以为这两个名词很高大上,其实也就那回事。哈哈。

题源https://codeforces.com/contest/873/problem/B

题意:给你一串01字符串,让你寻找其中最长的平衡字符串长度。

平衡字符串:字符串中 1的个数=0的个数

题解:所谓平衡,那么当遇见0的时候当-1。然后利用前缀和的思想,求出前缀和。

当一个前缀和第二次出现的时候就是出现了平衡字符串。那么我们用map<int,int>来记录前缀和sum和第一次出现的下标即可,之后再遇见sum,计算平衡字符串的长度就ok。

PS:我可不会告诉你我先开始求出了一个前缀和数组s,然后傻乎乎的从开始找那个数,然后从倒着找另一个数。时间复杂度太高了(扯犊子操作啊哈哈)

代码

#include <iostream>
#include <cstdio>
#include <map>
#define maxn 100005
using namespace std;
//@start: 2020-03-26 20:44:09
//source:https://codeforces.com/contest/873/problem/B
//前缀和

map<int,int> mp;

int main()
{
    int n,sum=0,ans=0;
    string s;
    cin>>n>>s;
    mp[0]=0;//此地方是个坑点
    for(int i=0;i<n;i++)
    {
        if(s[i]==‘1‘)sum++;
        else sum--;
        if(mp.count(sum))
            ans=max(ans,i+1-mp[sum]);
        else
            mp[sum]=i+1;
    }
    cout<<ans;
    return 0;
}

原文地址:https://www.cnblogs.com/AllenMi/p/12580418.html

时间: 2024-08-29 00:08:53

【CF】873B 前缀和+map的相关文章

cf之 前缀和差分

给定一个n×n的WB矩阵,给定一个k∗k的能把B变成W的橡皮擦,求橡皮擦作用一次后,全为W的行.列总数最大值 连接:http://codeforces.com/contest/1200/problem/D #include<bits/stdc++.h> using namespace std; int A[2004][2004]; char C[2004][2004]; int B[2004][2004]; int E[2004][2004]; int F[2004][2004]; int n

【POJ 3274】Gold Balanced Lineup (stl map )设计hash表,处理碰撞

题目链接 题目链接 http://poj.org/problem?id=3274 题意 输入每头牛的特征的10进制,若i~j头牛中每个数位的特征相等则满足要求,求所有满足要求的j-i的最大值. 解题思路 抽屉原理,用前缀和处理每个数位即可. 直接暴力的话复杂度太大了,所以需要取巧的办法. 直接暴力求解是sum[i][p] - sum[j][p] == sum[i][0] - sum[j][0].其中i表示第i头牛,j表示第j头牛,p表示第p个特征,i > j. 取巧的办法:sum[i][p] -

LeetCode 677. Map Sum Pairs 键值映射(C++/Java)

题目: Implement a MapSum class with insert, and sum methods. For the method insert, you'll be given a pair of (string, integer). The string represents the key and the integer represents the value. If the key already existed, then the original key-value

C/C++利用gsoap库调用WebService

C/C++调用WebService需要用到soap库,一般使用的有gsoap和axis cpp两种实现,这里使用gsoap来调用.gsoap可以在 linxu.windows.mac多种平台上使用. gsoap的主页地址是http://gsoap2.sourceforge.net/ 新建一个WebService: 1 //写一个简单的方法 2 [WebMethod(Description="返回字符串")] 3 public string HelloWorld(string str)

Java学习笔记(Javase毕向东版视频)七 常用API对象三

一.泛型:简单说就是对对象类型进行限定的技术 public class GenericDemo { public static void main(String[] args){ /*泛型作为1.5版之后的新技术,分两步使用 * 1.在类名之后用<类型参数>,这里就像函数中的普通参数一样命名即可 * 2.在生成对象和返回该对象参数时需要明确具体的类型,相当于传入实参 * 上面说的是泛型类,除此之外,泛型还可以用于类中方法和接口 */ GenericTest<Person> gt=n

spark访问hbase

import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor} import org.apache.hadoop.hbase.mapreduce.TableInputFormat import org.apache.spark.rdd.NewHadoopRDD val conf = HBaseConfiguration.create() conf.set(TableInputFormat.INPUT_TABLE, "tm

剪贴簿

剪贴簿 壹佰软件开发小组  整理编译   Microsoft Windows剪贴簿允许把数据从一个程序传送到另一个程序中.它的原理相对而言比较简单,把数据存放到剪贴簿上的程序或从剪贴簿上取出数据的程序都无须太多的负担.Windows 98和Microsoft Windows NT都提供了剪贴簿浏览程序,该程序可以显示剪贴簿的目前内容. 许多处理文件或者其它数据的程序都包含一个「Edit」菜单,其中包括「Cut」.「Copy」和「Paste」选项.当使用者选择「Cut」或者「Copy」时,程序将数

IOS计划 分析

1.基本介绍 IOS苹果公司iPhone.iPod touch和iPad操作系统和其他设备的发展. 2.知识点 1.IOS系统 iPhone OS(现在所谓的iOS)这是iPhone, iPod touch 和 iPad 设备的操作系统. 1.Core OS: 它是用FreeBSD和Mach所改写的Darwin, 是开源.符合POSIX标准的一个Unix核心.这一层包括或者说是提供了整个iPhone OS的一些基础功能,比方:硬件驱动, 内存管理.程序管理,线程管理(POSIX).文件系统,网络

info.plist、pch和四大对象(UIApplication、UIApplicationDelegate、UIWindow、UIViewController)

本文目录 1.程序配置文件info.plist,全局头文件pch 2.应用程序对象UIApplication介绍 3.UIApplicationDelegate介绍,程序启动过程 4.UIWindow对象 5.程序界面显示出来的过程 6.总结程序启动完整过程 -1.程序配置文件info.plist,全局头文件pch 1.程序配置文件info.plist,全局头文件pch 回到顶部 工程的配置中Info选项里面的内容实际上是info.plist文件里面的内容的拷贝,info.plist里面存放了许