zoukankan      html  css  js  c++  java
  • HDU-6668-Game 百度之星第一场B

      在多个连续的区间段中,选出连续重复度最高的区间,这样连续选出多个重复度最高的不相交区间,然后从第一个区间的左边已经右边开始,连续贪心即可,答案取最小值

    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<stdio.h>
    #include<vector>
    #define pii pair<int,int>
    #define pb push_back
    #define mp make_pair
    #define LL long long
    using namespace std;
    vector<pii>v;
    const int maxx = 1005;
    int a[maxx];
    int b[maxx];
    int n;
    LL go(int x){
       LL ans=0;
       for(int i=1;i<v.size();i++){
          if (v[i].first>x){
              ans+=(v[i].first-x+1)/2;
              if (i<v.size()-1){
                 if ((v[i].first-x)%2){ ///长度为奇数
                     if (v[i+1].first>v[i].second && v[i].second-v[i].first>0){
                        x=v[i].first+1;
                     }else x=v[i].first;
                 }else x=v[i].first;
              }else x=v[i].first;
          }else {
              ans+=(x-v[i].second+1)/2;
              if (i<v.size()-1){
                  if ((x-v[i].second)%2){
                     if(v[i+1].second<v[i].first && v[i].second-v[i].first>0){
                        x=v[i].second-1;
                     }else x=v[i].second;
                  }else x=v[i].second;
              }else x=v[i].second;
          }
       }
       return ans;
    }
    int main(){
      int t;
      scanf("%d",&t);
      while(t--){
        v.clear();
        scanf("%d",&n);
        scanf("%d%d",&a[1],&b[1]);
        int l=a[1],r=b[1];
        for (int i=2;i<=n;i++){
            scanf("%d%d",&a[i],&b[i]);
            if (a[i]<=r && b[i]>=l){
                l=max(l,a[i]);
                r=min(r,b[i]);
            }else {
                v.pb(mp(l,r));
                l=a[i];
                r=b[i];
            }
        }
        v.pb(mp(l,r));
        LL ans=2e18;
        ans=min(ans,go(v[0].first));
        ans=min(ans,go(v[0].second));
        printf("%lld
    ",ans);
      }
      return 0;
    }
    有不懂欢迎咨询 QQ:1326487164(添加时记得备注)
  • 相关阅读:
    C++-struct类的新特性当class用
    rbenv、fish 與 VSCode 設置之路
    angularJS进阶阶段(4)
    插入排序
    Vimium
    Design Patterns 25
    Mysql(或者sqlite), Mongo中update Column + 1
    Hexo
    继承
    Gradle的依赖方式——Lombok在Gradle中的正确配置姿势
  • 原文地址:https://www.cnblogs.com/bluefly-hrbust/p/11381279.html
Copyright © 2011-2022 走看看