CF2023D Many Games

news/2024/10/22 15:30:03

题目大意

\(n\)个二元组\((p_i,w_i)\),保证\(1\le p_i\le100,p_iw_i\le200000\),求一个集合\(S\),使得\(\prod_{i\in S}\frac{p_i}{100}\sum_{i\in S}w_i\)最大

\[n\le 200000 \]

题解

考虑一个极大的集合有什么样的性质,所谓极大就是不能够通过加入一个元素使得答案更大
设集合为\(S\),则不存在\(k\not\in S\),使得\(\sum_{i\in S}w_i\prod_{i\in S}\frac{p_i}{100}<(\sum_{i\in S}w_i+w_k)\prod_{i\in S}\frac{p_i}{100}\frac{p_k}{100}\)
作一些化简,得到\(\sum_{i\in S}w_i<\frac{p_kw_k}{100-p_k}\),此时加入\(k\)会使答案变大,反之使答案减小,那么可以观察到\(\sum_{i\in S}w_i\le \frac{99*w}{100-99}=200000\),也就是答案的集合的\(w\)和小于等于\(200000\),这样就可以想到使用背包解决,但复杂度依旧爆炸
可以按\(p\)分类每个二元组,然后按\(w\)从大到小排序,选择的集合显然是排序后的一个前缀,由前面推导的结论,如果选择放入第\(i\)个二元组,有一个必要条件\(\sum_{j=1}^{i-1}w_j<\frac{pw_i}{100-p}\),放缩一下\(iw_i<\frac{pw_i}{100-p}\),得到\(i<\frac{p}{100-p}\)
所以对于一个\(p\),最多只用做\(\lfloor\frac{p}{100-p}\rfloor\)次背包
\(p=1\sim 99\),得到运算次数约为\(400\)次,做\(400\)次背包,可以通过

代码

点击查看代码
#include<cstdio>
#include<vector>
#include<algorithm>
#define db double
using namespace std;
const int P=100,W=200000;
int n;
vector<int> w[P+10]; 
bool cmp(int a,int b){return a>b;}
db f[W+10];
void solve(int p,int w)
{for(int i=W;i>=w;i--)f[i]=max(f[i],f[i-w]*p/100);
}
int main()
{f[0]=1;scanf("%d",&n);for(int i=1,p,x;i<=n;i++){scanf("%d %d",&p,&x);w[p].push_back(x);}for(int i=1;i<P;i++){sort(w[i].begin(),w[i].end(),cmp);int resw=0;for(int j:w[i]){if(resw*(100-i)>=i*j)break;solve(i,j);resw+=j;}}db ans=0;int sumw=0;for(int j:w[P]) sumw+=j;for(int i=0;i<=W;i++)ans=max(ans,f[i]*(sumw+i));printf("%.8lf",ans);return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

2024-10-21

文本属性 text-align属性控制文本的水平对齐方式text-decoration属性控制文本下划线text-transform属性控制文本的大小写text-indent属性控制文本的首行缩进示例实操点击查看代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="…

Amazon Q Developer 实践:零基础创建贪吃蛇游戏

本文探讨了如何使用 Amazon Q Developer 根据结构化的提示词,直接生成一个贪吃蛇游戏原型,并剖析了其背后人工智能的思考和迭代完善过程,展示了人工智能能快速进行游戏原型创作的巨大潜力。 原文出处来自作者于 2024 年 9 月在 community.aws 发表的技术文章: “From Conce…

GBU608-ASEMI室内空调机专用GBU608

GBU608-ASEMI室内空调机专用GBU608编辑:ll GBU608-ASEMI室内空调机专用GBU608 型号:GBU608 品牌:ASEMI 封装:GBU-4 安装方式:直插 批号:2024+ 现货:50000+ 正向电流(Id):6A 反向耐压(VRRM):800V 正向浪涌电流:175A 正向电压(VF):1.10V 引脚数量:4 芯片个数:…

4、建造者模式

建造者模式的主要思想是让建造者关注产出,不关心过程

NAS教程丨如何通过DDNS实现SMB服务的远程访问?

适用版本:所有版本适用机型:所有 TNAS 型号操作步骤:一、SSH登录TNAS设备1. 通过SSH登录TNAS设备。二、编辑SMB配置文件1、在SSH会话中,输入命令 vi /etc/samba/smb-extend.conf 并按回车键打开SMB配置文件。2、按 i 键进入编辑模式。3、使用键盘的方向键将光标移动到文件的…

PHP在区块链开发中的应用

### PHP在区块链开发中的应用 PHP在区块链开发中主要应用于构建前端用户界面、后端API服务、与区块链网络交互等方面。 其中,PHP通过后端API服务与区块链网络的交互尤为关键,它允许开发者创建和管理区块链数据、执行智能合约等功能,为区块链应用提供了强大的后端支持。 ####…

大数据实时链路备战——数据双流高保真压测

作者:京东零售 京东零售 一、大数据双流建设 1.1 数据双流大数据时代,越来越多的业务依赖实时数据用于决策,比如促销调整,点击率预估、广告分佣等。为了保障业务的顺利开展,也为了保证整体大数据链路的高可用性,越来越多的0级系统建设双流,以保证日常及大促期间数据流的…