Codeforces183D T-shirt
这题好神啊……(然而我连每种物品贡献独立都没看出来……
首先$O(n^2 m)$的DP肯定都会写,然后可以发现每种物品一定是选得越多再选一个的收益就越低,因此可以用一个堆维护当前收益最高的物品,每次贪心取收益最高的那个并重新计算贡献……(当然不用堆也行,暴力扫就可以了……)
别问我为什么输出小数点后1000位,我不开心想调戏评测机玩……(然而好像到了一定位数之后就不会再输出了……所以我输出小数点后1亿位但实际上只输出了几百位的样子……
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int maxn=,maxm=;
struct A{
int x;
double w;
A(int x,double w):x(x),w(w){}
bool operator<(const A &a)const{return w<a.w;}
};
priority_queue<A>heap;
double p[maxn][maxm],f[maxn][maxm],g[maxn],ans=0.0;
int n,m;
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)for(int j=;j<=m;j++){
scanf("%lf",&p[i][j]);
p[i][j]/=1000.0;
}
for(int j=;j<=m;j++){
for(int i=;i<=n;i++)f[i][j]=p[i][j]+f[i-][j]*(1.0-p[i][j]);
heap.push(A(j,f[n][j]));
}
for(int i=;i<=n;i++){
A t=heap.top();
heap.pop();
ans+=t.w;
for(int i=;i<=n;i++)g[i]=f[i-][t.x]*p[i][t.x]+g[i-]*(-p[i][t.x]);
heap.push(A(t.x,g[n]));
for(int i=;i<=n;i++)f[i][t.x]=g[i];
}
printf("%.1000lf",ans);
return ;
}
Codeforces183D T-shirt的更多相关文章
- 新概念英语(1-11)Is this your shirt ?
		Is this your shirt?Whose shirt is white? A:Whose shirt is that? Is this your shirt, Dave? Dave:No si ... 
- Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”
		Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口” Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directo ... 
- SELECT s.* FROM person p INNER JOIN shirt s ON s.owner = p.id WHERE p.name LIKE 'Lilliana%' AND s.color <> 'white';
		SELECT s.* FROM person p INNER JOIN shirt sON s.owner = p.idWHERE p.name LIKE 'Lilliana%'AND s.color ... 
- [Eclipse插件] Eclipse设置Tab键为空格(ctrl+shirt+f格式化生效)!
		自定义format格式,用空格替换Tab键,ctrl+shit+f格式化后生效: 设置Eclipse中按Tab键为4个空格,这里标记下! Window-->Preferences-->Ja ... 
- javascript arguments(转)
		什么是arguments arguments 是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的.所有主要的js函数库都利用了arguments对象.所以agru ... 
- Linux.NET实战手记—自己动手改泥鳅(下)
		在上回合中,我们不痛不痒的把小泥鳅的数据库从只能供在Windows下运行的Access数据库改为支持跨平台的MYSQL数据库,毫无营养的修改,本回合中,我们将把我们修改后得来的项目往Linux中部署. ... 
- MySQL基础
		数据库操作 ---终端使用数据库 mysql -u root -p 之后回车键 输入密码 ---显示所有数据库: show databases; ---默认数据库: mysql - 用户权限相关数据 ... 
- Swift3.0P1 语法指南——构造器
		原档:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programmi ... 
- Python之美--Decorator深入详解
		转自:http://www.cnblogs.com/SeasonLee/archive/2010/04/24/1719444.html 一些往事 在正式进入Decorator话题之前,请允许我讲一个小 ... 
随机推荐
- FreeRTOS-05任务相关API函数
			根据正点原子FreeRTOS视频整理 单片机:STM32F207VC FreeRTOS源码版本:v10.0.1 任务相关API函数: 1. main.c /* * */ #include " ... 
- storm(4)-topology的组成-stream/spout/blot/
			topology包含:stream.spout.blot. topology会一直运行,除非进程被杀死. 1.stream stream=tuple=event(CEP中的)=发送的报文.键值对(一个 ... 
- 小众软件:windows 系统下 exe 文件打包软件
			1. Enigma Virtual Box 单文件打包软件 官网:EnigmaProtection 2. 安装包打包软件 官网:Inno Setup 参考文献: [1] 单文件制作工具Enigma V ... 
- 2.7 Go channel
			channel简单示例 package main import ( "fmt" "time" ) //channel的创建,发送,接收 func channe1 ... 
- WorldCount 结对项目
			合作者:201631062501,201631062129 代码地址:https://gitee.com/guilinyunya/WorldCount 伙伴博客地址:https://www.cnblo ... 
- vue学习(转载)
			vue.js库的基本使用 第一步:下载 官网地址:https://cn.vuejs.org/v2/guide/installation.html 第二步:放到项目的文件目录下 一般新建一个js文件夹, ... 
- spark第九篇:Spark操作ES
			spark操作es需要elasticsearch-hadoop-xxx.jar,版本需同es版本.从5.0版本开始,支持spark2.0. 把elasticsearch-hadoop-xxx.jar放 ... 
- RabbitMQ 很成熟  不是阿里的
			简介 官网 http://www.rabbitmq.com RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现 RabbitMQ实现了AMQ ... 
- Python批量修改文件名(os库)
			问题: 在某一文件夹内有97个sql文件,全部都以统一格式命名,例如“A201222-广州李小龙纪念协会-1-广州李小龙纪念协会-2018.AUD” 由于有两段重复了,而且中间的“1”也没有意义,需要 ... 
- SystemVerilog中枚举类型注意事项
			enum logic {a = 'bx, d = 1'bz}; 在SystemVerilog枚举类型中当使用logic进行声明时,注意logic为四态,所以当使用时如果声明时需要x.z态需要显式声明. ... 
