XJOI网上同步训练DAY1 T1


思路:我们考虑由于没有人的区间会覆盖其他人,所以我们将区间按左端点排序,发现如果地盘长度已知,可以贪心地尽量往左放,来判断是否有解,因此做法很简单,就是二分答案,然后O(n)贪心判定,复杂度为O(nlogn)
满分程序:
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#define ll long long
const long double eps=1e-;
int n;
struct node{
long double l,r;
}a[];
bool cmp(node q,node w){
if (q.l==w.l) return q.r<w.r;
return q.l<w.l;
}
int read(){
char ch=getchar();int t=,f=;
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
bool check(long double mid){
long double last=,len=;
for (int i=;i<=n;i++){
len=std::max(a[i].r-std::max(a[i].l,last),(long double)0.0);
if (len<mid) return ;
last=std::max(a[i].l,last)+mid;
}
return ;
}
ll gcd(ll a,ll b){
if (b==) return a;
else return gcd(b,a%b);
}
void getpq(long double x,ll &p,ll &q){
long double mod=1e8,tmp;
p=,q=;
for (int i=;i<=n;i++){
tmp=fabs(x*i-(ll)(x*i+.));
if (tmp<mod)
mod=tmp,q=i,p=(ll)(x*i+.);
}
ll t=gcd(p,q);
p/=t;
q/=t;
}
int main(){
int T=read();
while (T--){
n=read();
for (int i=;i<=n;i++)
a[i].l=read(),a[i].r=read();
std::sort(a+,a++n,cmp);
long double l=,r=1e8;
while (r-l>eps){
long double mid=(l+r)/;
if (check(mid)) l=mid;
else r=mid;
}
ll p,q;
getpq(l,p,q);
printf("%lld/%lld\n",p,q);
}
}
注意:
(1)没开longdouble,这个错误率好像比较小。。
(2)eps开的不够小,这很可能WA
(3)输出的时候,有没有和其他的方案比较一下,谁的误差比较小。
真是个惨痛的教训。。。T_T
XJOI网上同步训练DAY1 T1的更多相关文章
- XJOI网上同步训练DAY6 T1
思路:考试的时候直接想出来了,又有点担心复杂度,不过还是打了,居然是直接A掉,开心啊. 我们发现,Ai<=7,这一定是很重要的条件,我们考虑状态压缩,去枚举路径中出现了哪些数字,然后我们把原来n ...
- XJOI网上同步训练DAY5 T1
思路:考虑得出,最终的集合一定是gcd=1的集合,那么我们枚举n个数中哪个数必须选,然后把它质因数分解,由于质数不会超过9个,可以状态压缩,去得出状态为0的dp值就是答案. #include<c ...
- XJOI网上同步训练DAY3 T1
思路:看来我真是思博了,这么简单的题目居然没想到,而且我对复杂度的判定也有点问题.. 首先我们选了一个位置i的b,那一定只对i和以后的位置造成改变,因此我们可以这样看: 我们从前往后选,发现一个位置的 ...
- XJOI网上同步训练DAY2 T1
[问题描述] 为了迎接校庆月亮中学操场开始施工.不久后操场下发现了很多古墓这些古墓中有很多宝藏.然而学生们逐渐发现自从操场施工之后学校的运气就开始变得特别不好.后来经过调查发现古墓下有一个太守坟由于操 ...
- XJOI网上同步训练DAY1 T3
思路:一开始看到这题的时候想DP,可是发现貌似不行..因为有前缀也有后缀,而且有的后缀会覆盖到现在的前缀,这就不满足无后效性了啊! 但是有个很巧妙的思路:如果我们知道a[i]的最大值,那么p的数量和q ...
- XJOI网上同步训练DAY1 T2
思路:似曾相识?...见http://www.cnblogs.com/qzqzgfy/p/5266874.html 一看时限还是4s!,于是就开开心心地打了70%的分,就是用容斥原理,就可以n^3解决 ...
- XJOI网上同步训练DAY5 T3
就是对于一个数,我们去考虑把t*****减到(t-1)9999*的代价. #include<cstdio> #include<cmath> #include<algori ...
- XJOI网上同步测试DAY14 T1
思路:线段树维护最短路 #include<cstdio> #include<cmath> #include<iostream> #include<algori ...
- XJOI网上同步训练DAY6 T2
思路:记得FJ省队集训好像有过这题,可是我太弱了,根本不懂T_T #include<cstdio> #include<iostream> #include<cmath&g ...
随机推荐
- VMware Workstation 精致汉化系列 使用方法
http://kuai.xunlei.com/d/QqGABAKChQBwMzxR983 迅雷快传 XP系统之家-温馨提示: VMware Workstation 精致汉化系列 使用方法:1.安装 ...
- libeXosip2(2-3) -- eXosip2 event API
eXosip2 event API General purpose API. Data Structures struct eXosip_event Enumerations enum eXo ...
- FreeBSd ports 安装软件
1.ports的目录在/usr/ports2.POSTS安装软件有时可能这个包已经安装过了,会有提示,无法 继续安装.能够用提示中的参数:#make install clean FORCE_PKG_R ...
- 如何从Linux系统中获取带宽、流量网络数据
引入 国外的云主机厂商,例如AWS提供的网络数据是以流量为单位的,例如下面的图片: 从上图来看,其取值方式为 每隔5分钟取值1次,(每次)每个点显示为1分钟内的流量字节数(Bytes) 带宽与流量 我 ...
- C++类静态成员的初始化和用法探讨
一.一般类型的类的静态变量 1.首先看下面的代码: class CTest1 { public: static int m_num1; void printNum(){cout << m_ ...
- <php>PDO链接方法
<?php //定义数据源 $dsn = "mysql:dbname=mydb;host=localhost"; //$dsn = "sqlsrv:dbname=m ...
- LINUX进程上锁查看方法
jps -l 获取进程列表 jstack -l 8672 查看详细信息 查找启动任务的class 查看状态
- VCS仿真生成vpd文件(verilog)
VCS仿真生成vpd文件(verilog) 一.环境与文件 Linux平台 csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.com ...
- React-nwb的使用
一.查看nwb的版本 nwb -v 二.创建一个react项目 nwb new react-app react-demo 三.启动项目 nwb serve
- 三、服务解析(Resolving Services)
当你完成组件注册,并将组件暴露为适当的服务后你就可以通过容器或者容器的子生命周期域来解析服务(After you have your components registered with approp ...