题意:给一个数列(整数),用一些不相交的区间去覆盖(只能是用端点去覆盖,端点可以交)。而且区间出度相等。求最大区间长度。

开始一下就敲了,枚举每个区间长度,判断合法,更新最大。但是后来一看小数,感觉不行,改为二分,后来还是挂了。。。

赛后才知道,二分的时候,答案必需要满足单调性啊,这里小的数据不行,大的数据可以行!如 0 1 5 6 10, 3不行,4行。

后来才知道,枚举时,每个差值的一半也是可以的:仔细想想很容易证明。(水,坑)

#include<iostream>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
vector<int>v; int n;
bool ok(double tmax)
{
int fl=-1;
for(int j=1;j<n-1;j++)
{
if(fl==-1) //之前的放在前
{
if(v[j]-tmax<v[j-1]) //放前面不行,放后面:
{
if(v[j]+tmax<=v[j+1]) //放后面
{
fl=1;
if(v[j]+tmax==v[j+1]) //下一个免了
{
j++;
fl=-1;
}
}
else //否则不行
return 0;
}
else //放前面
fl=-1;
}
else //之前的在后面,
{
if(v[j]-tmax<v[j-1]+tmax) //放前面放不来
{
if(v[j]+tmax<=v[j+1])
{
fl=1;
if(v[j]+tmax==v[j+1])
{
j++;
fl=-1;
}
}
else
{
return 0;
}
}
else
{
fl=-1;
}
}
} return 1;
}
vector<double>dis;
int main()
{
int T;
cin>>T;
while(T--)
{
cin>>n;
int tx=0;
v.clear();
dis.clear();
for(int i=0;i<n;i++)
{
cin>>tx;
v.push_back(tx);
}
sort(v.begin(),v.end());
for(int i=0;i<n-1;i++)
{
double d=v[i+1]-v[i];
dis.push_back(d);
dis.push_back(d/2.0);
}
sort(dis.begin(),dis.end());
for(int i=dis.size()-1;i>=0;i--)
{
if(ok(dis[i]))
{
printf("%.3lf\n",dis[i]);
break;
}
} }
return 0;
}

最新文章

  1. 最小生成树——kruskal算法
  2. 用python实现,冒泡排序演示
  3. JavaScript的一些知识碎片(2)-反射-全局变量-回调
  4. Spring3系列11- Spring AOP——自动创建Proxy
  5. Android调用蓝牙打印机
  6. JQuery文件上传插件uploadify在MVC中Session丢失的解决方案
  7. 程序破解之 API HOOK技术 z
  8. JVM的参数设置与OutOfMemoryError异常关系
  9. POJ 3107-Godfather(树形dp)
  10. sublime中使用markdown
  11. 04_Nginx命令行参数,控制信号,Nginx启动、停止、重启命令
  12. Debian社区群龙无首
  13. dattime和timestamp的异同
  14. Python中如何设置输出文字的颜色
  15. IT行业&#173;——Linux
  16. bzoj 3325 密码 - Manacher
  17. React native 之android的图标和启动图片
  18. Ubuntu 14.04 安装 Xilinx ISE 14.7 全过程(转)
  19. JFace TableViewer性能改善 -- 使用VirtualTable
  20. plt绘制 2维、3维散点图

热门文章

  1. Docker 容器的网络连接 &amp; 容器互联
  2. 解决linux不能解压rar格式压缩包
  3. spartan6不能直接把时钟连到IO上
  4. win10安装pytorch——前面有坑,快跳进去鸭
  5. python-数据类型总结 (面试常问)
  6. 通过session模拟登陆
  7. static 的三个作用
  8. POJ:1086-Parencodings
  9. BZOJ 5336: [TJOI2018]party
  10. 反射的妙用-类名方法名做参数进行方法调用实例demo