【JZOJ 4809】挖金矿
来源:互联网 发布:c语言冒泡排序简单代码 编辑:程序博客网 时间:2024/06/10 01:21
Description
Solution
可以二分答案,再把每个数减去二分出来的值,看看每列的最大前缀值加起来是否大于0即可。
复杂度:
Code
#include<cstdio>#include<cstdlib>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef double db;const int N=100500;long long read(long long &n){ int q=0,w=1;n=0; char ch; for(ch=getchar();(ch<'0'||ch>'9')&&ch!='-';ch=getchar()); if(ch=='-')ch=getchar(),w=-1; for(;ch<='9'&&ch>='0';ch=getchar())q=q*10+ch-48; return n=w*q;}long long n,m,ans;long long a[N];db l,r;long double ANS;long long max(long long q,long long w){return q<w?w:q;}db OK(db q){ db ans=0,t,w;ANS=0;int e,E=0; fo(i,1,n) { t=-1e9,w=0; fo(j,1,m) { w=a[i*m-m+j]-q*j; if(t<w)t=w,e=j; } ans+=t;// ANS+=a[i*m-m+e];E+=e; } ANS/=1.0*E; return ans; }int main(){ int q,w;l=1; read(n),read(m); fo(i,1,n) { r=max(r,read(a[i*m-m+1])); fo(j,2,m)r=max(r,a[i*m-m+j]=read(a[i*m-m+j])+a[i*m-m+j-1]); } while(r-l>=0.000005) { db t=(l+r)*0.5; if(OK(t)>=1e-6)l=t; else r=t; } printf("%.4lf\n",l); return 0;}
0 0
- 【JZOJ 4809】挖金矿
- JZOJ 4809. 挖金矿
- JZOJ 4809 【NOIP2016提高A组五校联考1】挖金矿
- 【JZOJ 4809】【NOIP2016提高组 五校联考1】挖金矿
- 挖金矿
- 挖金矿
- 【JZOJ4809】挖金矿
- 3079 挖金矿
- 【二分】【挖金矿】
- 机器人挖金矿的动态规划算法
- NOIP提高组【JZOJ4809】挖金矿
- 【NOIP提高组五校联考】挖金矿
- XJOI 挖金矿(01分数规划)
- xjoj挖金矿(二分验证)
- 【脑洞系列】XJOJ 挖金矿
- 动态规划之挖金矿(背包问题)
- 动态规划基础之挖金矿问题
- 【JZOJ 3737】挖宝藏
- 三木运算符嵌套和数字的转换
- My SQL 字符串函数
- Unity 5.x的专用插件推荐
- 一个库里脑残粉的作业
- 1003-Max Sum
- 【JZOJ 4809】挖金矿
- Java中的回调(摘录)
- java中常用关键字
- jQuery :hidden选择器,匹配所有不可见元素,或者type为hidden的元素
- LCD12864串行和并行显示
- 线程简单地存钱--取钱操作
- Android程序开发——5.0新特性 RecycleView替换ListView
- python scrapy 爬博客信息
- hdu 5898 odd-even number (数位dp)