zoukankan      html  css  js  c++  java
  • 2018ICPC徐州区域赛网络赛G(VECTOR+SET,模拟)

    #include<bits/stdc++.h>
    using namespace std;
    int x,y;
    vector<int>v1,v2;
    long long solve(vector<int>v)
    {
        long long sum=0;
        set<int>s;
        int len=v.size();
        for(int i=len-1;i>=0;i--)//不会被完全覆盖,所以总会有露出的,倒序寻找前面比它小的(长度仅次于它的,每一波海浪都覆盖前面仅仅比它小的),即被它覆盖所影响的
        {
            set<int>::iterator it=s.lower_bound(v[i]);
            if(it==s.begin())//这就是最小的,全加,后面的在它的基础上加上多出来的一段即可
                sum+=v[i];
            else
            {
                it--;
                sum+=v[i]-*it;//减去比它小一点点的长度得到它多出来的长度
            }
            s.insert(v[i]);//放入集合进行二分排序
        }
        return sum;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&x,&y);
            v1.push_back(x);
            v2.push_back(y);
        }
        long long ans=0;
        ans=solve(v1)+solve(v2);
        printf("%lld",ans);
        return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    michael的沟通秘籍
    panels能否包含views_block ////// panels -- content pane 参数传递
    Unity动画
    DoTween动画插件学习
    C#委托的进一步学习
    阶段学习总结-坦克大战(2D)案例
    学习总结
    阶段学习总结-见缝插针案例
    阶段学习总结-坦克大战案例
    碰撞检测和触发检测
  • 原文地址:https://www.cnblogs.com/ldudxy/p/9631733.html
Copyright © 2011-2022 走看看