zoukankan      html  css  js  c++  java
  • 二分

    传送门

    和二分没有半毛钱关系,题目大意有点不好描述。

    题解:数的范围在int范围,而且有负数,不能用数组,用map存储,前缀和代表有多少个最多有多少种满足描述,取最大的前缀和。

    找重叠区间最多的个数。输出.时,a点加一。输出-时,负无穷到a-1加一。输出+时,a+1到正无穷加一。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5;
    const int inf=INT_MAX;
    map<int,int>m;
    int main(){
        int n,a;char c;cin>>n;
        for(int i=0;i<n;i++){
            scanf("%d %c",&a,&c);
            if(c=='.'){
                m[a]++;m[a+1]--;///a点加一
            }
            else if(c=='+'){
                m[-inf]++;m[a]--;///负无穷到a-1加一
            }
            else {
                m[a+1]++;///a+1到正无穷加一
            }
        }
        map<int,int>::iterator it;
        int ans=-inf;int t=0;
        for(it=m.begin();it!=m.end();it++){
            t+=it->second;
            ans=max(t,ans);
        }
        cout<<ans<<endl;
        return 0;
    }

     

  • 相关阅读:
    处理图片
    打死都不放手
    美白
    词云
    太阳花绘制
    测评软件Lemon教程
    --解释?说明:--
    T1 数字配对 题解
    P1100 高低位交换
    P1143 进制转换
  • 原文地址:https://www.cnblogs.com/mohari/p/12984175.html
Copyright © 2011-2022 走看看