NC18389 收益
题目
题目描述
小N是一家金融公司的项目经理。他准备投资一个项目,这个项目要融资L元,融资成功后会得到M元的利润。现在有n个客户。对于第i个客户,他有mi元钱。小N承诺假如最后筹够钱,会给这名客户mi x ri的分红。小L通过迷之手段,估计出这个客户最后愿意出钱的概率为pi。 注意,假如公司最后筹够钱,但最终给客户分红比赚的多,他还是需要分出这么多的钱(相当于亏钱了)。现在小L想知道,按前面这样说的去做,公司最后期望能赚多少钱(有可能是负数)。
输入描述
第一行三个个整数n, L, M。
接下来n行,每行三个整数mi, Ri, Pi. 其中 \(r_i = \frac{R_i}{100}, p_i = \frac{P_i}{100}\) .
数据保证 0 ≤ n ≤ 100, \(\sum_{i=1}^n m_i \leq 500000\) , 0 ≤ L,M ≤ 100000。
0 ≤ ri, pi ≤ 100
输出描述
一行一个整数代表公司最后期望收益对10^9 + 7取模的值。一个分数 \(\frac{A}{B}\) 对109+7取模的值,相当于A乘上B的逆元再对109+7取模。
示例1
输入
4 89 88
99 16 80
76 1 6
81 16 70
37 3 96
输出
880839106
题解
知识点:概率dp,背包dp。
考虑设 \(f_{i,j}\) 为考虑了前 \(i\) 个客户获得了 \(j\) 元的期望分红。
由于获得 \(j\) 元的概率都不一致,因此每次加上去的期望都要乘一个概率,所以我们需要记录每种可能的概率。
设 \(g_{i,j}\) 表示考虑了前 \(i\) 个客户获得了 \(j\) 元的概率,那么转移方程显然:
f_{i,j} &= f_{i-1,j} \cdot (1-p_{i})\\
f_{i,\min\{ j + m_i \cdot r_i,L \}} &= f_{i-1,j} \cdot p_{i}\\
g_{i,j} &= g_{i-1,j} \cdot (1-p_{i})\\
g_{i,\min\{ j + m_i \cdot r_i,L \}} &= (g_{i-1,j} + f_{i-1,j} \cdot m_i \cdot r_i) \cdot p_{i}
\end{aligned}
\]
最后答案为 \(f_{n,L} \cdot M - g_{n,L}\) 。
时间复杂度 \(O(nL)\)
空间复杂度 \(O(L)\)
代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int P = 1e9 + 7;
const int base = 570000004;
int m[107], p[107], r[107];
int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, L, M;
cin >> n >> L >> M;
for (int i = 1;i <= n;i++) {
cin >> m[i] >> r[i] >> p[i];
r[i] = 1LL * r[i] * m[i] % P * base % P;
p[i] = 1LL * p[i] * base % P;
}
vector<int> f(L + 1), g(L + 1);
f[0] = 1;
for (int i = 1;i <= n;i++) {
vector<int> ff(L + 1), gg(L + 1);
for (int j = 0;j <= L;j++) {
(ff[j] += 1LL * f[j] * (1 - p[i] + P) % P) %= P;
(ff[min(j + m[i], L)] += 1LL * f[j] * p[i] % P) %= P;
(gg[j] += 1LL * g[j] * (1 - p[i] + P) % P) %= P;
(gg[min(j + m[i], L)] += 1LL * (g[j] + 1LL * r[i] * f[j] % P) * p[i] % P) %= P;
}
f = ff;
g = gg;
}
cout << (1LL * f[L] * M % P - g[L] + P) % P << '\n';
return 0;
}
NC18389 收益的更多相关文章
- iOS绘制收益柱状图
项目需求,参考了其他绘图demo,自己绘制出来了,不过代码改得有点乱,添加了很多变量,时间关系没用太合适的命名,逻辑处理也没进行优化. 看看效果图(虚线区域都是画的,其他区域添加的都是控件),附上源码 ...
- BZOJ 2034 【2009国家集训队】 最大收益
Description 给出\(N\)件单位时间任务,对于第\(i\)件任务,如果要完成该任务,需要占用\([S_i, T_i]\)间的某个时刻,且完成后会有\(V_i\)的收益.求最大收益. 澄清: ...
- Bzoj1449 [JSOI2009]球队收益
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 741 Solved: 423 Description Input Output 一个整数表示联盟里所有球 ...
- 【BZOJ-1449&2895】球队收益&球队预算 最小费用最大流
1449: [JSOI2009]球队收益 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 648 Solved: 364[Submit][Status][ ...
- [chrome插件] 利滚利计算器 银行存款 基金理财 余额宝收益计算
利滚利计算在数学上是否有一个简单的公式,我不知道,但作为程序员,这个算法实现起来就是小菜一碟.作为插件发布,是因为程序确实简单,也方便Chome浏览器使用者安装.如果你也想使用一下Chrome插件,参 ...
- 山东理工大学第七届ACM校赛-最大收益问题 分类: 比赛 2015-06-26 10:25 51人阅读 评论(0) 收藏
最大收益问题 Time Limit: 2000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 铁牌狗最近迷上了一款游戏,但铁牌狗实在是太笨了,他还是要请求你的帮助. 有 ...
- BZOJ 1449 球队收益(最小费用最大流)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1449 题意: 思路:首先,我们假设后面的M场比赛两方都是输的,即初始时的lose[i]再 ...
- [luogu P2647] 最大收益(贪心+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2647 题目描述 现在你面前有n个物品,编号分别为1,2,3,--,n.你可以在这当中任意选择任意多个物品. ...
- 【BZOJ】【1449】【JSOI2009】球队收益
网络流/费用流/二分图最小权匹配 题解:http://blog.csdn.net/huzecong/article/details/9119741 太神了!由于一赢一输不好建图,就先假设全部都输,再将 ...
- bzoj 1449 [JSOI2009]球队收益(费用拆分,最小费用流)
1449: [JSOI2009]球队收益 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 547 Solved: 302[Submit][Status][ ...
随机推荐
- Socket 如何处理粘包
Socket 如何处理粘包 什么是粘包什么是半包? 粘包: 比如发送了AA BB 两条消息,但是另一方接收到的消息却是AAB,像这种一次性读取了俩条数据的情况就是粘包 半包: 比如发送的消息是ABC时 ...
- 阿里云龙蜥8.6部署SQLSERVER2022的过程
阿里云龙蜥8.6部署SQLSERVER2022的过程 背景 之前总结过, 但是发现当时是preview版本. 这里想升级一下, 并且顺便抄一下他的部分说明 下载 wget https://packag ...
- [转帖]CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网
https://www.cnblogs.com/hope250/p/8033818.html 自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源.而且由 ...
- memtester 以及 mlc 简单学习
memtester 以及 mlc 简单学习 下载 memtester https://pyropus.ca./software/memtester/ 下载好后直接进行 make 和make insta ...
- [转帖]SpringBoot配置SSL 坑点总结【密码验证失败、连接不安全】
文章目录 前言 1.证书绑定问题 2.证书和密码不匹配 3.yaml配置文件问题 3.1 解密类型和证书类型是相关的 3.2 配置文件参数混淆 后记 前言 在SpringBoot服务中配置ssl,无非 ...
- [转帖]springboot指定端口的三种方式
https://blog.51cto.com/feirenraoyuan/5504099 第一配置文件中添加server.port=9090 第二在命令行中指定启动端口,比如传入参数 java -ja ...
- nginx 负载均衡简单设置
自己简单维护了一个 需要继续改进. user nobody; worker_processes auto; events { worker_connections 1024; } http { inc ...
- 初试高云FPGA
前言 之前一直眼馋Sipeed的Tang系列,正好遇到有工程需要高速控制并行总线,就买了NANO 9K和Primer 20K试试水 买回来先拆的贵的20k,结果发现Sipeed设计师有奇怪的脑回路: ...
- Docker中Nginx部署go应用
docker配合Nginx部署go应用 Nginx 名词解释 正向代理 反向代理 构建镜像 Nginx镜像 配置nginx.conf server_name Nginx中的负载均衡 轮询 upstre ...
- Pytorch分布式训练,其他GPU进程占用GPU0的原因
问题 最近跑师兄21年的论文代码,代码里使用了Pytorch分布式训练,在单机8卡的情况下,运行代码,出现如下问题. 也就是说GPU(1..7)上的进程占用了GPU0,这导致GPU0占的显存太多,以至 ...