当前位置: 首页 > news >正文

qoj2607 Survey

题意

\(n\) 个人,\(m\) 元钱,每个人有一个最低要求工资 \(a_i\)。你需要把 \(m\) 元分成 \(n\) 份工资,每个人会随机得到一份,使得满足最低要求工资的人数期望最多。

\(n\le 1000,m\le 5000\)

思路

考虑期望的线性性质,满足最低要求工资的人数即每个人能满足要求的概率之和,即 \(ans=\sum_{i=1}^n p_i\)

对于每个人来说,满足条件概率即为分到大于等于 \(a_i\) 工资的概率,即 \(p_i=\frac{\sum_{j=1}^n [x_j\ge a_i]}{n}\)

最后则有 \(ans=\frac{\sum_{i=1}^n\sum_{j=1}^n [x_j\ge a_i]}{n}\)

于是我们设 \(f_{i,j}\) 表示将 \(j\) 元钱分成了 \(i\) 份工资时 \(\sum_{i=1}^n\sum_{j=1}^n [x_j\ge a_i]\) 的最大值,且每份工资单调不递增

假设增加了一份 \(k\) 元的工资,则该值会增加 \(\sum_{i=1}^n [a_i\ge k]\),可以使用前缀和处理。

由于每份工资单调不递增,所以第 \(i\) 份工资的上限即为 \(\lfloor\frac{m}{i}\rfloor\),因为要保证前面的工资都大于这份工资。

\(c_i=\sum_{i=1}^n [a_i\ge k]\) 于是就有:

\[f_{i,j}=\max\{f_{i-1,j-k}+c_k\} \pod{1\le i\le n,0\le j\le m,0\le k\le \min(j,\lfloor\frac{m}{i}\rfloor)} \]

最后 \(\frac{f_{n,m}}{n}\) 即为答案,复杂度 \(O(nm\log m)\)

代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n,m,c[5005];
double f[1005][5005];
signed main() {cin>>n>>m;for(int x,i=1;i<=n;i++)cin>>x,c[x]++;for(int i=1;i<=m;i++)c[i]+=c[i-1];for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){for(int k=0;k<=min(j,m/i);k++){f[i][j]=max(f[i][j],f[i-1][j-k]+c[k]);}}}printf("%.15lf",f[n][m]/n);return 0; 
}
http://www.zskr.cn/news/2347.html

相关文章:

  • 移远EC800M RTOS笔记
  • Linux 实例:配置 NTP 服务
  • 开发过程中常见的设计模式
  • 论Intel CPU 进化史:德承工控机全面进化 搭载新一代 Intel Core™ Ultra 7/5/3 处理器 - Johnny
  • mysql绿色版,无需安装的快速数据库解决方案
  • MyEMS:功能强大的开源能源管理系统,助力企业实现精细化能效管理
  • mysql 导入sql,从入门到精通
  • 番茄社交营销商城系统介绍
  • 标书智能体(二)——生成标书提纲代码+提示词
  • 设计模式-责任链模式
  • 实用指南:Grafana - 监控磁盘使用率Variables使用
  • P4694 [PA 2013] Raper
  • C# 内存泄漏
  • TVBox中的Python接口解读
  • DevOps时代的知识管理革命:如何构建智能化的研发决策中枢
  • P1099 [NOIP 2007 提高组] 树网的核
  • C# Avalonia 13- MoreDrawing - VisualLayer
  • Linux 设置nginx 以及java jar自启动
  • 记录一次解决phpstudy启动数据库自动关闭的问题方法
  • node.js安装地址
  • 【已解决】git Encountered 3 file(s) that should have been pointers, but werent
  • 接雨水-leetcode
  • QT-控件使用-获取lable标签宽高尺寸设置图片
  • 初识python:一些基础的知识(推导式)
  • 小说写法分析-个人随记
  • Nuget的不是所配置的源之一
  • k60刷windows系统能玩什么游戏
  • 微服务高可用高并发方案
  • pip安装临时使用清华源
  • redis scan命令替换keys 命令