zoukankan      html  css  js  c++  java
  • codeforces赛后总结——1556C. Compressed Bracket Sequence

    题意见:Problem - C - Codeforces

    暴力O(n^2)做就可以。

    考虑每个奇数位 i(也就是左括号的位置)。

    ① 先将 i 与 i+1 进行匹配,ans+=min(a[i],a[i+1])。

    ②如果有剩余的左括号可供后续匹配,就接着往下做(接③),否则考虑下一个奇数位(i+2)。

    ③也是一对一对括号考虑,O(n)扫后边的序列。need表示[i+3,j+1]进行完全匹配所需要的左括号数(等价于多余的右括号)。

    详情见代码。

    重点就是考虑有多少序列用了 i 这位的左括号,然后依次统计贡献。

    #include <bits/stdc++.h>
    #define N 1010
    #define ll long long
    using namespace std;
    int n;
    ll ans,a[N];
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%lld",&a[i]);
        }
        for(int i=1;i<=n;i+=2)
        {
            ll rest;
            ans+=min(a[i],a[i+1]);
            if(a[i]<a[i+1]) continue;
            rest=a[i]-a[i+1];
            ll need=0;
            for(int j=i+2;j<=n;j+=2)
            {
                need+=a[j+1]-a[j];
                if(need>=0)
                {
                    ans+=min(need,rest)+1;
                    rest-=need;
                    need=0;
                }
                if(rest<0) break;
            }
        }
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    struts2文件上传下载
    struts2自定义拦截器
    JSP_Servlet 解决中文乱码登录问题
    ajax提交form表单
    sql语句大全
    spring
    struts2
    jsp_servlet
    jsp_servlet2
    数据库
  • 原文地址:https://www.cnblogs.com/al76/p/15265085.html
Copyright © 2011-2022 走看看