【JZOJ 4783】Osu
2016-09-20 19:06
288 查看
Description
抽象题意:二维平面上有n个点,每个点有出现的时间,求至少走k个点的最小的最大速度。
Solution
很显然,这题可以直接二分实数答案,但时间看起来很悬(听说有人过了??!!),可以把两两之间的速度求出,排序以后再二分,
复杂度:O(n2∗log2(n))
PS:要卡常!!!要卡常!!!要卡常!!!
Code
#include<cstdio> #define fo(i,a,b) for(int i=a;i<=b;i++) #define fod(i,a,b) for(int i=a;i>=b;i--) #define sqr(q) ((q)*(q)) using namespace std; typedef long long LL; const int N=2005; int read(int &n) { char ch=' ';int q=0,w=1; for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar()); if(ch=='-')w=-1,ch=getchar(); for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n; } int m,n,ans1,ans2; struct qqww{int t,x,y;}a ; int f ; LL F ; struct wqwq{LL v;int x,y;}b[N*N/2]; int gcd(int x,int y){return y?gcd(y,x%y):x;} int max(int q,int w){return q<w?w:q;} void kp(int l,int r) { int i=l,j=r;LL t=b[(l+r)/2].v; while(i<=j) { while(b[i].v<t)i++; while(t<b[j].v)j--; if(i<=j) { b[0]=b[i];b[i]=b[j];b[j]=b[0]; i++,j--; } } if (l<j)kp(l,j); if (i<r)kp(i,r); } bool OK(LL q) { fo(i,1,n) { f[i]=-1; fod(j,i-1,0)if(f[j]!=-1&&F[j][i]<=q) { f[i]=max(f[i],f[j]+1); if(f[i]>=m)return 0; if(f[i]>j+1)break; } } return 1; } void ef(int r) { int l=1,t; while(r>l) { t=(l+r)/2; if(OK(b[t].v))l=t+1; else r=t; } ans1=b[l].x,ans2=b[l].y; } int main() { int q,w,e; read(n),read(m); fo(i,1,n)read(a[i].t),read(a[i].x),read(a[i].y); q=0; fo(i,1,n)fo(j,0,i-1)q++,b[q].y=i,b[q].x=j,F[j][i]=b[q].v=1000.0*(sqr(a[i].x-a[j].x)+sqr(a[i].y-a[j].y))/sqr(a[i].t-a[j].t); kp(1,q); ef(q); q=1;e=a[ans2].t-a[ans1].t; w=sqr(a[ans2].x-a[ans1].x)+sqr(a[ans2].y-a[ans1].y); int t=w; for(int i=2;i*i<=t;i++)if(t%i==0) { int t1=0; while(t%i==0)t1++,t/=i; while(t1>1)q*=i,w/=i*i,t1-=2; } t=gcd(q,e); if(!w)q=0,e=1; printf("%d %d %d\n",q/t,w,e/t); return 0; }
相关文章推荐
- Linux 平台七大桌面环境通览
- (二):模块相关的基础概念
- httpPost对JSON发送和接收
- 【LeetCode-Algorithm】【7-Reverse Integer】【Python】
- 第四周项目5-循环双链表应用
- maven通俗易懂的解释
- 以操作系统的角度述说线程与进程
- geotrellis使用(二十二)实时获取点状目标对应的栅格数据值
- activeMQ 安装于使用
- JSP动作元素1
- 使用adb抓取安卓设备的log
- 扩大eclipse的运行内存,扩大tomcat的内存
- Hibernate 单项级联操作
- kettle及数据库导数_20160920
- MTK elian(smartlink)在WIN32下的实现
- libc.so.6被删后导致系统无法使用的原因及解决方法
- poj2778DNA Sequence(AC自动机)
- 在jq easyui 中添加本地搜索功能
- 关于递归- -纪念
- js 立即执行函数,() .则前面的function 是表达式,不能是函数申明