• B


    被一个DIV2--b题目卡到哭;

    总结:用到标记数组时,如果需要多次初始化,首先判断数据范围,如果特别大的话,不要用memset,,用map<int ,bool>做标记。

    思路:以sum=0,做判断标准,跑数组的时候同时判断时候满足条件,不满足直接退出。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1E6+7;
    map<int ,bool >mp;
    int arr[N];
    int pre[N];
    void solve(){
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)  scanf("%d",&arr[i]);
        if(n&1){
            puts("-1");
            return ;
        }
        int ans=0;
        for(int i=1;i<=n;){
            if(arr[i]<0) {
                puts("-1");
                return ;
            }
            else {
                mp.clear();
                mp[arr[i]]=1;
                int j;
                int sum=arr[i];
                int pos=0;
                for(j=i+1;sum!=0&&j<=n;j++){
                    sum+=arr[j];
                    if(arr[j]<0){
                        int a=-arr[j];
                        if(mp[a]) continue ;
                        else {
                            puts("-1");
                            return ;
                        }
                    }
                    else {
                        if(mp[arr[j]]){
                            puts("-1");
                            return ;
                        }
                        else mp[arr[j]]=1;
                    }
                }
                if(sum==0) {
                    ans++;
                    pre[ans]=j-i;
                    i=j;
                }
                else {
                    puts("-1");
                    return ;
                }
            }
        }
        cout<<ans<<endl;
        for(int i=1;i<=ans;i++)    printf("%d ",pre[i]);
        cout<<endl;
    }
    int main(){
        solve();
        return 0;
    }
  • 相关阅读:
    iftop 安装流程
    Centos 6.5 Tengine 安装流程
    linux 查看系统进程前十
    Centos 6.5 mongodb 安装流程
    linux 磁盘查看方式
    Linux 磁盘分区及挂载
    linux 路由添加
    rsyslog 重启
    文件上传到Web服务器
    一些链接1
  • 原文地址:https://www.cnblogs.com/Accepting/p/11914783.html
Copyright © 2020-2023  润新知