2019 年百度之星—初赛一 B题 Game

Posted 2462478392lee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019 年百度之星—初赛一 B题 Game相关的知识,希望对你有一定的参考价值。

题目链接

题意:最开始可以选择任意位置,在一个坐标轴上,依次走到一个区间里面,可以选择走一步两步,求最小步数。

思路:贪心,刚开始合并区间,确定初始位置以及方向。往右走肯定到左端点,往左走先到右端点,判断下个区间的和下下个区间的方向是否一致,一致如果到是奇数,则当偶数处理位置,反之,仍然走到

端点上。wa了很多次,细节没注意好。

#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<map>
#include<queue>
#define ll long long
using namespace std;
const int N=1100000;
int l[1100],r[1100];
int t,n;
struct Node

  int a,b;
e[1100];
int main()

  scanf("%d",&t);
  while(t--)
  
    memset(l,0,sizeof(l));
    memset(r,0,sizeof(r));
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    
      scanf("%d%d",&e[i].a,&e[i].b);
    
    int ans=0;
    l[0]=e[0].a;
    r[0]=e[0].b;
    int j=0;
    for(int i=1;i<n;i++)
    
          if(e[i].a>=r[j]||e[i].b<=l[j])
          
            j++;
            l[j]=e[i].a;
            r[j]=e[i].b;
          
          else if(e[i].a>l[j]&&e[i].b<r[j])
          
            l[j]=e[i].a;
            r[j]=e[i].b;
          
          else if(e[i].a>l[j]&&e[i].b>r[j]&&e[i].a<r[j])
          
            l[j]=e[i].a;
          
          else if(e[i].a<l[j]&&e[i].b>l[j]&&e[i].b<r[j])
          
            r[j]=e[i].b;
          
    
    int s;
    if(l[1]>r[0])
    
      s=r[0];
    
    else
    
      s=l[0];
    
    int tmp;
    for(int i=1;i<=j;i++)
    
      if(r[i]<l[i-1])
      
        tmp=s-r[i];
        s=r[i];
        if(tmp%2&&l[i]<s&&i+1<=j&&r[i+1]<l[i])
                                            
          tmp++;
          s--;
        
      
      else if(l[i]>r[i-1])
      
        tmp=l[i]-s;
        s=l[i];
        if(tmp%2&&r[i]>s&&i+1<=j&&l[i+1]>r[i])
        
          tmp++;
          s++;
        
      
      if(tmp%2) 
          ans+=tmp/2+1;
      else
           ans+=tmp/2;
    
    printf("%d\n",ans);
  
  return 0;

 

以上是关于2019 年百度之星—初赛一 B题 Game的主要内容,如果未能解决你的问题,请参考以下文章

2019 年百度之星·程序设计大赛 - 初赛三

2019 年百度之星·程序设计大赛 - 初赛二

2019年百度之星·程序设计大赛 初赛一 题解

2016"百度之星" - 初赛(Astar Round2A) 1004 D Game 区间DP

百度之星初赛A hdu6112

百度之星初赛一 补题