zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam

    Karlsson has recently discovered a huge stock of berry jam jars in the basement of the house. More specifically, there were 2n2n jars of strawberry and blueberry jam.

    All the 2n2n jars are arranged in a row. The stairs to the basement are exactly in the middle of that row. So when Karlsson enters the basement, he sees exactly nn jars to his left and nn jars to his right.

    For example, the basement might look like this:

    Being the starightforward man he is, he immediately starts eating the jam. In one minute he chooses to empty either the first non-empty jar to his left or the first non-empty jar to his right.

    Finally, Karlsson decided that at the end the amount of full strawberry and blueberry jam jars should become the same.

    For example, this might be the result:

    He has eaten 11 jar to his left and then 55 jars to his right. There remained exactly 33 full jars of both strawberry and blueberry jam.

    Jars are numbered from 11 to 2n2n from left to right, so Karlsson initially stands between jars nn and n+1n+1.

    What is the minimum number of jars Karlsson is required to empty so that an equal number of full strawberry and blueberry jam jars is left?

    Your program should answer tt independent test cases.

    Input

    The first line contains one integer tt (1t10001≤t≤1000) — the number of test cases.

    The first line of each test case contains a single integer nn (1n1051≤n≤105).

    The second line of each test case contains 2n2n integers a1,a2,,a2na1,a2,…,a2n (1ai21≤ai≤2) — ai=1ai=1 means that the ii-th jar from the left is a strawberry jam jar and ai=2ai=2 means that it is a blueberry jam jar.

    It is guaranteed that the sum of nn over all test cases does not exceed 105105.

    Output

    For each test case print the answer to it — the minimum number of jars Karlsson is required to empty so that an equal number of full strawberry and blueberry jam jars is left.

    Example
    input
    Copy
    4
    6
    1 1 1 2 2 1 2 1 2 1 1 2
    2
    1 2 1 2
    3
    1 1 1 1 1 1
    2
    2 1 1 1
    
    output
    Copy
    6
    0
    6
    2
    
    Note

    The picture from the statement describes the first test case.

    In the second test case the number of strawberry and blueberry jam jars is already equal.

    In the third test case Karlsson is required to eat all 66 jars so that there remain 00 jars of both jams.

    In the fourth test case Karlsson can empty either the second and the third jars or the third and the fourth one. The both scenarios will leave 11 jar of both jams.

     

     

    #include <iostream>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <set>
    //#include <unordered_map>
    #include <map>
    #include <queue>
    #include <cstdio>
    #include <cstdlib>
    #include <string>
    #include <cstring>
    //#include <multimap>
    #define ll long long
    #define inf 0x3f3f3f3
    using namespace std;
    const int mxn = 2e5+10;
    #define TLE std::ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    #define ls now<<1,l,mid
    #define rs now<<1|1,mid+1,r
    #define lc now<<1
    #define rc now<<1|1
    #define upsum(now) rt[now].sum =rt[now<<1].sum + rt[now<<1|1].sum ;
    #define upmx(now) rt[now].mx = max(rt[now<<1].mx , rt[now<<1|1].mx) ;
    #define pb push_back
    int n,m,k,t,mx,mn,l,r,dp[mxn],u,v,cost;
    int l1[mxn>>1],l2[mxn>>1], r1[mxn>>1],r2[mxn>>1];
    string str,ch;
    int main()
    {
        TLE;
        cin>>t;
        for(int tt=1; tt<=t; tt++)
        {
            cin>>n;
            map<int,int>mp;
            int ans = 0 ;
            mp[0] = n ;
            for(int i=0;i<n;i++)
            {
                cin>>dp[i];
                ans += ( dp[i]==1? -1: 1 );
                mp[ans] = n-1-i;
            }
            for(int i=n-1;i>=0;i--)
                cin>>dp[i];
            ans = 0 ; mn =mp[0]+n;
            for(int i=0;i<n;i++)
            {
                ans += ( dp[i]==1? -1: 1 );
                if(mp.count(-ans))
                {
                    mn = min( mn , mp[-ans]+n-1-i );
                }
            }
            cout<<mn<<endl;
        }
        return 0 ;
    }
    所遇皆星河
  • 相关阅读:
    Java学习-068-多线程01:继承 Thread 类
    Linux-026-Centos Nginx 配置 pid 文件路径解决 service nginx status 提示:Can't open PID file /var/run/nginx.pid (yet?) after start: No such file or directory
    Linux-025-Centos Nginx 代理配置:同一端口代理不同服务
    Linux-024-Centos Nginx 代理配置:不同端口代理不同服务
    Linux-023-Centos Nginx Lua 脚本三种基本引用方式示例
    Linux-022-Centos Nginx 配置环境变量,常规命令
    Linux-021-Centos Nginx 配置服务管理,并设置开机启动
    Linux-020-Centos Shell 安装 Nginx 1.18.0
    Linux-019-Centos Shell 安装 Nginx 后启动时提示找不到Lua模块的libluajit-5.1.so.2文件,具体提示信息:./nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
    PySe-021-requests 使用 proxies 参数实现通过代理访问目标地址
  • 原文地址:https://www.cnblogs.com/Shallow-dream/p/12076158.html
Copyright © 2011-2022 走看看