zoukankan      html  css  js  c++  java
  • iteratornullHDU4302(map的用法)

    时间紧张,先记一笔,后续优化与完善。

        标题:Holedox Eating

        每日一道理
    心是一棵树,爱与希望的根须扎在土里,智慧与情感的枝叶招展在蓝天下。无论是岁月的风雨扑面而来,还是滚滚尘埃遮蔽了翠叶青枝,它总是静默地矗立在那里等待,并接受一切来临,既不倨傲,也不卑微。
      心是一棵树,一个个故事被年轮携载;一回回驿动与飞鸟相约;一次次碰撞使它绵密柔韧;一幕幕经历造就了它博广的胸怀。心是一棵树,独木不成林。因此,树与树既独立又相联,心与心既相异又相亲。
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <map>
    
    using namespace std;
    const int oo=1000000;
    
    int main()
    {
        map<int,int>mymap;
        int t,l,n,co,a,b,ca=0;
        map<int,int>::iterator it1,it2;
        scanf("%d",&t);
        while(t--)
        {
            mymap.clear();
            mymap[oo]=1,mymap[-oo]=1;
            scanf("%d%d",&l,&n);
            co=0;
            int ans=0,dir;
            while(n--)
            {
                scanf("%d",&a);
                if(a)
                {
                    it1=mymap.lower_bound(co);
                    if(it1->first==co)
                    {
                        it1->second--;
                        if(it1->second==0) mymap.erase(it1);
                    }
                    else
                    {
                        it1--;
                        it2=mymap.upper_bound(co);
                        if(it1->first==-oo&&it2->first==oo) continue;
                        if(co-it1->first==it2->first-co)
                        {
                            if(dir==1)
                            {
                                it2->second--;
                                ans+=it2->first-co;
                                co=it2->first;
                                if(it2->second==0) mymap.erase(it2);
                            }
                            else
                            {
                                it1->second--;
                                ans+=co-it1->first;
                                co=it1->first;
                                if(it1->second==0) mymap.erase(it1);
                            }
                        }
                        else if(it2->first-co<co-it1->first)
                        {
                            dir=1;
                            ans+=it2->first-co;
                            co=it2->first;
                            it2->second--;
                            if(it2->second==0) mymap.erase(it2);
                        }
                        else
                        {
                            dir=0;
                            ans+=co-it1->first;
                            co=it1->first;
                            it1->second--;
                            if(it1->second==0) mymap.erase(it1);
                        }
                    }
                }
                else
                {
                    scanf("%d",&b);
                    mymap[b]++;
                }
            }
            printf("Case %d: %d\n",++ca,ans);
        }
        return 0;
    }

        
     

    文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn

    --------------------------------- 原创文章 By
    iterator和null
    ---------------------------------

  • 相关阅读:
    .net core 3.1 过滤器(Filter) 和中间件和AOP面向切面拦截器
    socket通信框架——boost asio
    远程过程调用框架——gRPC
    数据序列化工具——flatbuffer
    springboot项目启动----8080端口被占用排雷经过
    如何配置HOSTS文件
    使用线程Callable实现分段获取一个url连接的资源数据
    Socket网络编程课件
    (6)优化TCP编写 服务器端同时支持多个客户端同时访问
    SpringBoot配置属性之Security
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3109052.html
Copyright © 2011-2022 走看看