hdu 4932 /bestcoder B题 #4 /思维题
题意:给一个数列(整数),用一些不相交的区间去覆盖(只能是用端点去覆盖,端点可以交)。而且区间出度相等。求最大区间长度。
开始一下就敲了,枚举每个区间长度,判断合法,更新最大。但是后来一看小数,感觉不行,改为二分,后来还是挂了。。。
赛后才知道,二分的时候,答案必需要满足单调性啊,这里小的数据不行,大的数据可以行!如 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;
}
hdu 4932 /bestcoder B题 #4 /思维题的更多相关文章
- BZOJ 3097: Hash Killer I【构造题,思维题】
3097: Hash Killer I Time Limit: 5 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 963 Solved: 36 ...
- HDU 5122 K.Bro Sorting(模拟——思维题详解)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5122 Problem Description Matt's friend K.Bro is an A ...
- HDU 6205 2017沈阳网络赛 思维题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6205 题意:给你n堆牌,原本每一堆的所有牌(a[i]张)默认向下,每次从第一堆开始,将固定个数的牌(b ...
- hdu 5284 BestCoder Round #48 ($) 1001 水题 *
题意:看一个字符串中是否包含顺序的 w y h ,字符之间可以有其他字符,并且如果有多个连续的vv,则可以看做一个w 比较水,直接看代码 #include<cstdio> #incl ...
- 2016女生赛 HDU 5710 Digit-Sum(数学,思维题)
Digit-Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total S ...
- hdu 4932 BestCoder Round #4 1002
这题真是丧心病狂,引来今天的hack狂潮~ Miaomiao's Geometry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- 【模拟8.01】matrix(DP杂题,思维题)
很神的题,感谢lnc大佬的指点. 先设1-LL[i]统称左区间,RR[i]-m为右区间 用L[i]统计从1-i列,出现的左区间端点的前缀和,R[i]是右区间.... f[i][j]中j表示当前在第i列 ...
- 辣些数据结构的思维题(思维题好难一个都不会TAT)
洛谷P1268 树的重量 我觉得难点在于把每个叶子节点想象成分出来的叉 然后如果c是a--b这条边上分出来的,可以通过Dab,Dca,Dcb算出分叉边的长度, 长度=(Dac+Dbc-Dab)/2 怎 ...
- HDU 1029 Ignatius and the Princess IV / HYSBZ(BZOJ) 2456 mode(思维题,~~排序?~~)
HDU 1029 Ignatius and the Princess IV (思维题,排序?) Description "OK, you are not too bad, em... But ...
随机推荐
- mysql命令行复制数据库
为了方便快速复制一个数据库,可以用以下命令将db1数据库的数据以及表结构复制到newdb数据库创建新的数据库#mysql -u root -p123456 mysql>CREATE DATABA ...
- Docker DockerFile文件指令 & 构建
1.dockerfile指令格式 # Comment注释 INSTRUCTION argument指令名 + 参数 2.普通指令 1. FROM 已存在的镜像,基础镜像,第一条非注释指令 FROM & ...
- read design into DC memory
- 【php】instanceof
instanceof 的使用还有一些陷阱必须了解.在 PHP 5.1.0 之前,如果要检查的类名称不存在,instanceof 会调用__autoload().另外,如果该类没有被装载则会产生一个致命 ...
- stm32之PWM学习
下图是一个STM32普通PWM形成的图形原理说明 自动重装载寄存器(ARR)用于确定波形的频率(即周期).捕获比较寄存器(CCRx)(用于确定占空比的) PWM的工作过程如下:首先ARR寄存器里面的值 ...
- stm32L0系列学习(一)
开发用到的具体芯片是stm32L011F3 stm32L0总体特性,定位: 可见容量是比较少的,功耗很低,adc12位,7种低功耗模式 jlink和sdk的引脚关系图: HAL的库框图 官方给出的HA ...
- pidgin中使用QQ
安装 实现的功能: 可以发送静态表情 可以发送动态表情 可以发图片? 可以添加好友 可以添加群?
- LA 7049 Galaxy 枚举
题意: \(x\)轴上有\(n\)个质量为\(1\)的点,他们的坐标分别为\(x_i\). 质心的坐标为\(\frac{\sum{x_i}} {n}\) 转动惯量为\(\sum{d_i^2}\),其中 ...
- 软件工程师应该关注的web加密手段
加密算法 1.非对称加密(公开密钥加密) 公开密钥加密,是加密和解密使用不同密钥的算法,广泛用于信息传输中. 常见的算法有:RSA.ElGamal.Rabin. 2.对称加密 ...
- webdriver高级应用- 启动带有用户配置信息的firefox浏览器窗口
由于WebDriver启动FireFox浏览器时会启用全新的FireFox浏览器窗口,导致当前机器的FireFox浏览器已经配置的信息在测试中均无法生效,例如已经安装的浏览器插件.个人收藏夹等.为了解 ...