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\n" ,ans);
}
return 0;
}
hdu4932 小贪心的更多相关文章
- hdu4544 优先队列(小贪心)
题意: 湫湫系列故事--消灭兔子 Time Limit: ...
- 【算法系列学习】HDU 5527 Too Rich贪心
http://www.cnblogs.com/AOQNRMGYXLMV/p/4934747.html #include<iostream> #include<cstdio> # ...
- [ 10.05 ]CF每日一题系列—— 962B贪心和思维?
Description: 非 * 号的地方可以放A或B,不能AA或BB,一共有a个A,b个B,问你最多放几个 Solution: 1.模拟一下,找连续空位长度,如果长度为奇数,则我可以有一个位置放任意 ...
- Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心
题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai,询问q次,问你能不能凑出价值为qiq_iqi的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...
- bzoj 1044 贪心二分+DP
原题传送门http://www.lydsy.com/JudgeOnline/problem.php?id=1044 首先对于第一问,我们可以轻易的用二分答案来搞定,对于每一个二分到的mid值 我们从l ...
- CF 1003D Coins and Queries【位运算/硬币值都为2的幂/贪心】
Polycarp has n coins, the value of the i-th coin is ai. It is guaranteed that all the values are int ...
- bzoj 4245: [ONTAK2015]OR-XOR【按位贪心】
知道按位贪心但是不知道怎么贪-- 求一个a的异或前缀和s,然后按位从大到小贪心,ans的当前位能为0的条件是s中有>=m个位置这一位为0且没有flag,并且s[n]的这一位为0 如果符合要求,那 ...
- Wannafly挑战赛10:A题:小H和迷宫
题目描述 小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%.b%.c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使 ...
- bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】
1<<i的结果需要是long long的话i是long long是没用的--要写成1ll<<i--我别是个傻子吧 虽然写的是二进制贪心,但是我觉得二分可能更好写吧(但是会慢) ...
随机推荐
- LanQiao-297(快速排序)
快速排序 LanQiao-297 #include<iostream> #include<cstdio> #include<algorithm> #include& ...
- OpenGL光照贴图
一:啥叫贴图 上一节中,我们将整个物体的材质定义为一个整体,但现实世界中的物体通常并不只包含有一种材质,而是由多种材质所组成. 拓展之前的系统,引入漫反射和镜面光贴图(Map).这允许我们对物体的漫反 ...
- RichTextBox FlowDocument类型操作
最近研究微信项目,套着web版微信协议做了一个客户端,整体WPF项目MVVM架构及基本代码参考于:http://www.cnblogs.com/ZXdeveloper/archive/2016/1 ...
- drf给上传图片重命名
1.先在你项目中添加一个文件夹如:system 在文件夹下添加__init__.py 和storage.py文件,并在storage.py中添加如下代码: #复制代码 -- coding: UTF-8 ...
- Windows系统和Linux系统下安装Mongodb及可视化页面展示
一.Windows系统安装MongoDB 下载地址: 官方:http://www.mongodb.org/ 其它:http://dl.mongodb.org/dl/win32/x86_64 下 ...
- Memory Networks01 记忆网络经典论文
目录 1.Memory Networks 框架 流程 损失函数 QA 问题 一些扩展 小结 2.End-To-End Memory Networks Single Layer 输入模块 算法流程 Mu ...
- 走进docker-初识
什么是Docker容器? 容器是打包代码及其所有依赖项的软件的标准单元,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境.Docker容器映像是一个轻量级的,独立的,可执行的软件软件包,其 ...
- FTT简单入门板子
DFT : 1 #include <cstdio> 2 #include <iostream> 3 #include <cmath> 4 #include < ...
- Linux内核源码分析之setup_arch (四)
前言 Linux内核源码分析之setup_arch (三) 基本上把setup_arch主要的函数都分析了,由于距离上一篇时间比较久了,所以这里重新贴一下大致的流程图,本文主要分析的是bootmem_ ...
- vue-router 监控全局路由,在路由中改变vuex中的状态值