题意简述:往n*m的网格中放k条鱼,一个网格最多放一条鱼,然后用一个r*r的网随机去捞鱼,问怎么怎么放鱼能使得捞鱼的期望最大,输出这个期望

题解:肯定优先往中间放,这里k不大,因此有别的简单方法,否则推公式各种情况烦死人,我们对于每一行来说将中间的数加进去,然后用set来维护k次就好了

  1. #include<bits/stdc++.h>
  2. #define forn(i, n) for (int i = 0 ; i < int(n) ; i++)
  3. #define fore(i, s, t) for (int i = s ; i < (int)t ; i++)
  4. #define fi first
  5. #define se second
  6. #define all(x) x.begin(),x.end()
  7. #define pf2(x,y) printf("%d %d\n",x,y)
  8. #define pf(x) printf("%d\n",x)
  9. #define each(x) for(auto it:x) cout<<it<<endl;
  10. #define pii pair<int,int>
  11. using namespace std;
  12. typedef long long ll;
  13. const int maxn=2e5+5;
  14. const int maxm=2e5+5;
  15. const int inf=1e9;
  16. int n,m,r,k;
  17. struct cell{
  18. int x,y,d;
  19. ll val;
  20. cell(int x,int y,int d):x(x),y(y),d(d){
  21. val=(min(m+1,y+r)-max(y,r))*1ll*(min(n+1,x+r)-max(x,r));
  22. }
  23. bool operator<(const cell& rhs)const {
  24. return val>rhs.val;
  25. }
  26. };
  27. multiset<cell> ms;
  28. double calc(){
  29. for (int i = 1; i <= n; i++) {
  30. int j = m / 2;
  31. ms.insert({ i, j, 0 });
  32. ms.insert({ i, j + 1, 1 });
  33. }
  34. ll total = 0;
  35. for(int i=0;i<k;i++){
  36. auto it = *ms.begin();
  37. total += it.val;
  38. ms.erase(ms.begin());
  39. if (it.d == 1 && it.y < m)
  40. ms.insert({ it.x, it.y + 1, 1 });
  41. else if (it.d == 0 && it.y > 1)
  42. ms.insert({ it.x, it.y - 1, 0 });
  43. }
  44. return (double)total / ((n - r + 1) * 1LL * (m - r + 1));
  45. }
  46. int main(){
  47. cin>>n>>m>>r>>k;
  48. if(n>m) swap(n,m);
  49. if(m==1) {
  50. printf("%.10f\n",1.0);
  51. }
  52. else {
  53. printf("%.10f\n",calc());
  54. }
  55. }

  

cf912D的更多相关文章

  1. CF912D Fishes 期望 + 贪心

    有趣的水题 由期望的线性性质,全局期望 = 每个格子的期望之和 由于权值一样,我们优先选概率大的点就好了 用一些数据结构来维护就好了 复杂度$O(k \log n)$ #include <set ...

  2. CF912D Fishes 期望

    题意翻译 Description 有一个长为nnn ,宽为mmm 的鱼缸,还有一个边长为rrr 的正方形渔网.你可以往鱼缸里放kkk 条鱼,问用渔网随机在浴缸里捞鱼的最大期望是多少.不懂什么是期望的自 ...

  3. [CF912D]Fishes - 求数学期望,乱搞

    D. Fishes time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  4. CF912D Fishes

    题目链接:http://codeforces.com/contest/912/problem/D 题目大意: 在一个\(n \times m\)的网格中放鱼(每个网格只能放一条鱼),用一个\(r \t ...

  5. cf期望概率专题

    cf1009E:求到第i段期望和的比较困难,但是单独求每段的期望是比较容易的,所以单独对每段求和,然后累计总和 E[i]=1/2*a1+1/4*a2+...+1/2^(i-1)*ai-1+1/2^(i ...

随机推荐

  1. Selenium(七):截图显示等待

    一.显示等待(有条件等待) 常见问题: 定位明明是对的,为什么运行代码没找到定位. 定位明明是对的,找到定位了,文本信息为什么取到是空的? 分析原因: 没有处理frame 页面渲染速度比自动化测试的代 ...

  2. 使用xpath总是找不到

    今天使用使用xpath,直接从网页上复制的 /html/body/div[3]/div[2]/div[2]/div[3]/table/tbody/tr[2]/td[3]/a 但是在代码中总是找不到文件 ...

  3. 最好用的web端代码文本编辑器ACE

    使用足够简单,功能足够强大,体验足够优秀 之前有一个系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,总共发了四篇文章介绍了三个非常棒的插件,分别是bootstrap-duallistbox ...

  4. Spring基础(二)_面向切面(AOP)

    面向切面编程 面向切面编程[AOP,Aspect Oriented Programming]:通过预编译方式和运行期间动态代理实现程序功能的统一维护的技术.AOP 是 Spring 框架中的一个重要内 ...

  5. 用ExpressionTree实现JSON解析器

    今年的春节与往年不同,对每个人来说都是刻骨铭心的.突入其来的新型冠状病毒使大家过上了“梦想”中的生活:吃了睡,睡了吃,还不用去公司上班,如今这样的生活就在我们面前,可一点都不踏实,只有不停的学习才能让 ...

  6. Codeforces gym101755F Tree Restoration(拓扑排序)

    题意: 一棵树,给出每个点的后代们,问你这棵树是否存在,存在就给出这棵树 n<=1000 思路: 对祖先->后代建立有向图,跑拓扑排序.跑的时候不断更新父亲并判断答案的存在性,同时注意一种 ...

  7. java架构之路-(微服务专题)ribbon的基本使用和内部算法的自我实现

    上次回归: 上次我们主要说了,我们的注册中心nacos的使用,如我们的命名空间.分组.集群.版本等是如何使用的,如果是这样呢?我们现在有三个用户服务和三个订单服务,我们应该如何分发这些请求呢?都请求到 ...

  8. openssl 自签名证书SHA1加密算法

    openssl genrsa -out privkey.pem 2048 openssl req -new -key privkey.pem -sha1 -out cert.csr openssl r ...

  9. Apache httpd.conf配置文件 3(虚拟主机)

    ### Section 3: Virtual Hosts 第三部分 虚拟主机 注意:在使用虚拟主机前,请先检查  http.conf 的 辅助配置文件httpd-vhosts.conf 是否注释 # ...

  10. Apache 容器 Directory Location Files 及htaccess文件

    配置段容器的类型 相关模块 core mod_proxy 相关指令 <Directory> <DirectoryMatch> <Files> <FilesMa ...