CF912D Fishes】的更多相关文章

题意翻译 Description 有一个长为nnn ,宽为mmm 的鱼缸,还有一个边长为rrr 的正方形渔网.你可以往鱼缸里放kkk 条鱼,问用渔网随机在浴缸里捞鱼的最大期望是多少.不懂什么是期望的自己去百度 Input 一行4个正整数代表n,m,r,kn, m, r, kn,m,r,k Output 输出一个实数,表示最大期望 感谢@xunzhen 提供的翻译 题目描述 While Grisha was celebrating New Year with Ded Moroz, Misha gi…
D. Fishes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output While Grisha was celebrating New Year with Ded Moroz, Misha gifted Sasha a small rectangular pond of size n × m, divided into cells…
有趣的水题 由期望的线性性质,全局期望 = 每个格子的期望之和 由于权值一样,我们优先选概率大的点就好了 用一些数据结构来维护就好了 复杂度$O(k \log n)$ #include <set> #include <map> #include <queue> #include <vector> #include <cstdio> #include <cstring> #include <iostream> #includ…
题目链接:http://codeforces.com/contest/912/problem/D 题目大意: 在一个\(n \times m\)的网格中放鱼(每个网格只能放一条鱼),用一个\(r \times r\)的网随机地捕一次鱼,问如何放置鱼能使得捕到的鱼的期望值最大,求最大值. 知识点: 优先队列.概率与期望 解题思路: 要使捕到鱼的期望值最大,就应该往最有可能被渔网捞到的格子里放鱼. \(P(某个格子被捞到)= N_1(渔网能捞到这个格子的放置方案数)/N_2(渔网总放置方案数),\)…
While Grisha was celebrating New Year with Ded Moroz, Misha gifted Sasha a small rectangular pond of size n × m, divided into cells of size 1 × 1, inhabited by tiny evil fishes (no more than one fish per cell, otherwise they'll strife!). The gift bun…
题目链接:Fishes 题意: 有一个n×m的鱼塘,有一张r×r的渔网,现在往池塘里面放k条鱼(每个格子只能放一条鱼), 现在撒网的地方是随机的(必须在池塘内),问能捕的鱼的期望值最大是多少? 题解: 这题dfs我是真的没想到..因为怎么说,总是感觉这样有些暴力吧@.@# 要好好反思了.这题首先要把每个位置网覆盖的次数的公式推出来(用if else也行其实),因为可以发现最中间的位置一定最大,所以选取最中间的位置开始bfs,把遇到的点都放到优先队列中,这里对优先队列进行符号重载就可以很好地解决排…
题目链接 Fishes 题意  在一个$n*m$的矩阵中,随机选择一个$r * r$的区域覆盖. 一开始我们可以在这个$n*m$的矩阵中选择$k$个点标记为$1$. 我们要选择一个最佳的标记策略,使得覆盖这个$r * r$的区域之后,被覆盖的$1$的个数的期望值最大. 求这个期望值. $1 <= n, m <= 10^{5}, 1 <= k <= min(n*m, 10^{5})$ 太笨了,比赛的时候并没有做出这道题 否则大概可以好好上一波分了? 结果只是勉强回到紫名 首先我们要推…
传送门:http://codeforces.com/contest/912/problem/D 本题是一个概率问题——求数学期望. 在一个n×m的方格中,有k个“*”.每个格子里可能有0~1个“*”.现有一个r×r的网,将网随机投入方格中,求解:网内“*”个数的数学期望的最大值. 首先考虑所求的数学期望: 枚举所有的投网方式,则对于方格的任意格子(x,y),均可以定义其被网覆盖的次数cnt(x,y). 若第i个“*”的位置为(xi,yi),则此网覆盖第i个“*”的次数为cnt(xi,yi),则所…
题: OvO http://codeforces.com/contest/912/problem/D 解: 枚举每一条鱼,每放一条鱼,必然放到最优的位置,而最优位置即使钓上的概率最大的位置,即最多的r*r矩形覆盖住的点 可以把这个鱼塘分为田字型4个相同的部分(可重叠), 取其中一个部分,显然最开始的最优位置是最靠近中心的位置, 维护一个优先队列,优先度为点出现在多少个r*r的矩形中, 每次从优先队列中取出一个点,则可以求出在其他部分上有多少不重叠的点和这个点对称,则可以同时进行计算. 枚举到k个…
题意简述:往n*m的网格中放k条鱼,一个网格最多放一条鱼,然后用一个r*r的网随机去捞鱼,问怎么怎么放鱼能使得捞鱼的期望最大,输出这个期望 题解:肯定优先往中间放,这里k不大,因此有别的简单方法,否则推公式各种情况烦死人,我们对于每一行来说将中间的数加进去,然后用set来维护k次就好了 #include<bits/stdc++.h> #define forn(i, n) for (int i = 0 ; i < int(n) ; i++) #define fore(i, s, t) fo…