zoukankan      html  css  js  c++  java
  • hdu4932 小贪心

    题意:
         给了一些处在x轴上的点,要求我们用长度相等的线段覆盖所有点,线段和线段之间不能重叠,问线段最长可以使多长。

    思路:

          一开始一直在想二分,哎!感觉这个题目很容易就往二分上去想,但是其实仔细想想并不是满足单调性的(对于我的方法是不满足单调性的,别的方法有可能可以),一开始想的是不能出现连续的两个不满足,这里的满足就是可以有线段,各种wa,说下正确的思路吧,这个是中午才想出来的,这个题目我们可以贪心,首先要明白,最后的答案只有两种情况,要么是某两个相邻点的距离,要么是某个相邻点距离的一半,所以我们把所有可能都枚举一半,判断是否满足的时候可以用贪心的想法,对于每一个点,要么被左边线段覆盖,要么被右边线段覆盖,我们从左往右跑的话,那么就先判断能不能被左边覆盖,不能的话在判断能不能被右边覆盖,如果都不能那么当前长度就失败了,至于判断的细节很简单,自己想下,想不出来看下下面的代码就知道了。


    #include<stdio.h>
    #include<algorithm>
    
    #define N 51
    
    using namespace std;
    
    double dis[N] ,num[N];
    int mk[N];
    
    int ok(double now ,int n)
    {
       mk[1] = 1;
       for(int i = 2 ;i < n ;i ++)
       {
          double disl = dis[i-1] ,disr = dis[i];
          if(mk[i-1] == 1 && now <= disl || mk[i-1] == 2 && (now == disl || now <= disl / 2))
          mk[i] = 1;
          else if(now <= disr) mk[i] = 2;
          else return 0;
       }
       return 1;
    }
    
    double maxx(double x ,double y)
    {
       return x > y ? x : y;
    }
    
    int main ()
    {
       int n ,i ,t;
       scanf("%d" ,&t);
       while(t--)
       {
          scanf("%d" ,&n);
          for(i = 1 ;i <= n ;i ++)
          scanf("%lf" ,&num[i]);
          sort(num + 1 ,num + n + 1);
          for(i = 2 ;i <= n ;i ++)
          dis[i-1] = num[i] - num[i-1];
          double ans = 0;
          for(i = 1 ;i < n ;i ++)
          {
             if(ok(dis[i] ,n))
             ans = maxx(ans ,dis[i]);
             else if(ok(dis[i]/2 ,n))
             ans = maxx(ans,dis[i]/2);
          }
          printf("%.3lf
    " ,ans);
       }
       return 0;
    }
          
    
    
    
    
    
    

  • 相关阅读:
    sql中别名加as和不加as的区别
    easyui 扩展 datagrid 数据网格视图
    asp.net 版本一键升级,后台直接调用升级脚本
    SQLserver 还原数据库报“指定转换无效”的错的解决方案
    sql视图显示数据不对应
    django channels 实现实时通讯,主动推送
    django orm信号机制 + apschedule 定时任务
    django 使用原始SQL语句方式
    Django model 常用查询(搬运来备份的)
    Python3+ Django2.7开发web排坑记006 apache+wsgi部署应用
  • 原文地址:https://www.cnblogs.com/csnd/p/12062870.html
Copyright © 2011-2022 走看看