山东省第八届acm省赛E题 三分+二分
来源:互联网 发布:js根据逗号截取字符串 编辑:程序博客网 时间:2024/06/06 02:41
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const double eps=2*1e-8;int a[5005],b[5005],k,n,m;double res[5005],ans,f[1000005];inline bool cmp(double a,double b){ return a>b;}inline bool check(double kp,int c){ for(int i=0;i<n;i++) res[i]=(a[i]+c)%m-kp*b[i]; sort(res,res+n,cmp); double ans=0.0; for(int i=0;i<k;i++) ans+=res[i]; if(ans>=0) return true; else return false;}inline double cal(int k){ if(f[k]>0) return f[k]; double l=0.0,r=m,mid; int cnt=0; while(r-l>eps) { cnt++; mid=(r+l)/2; if(check(mid,k)) l=mid; else r=mid; } return f[k]=mid;}int main(){ while(scanf("%d%d%d",&n,&k,&m)!=EOF) { memset(f,0,sizeof(f)); for(int i=0;i<n;i++) scanf("%d",a+i); for(int i=0;i<n;i++) scanf("%d",b+i); ans=0.0; int sl=0,sr=m-1,ll,rr; while(sl+1<sr) { int rr=(sl+2*sr)/3.0+0.5,ll=(sl*2+sr)/3.0+0.5; if(cal(ll)>cal(rr)) sr=rr; else sl=ll; } printf("%.7f\n",max(f[sr],f[sl])); } return 0;}
阅读全文
0 0
- 山东省第八届acm省赛E题 三分+二分
- 山东省第八届ACM省赛C题
- 山东省第八届ACM省赛A题
- 山东省第八届acm省赛C题 巨坑
- 山东省第八届acm省赛A题 博弈
- 山东省第八届ACM省赛 I 题(Parity check)
- 山东省第八届ACM省赛 J 题(company)
- 山东省第八届ACM省赛 F 题(quadratic equation)
- 山东省第八届ACM省赛 K 题(CF)
- 山东省第八届acm省赛K题 贪心+dp
- 山东省第八届acm省赛B题 打表找规律
- 山东省第八届acm省赛C题 fireworks
- 山东省第八届acm省赛K题 CF
- 山东省第八届acm省赛D题 HEX
- 山东省第八届ACM省赛 I 题 Parity check 详解
- 2017-山东省第八届ACM省赛
- 山东省第八届ACM省赛C firework
- 山东省第八届 ACM 省赛 quadratic equation
- spring_spring自动装配
- zlib库使用简单讲解
- 菜鸟学php扩展 之 详解php扩展的变量(四)
- [leetcode]: 108. Convert Sorted Array to Binary Search Tree
- rabbitmq单机多实例集群搭建
- 山东省第八届acm省赛E题 三分+二分
- spring_spring模式指定
- C语言strcpy()函数
- spring_spring简单属性注入
- LoRa Gateway 源码工程梳理
- redis 连接拒绝 解决办法
- win10 安装mongodb小结
- Java虚拟机(四)垃圾收集算法
- apt-get 更新源推荐