[hdu7033]Typing Contest
为了避免浮点运算,不妨将$f_{i}$乘上$C=10^{2}$,问题即求$\max_{S\subseteq [1,n]}\frac{\sum_{i\in S}(C^{2}-(\sum_{j\in S}f_{j}-f_{i})f_{i})s_{i}}{C^{2}}$
记$F=\sum_{i\in S}f_{i}$,考虑枚举$F$,并以$f_{i}$为质量、$(C^{2}-(F-f_{i})f_{i})s_{i}$为价值,问题即是要求质量和恰为$F$的最大价值和,可以通过01背包解决
考虑此时的复杂度,$F$的范围为$Cn$,复杂度即$o(C^{2}n^{3})$,无法通过
事实上,最优解满足$F\le C\sqrt{n}$,证明如下:
注意到随着$F$的增大价值降低,因此不妨将"质量和恰为$F$"改为不超过$F$
如果某人价值为负,那么不选一定更优,因此即$\forall i\in S,(C^{2}-(F-f_{i})f_{i})s_{i}\ge 0$
去掉$s_{i}$再将其对所有$i$求和,整理后即$F^{2}-|S|C^{2}\le \sum_{i\in S}f_{i}^{2}$
去掉$s_{i}$并乘上$f_{i}$,再将其对所有$i$求和,整理后即$\sum_{i\in S}f_{i}^{2}\le \frac{\sum_{i\in S}f_{i}^{3}
}{F}+|S|C^{2}$
将两式联立,即$F^{2}-|S|C^{2}\le \frac{\sum_{i\in S}f_{i}^{3}
}{F}+|S|C^{2}$
显然$|S|\le n$且$\frac{\sum_{i\in S}f_{i}^{3}}{F}\le F^{2}$,由此放缩即$F^{2}\le nC^{2}$,也即$F\le C\sqrt{n}$
由此,复杂度降为$o(C^{2}n^{2})$,可以通过


1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 105
4 #define C 100
5 #define ll long long
6 int t,n,m,a[N];
7 ll ans,s[N],f[N*C];
8 double p;
9 int main(){
10 scanf("%d",&t);
11 while (t--){
12 scanf("%d",&n);
13 m=ans=0;
14 for(int i=1;i<=n;i++){
15 scanf("%lld%lf",&s[i],&p);
16 a[i]=floor(p*C+0.5);
17 m+=a[i];
18 }
19 m=C*((int)sqrt(n)+1);
20 for(int F=0;F<=m;F++){
21 for(int i=0;i<=F;i++)f[i]=0;
22 for(int i=1;i<=n;i++){
23 ll S=(C*C-(F-a[i])*a[i])*s[i];
24 for(int j=F;j>=a[i];j--)f[j]=max(f[j],f[j-a[i]]+S);
25 }
26 ans=max(ans,f[F]);
27 }
28 printf("%lld.",ans/(C*C));
29 ans%=C*C;
30 if (ans<1000)printf("0");
31 if (ans<100)printf("0");
32 if (ans<10)printf("0");
33 printf("%lld00000\n",ans);
34 }
35 return 0;
36 }
[hdu7033]Typing Contest的更多相关文章
- Python标准库--typing
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python 3.5 增加了一个有意思的库--typ ...
- 最牛的打字效果JS插件 typing.js
最新在做公司的一个项目,需要实现一个敲打代码的动画效果,粗意味比较简单,果断自己直接开写,写着写着发现是一个坑.需要支持语法高亮,并不能直接简单的用setTimeout来动态附件innerHTML.苦 ...
- Monkey Patch/Monkey Testing/Duck Typing/Duck Test
Monkey Patch Monkey Testing Duck Typing Duck Test
- Programming Contest Problem Types
Programming Contest Problem Types Hal Burch conducted an analysis over spring break of 1999 and ...
- hdu 4946 2014 Multi-University Training Contest 8
Area of Mushroom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- 2016 Multi-University Training Contest 2 D. Differencia
Differencia Time Limit: 10000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- 2016 Multi-University Training Contest 1 G. Rigid Frameworks
Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- hdu-5988 Coding Contest(费用流)
题目链接: Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Ot ...
- ZOJ 3703 Happy Programming Contest
偏方记录背包里的物品.....每个背包的价值+0.01 Happy Programming Contest Time Limit: 2 Seconds Memory Limit: 65536 ...
随机推荐
- 单体应用 适合采用 dapr 构建吗?
缘起今天在微信群里有同学问 "纯.net 项目,有必要上dapr吗?" 当时不假思索的说不是微服务没必要,其他群友也说没必要.下午细想了一下,觉得这个和微服务没有关系,如果我的应用 ...
- 使用 z3 进行逆向 解密字符串
在逆向过程中,我们知道了一个结果值,和一段计算代码.这个时候我们需要知道计算前的值是什么:需要用到 z3 模块来进行解题 z3项目地址 Java代码如下: private String b(Strin ...
- Java---String和StringBuffer类
Java---String和StringBuffer类 Java String 类 字符串在Java中属于对象,Java提供String类来创建和操作字符串. 创建字符串 创建字符串常用的方法如下: ...
- LeetCode:回溯算法
回溯算法 这部分主要是学习了 labuladong 公众号中对于回溯算法的讲解 刷了些 leetcode 题,在此做一些记录,不然没几天就忘光光了 总结 概述 回溯是 DFS 中的一种技巧.回溯法采用 ...
- 如何再一台电脑上配置多个tomcat同时运行
1.配置运行tomcat 首先要配置java的jdk环境,这个就不在谢了 不懂去网上查查,这里主要介绍再jdk环境没配置好的情况下 如何配置运行多个tomcat 2.第一个tomcat: 找到&qu ...
- Beta Scrum Meeting汇总
第0次Alpha Scrum Meeting 第1次Alpha Scrum Meeting 第2次Alpha Scrum Meeting 第3次Alpha Scrum Meeting 第4次Alpha ...
- websocket入门案例(echo)
websocket是用来干什么的,具体的请自行百度. 本文实现一个简单的websocket的入门小例子,实现客户端发送一句换,服务器端返回.即一个简单的交互. 一.服务器端的实现 1.创建一个类实现S ...
- 2021.9.22考试总结[NOIP模拟59]
T1 柱状图 关于每个点可以作出两条斜率绝对值为\(1\)的直线. 将绝对值拆开,对在\(i\)左边的点\(j\),\(h_i-i=h_j-j\),右边则是把减号换成加号. 把每个点位置为横坐标,高度 ...
- numpy.zeros()的作用和实操
numpy.zeros()的作用: 通常是把数组转换成想要的矩阵 numpy.zeros()的使用方法: zeros(shape, dtype=float, order='C') shape:数据尺寸 ...
- ab矩阵(实对称矩阵)
今天在做题时巧遇了很多此类型的矩阵,出于更快解,对此进行学习.(感谢up主线帒杨) 1.认识ab矩阵 形如:主对角线元素都是a,其余元素都是b,我们称之为ab矩阵(默认涉及即为n×n阶) 2.求|A| ...