uva 1456
这题说的是 给了 n 个 点 然后每个点 都有 相应的概率,你要将这n个点划分成w个集合使得 下面定义的这种算法 得到的 值最小 n1 是集合一的 个数
是 集合一内的每个点的概率和, 下面是分成两个集合的 样例 前面的系数 是前wi个集合的 总个数
= n1
+ (n1 + n2)
= 3(0.3 + 0.05 + 0.1) + (3 + 2)(0.3 + 0.25) = 3 x 0.45 + 5 x 0.55 = 4.1
我们知道肯定不让大概率碰上 大系数 于是我们先对他们进行排序,排完后就得到了我们想要的
然后dp[j][i] 表示 前j个数分成i个集合的 最小值
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string.h>
using namespace std;
const int maxn=;
double d[maxn];
double dp[maxn][maxn];
double sum[maxn];
int main()
{
int cas;
scanf("%d",&cas);
while(cas--){
int n,k;
scanf("%d%d",&n,&k);
double val=;
for(int i=; i<=n; ++i){
scanf("%lf",&d[i]);
val+=d[i];
}
for(int i=; i <= n; ++i)
d[i]/=val;
sort(d+,d+n+);
for(int i=; i<= ( n+ ) / ; ++i){
double t =d[ i ];
d[ i ]=d[ n - i + ];
d[ n - i + ] = t;
}
sum[]=;
for( int i=; i<=n; ++i)
sum[i]=sum[i-]+d[i];
for(int i=;i<=n; ++i){
dp[i][]=sum[i]*i;
}
for(int i=; i<=k; ++i)
for(int j=i; j<=n; ++j){
dp[j][i]=;
for(int e=j; e>=i; e--)
dp[j][i]=min( dp[j][i] , (sum[j]-sum[e-])*j+dp[e-][i-] );
}
printf("%.4lf\n",dp[n][k]);
}
return ;
}
uva 1456的更多相关文章
- UVA 1456 六 Cellular Network
Cellular Network Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit S ...
- UVA - 1456 Cellular Network
题目大意: 手机在蜂窝网络中的定位是一个基本问题.如果蜂窝网络已经得知手机处于c1, c2,-,cn这些区域中的一个.最简单的方法是同一时候在这些区域中寻找手机.但这样做非常浪费带宽. 因为蜂窝网络中 ...
- DP + 概率 + 贪心 UVA 1456 Cellular Network
题目传送门 题意:(摘自LRJ<训练指南>) 手机在蜂窝网络中的定位是一个基本问题.假设蜂窝网络已经得知手机处于c1, c2,…,cn这些区域中的一个,最简单的方法是同时在这些区域中寻找手 ...
- uva 1456(dp)
题意:有n个数字u1,u2,u3-un,每一个数字出现的概率pi = ui/(u1 + u2 + - + un),分成w组.计算期望值. 第一组例子的五个数字例如以下 30 5 10 30 25 分成 ...
- cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁
1456. [UVa 10881,Piotr's Ants]蚂蚁 ★ 输入文件:Ants.in 输出文件:Ants.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述 ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
随机推荐
- set集合操作【python】
set集合操作包括: >>> x=set("123defj89") >>> y=set("ab34e6jh9") >& ...
- Effective C++ —— 资源管理(三)
条款13 : 以对象管理资源 假设有如下代码: Investment* createInvestment(); //返回指针,指向Investment继承体系内的动态分配对象,调用者有责任删除它 vo ...
- 【Laravel】Mac下玩转Laravel
1 apache 首先Mac系统是自带了Apache,只需要执行 sudo apachectl start 就可以打开Apache服务,然后访问 http://localhost 就可以访问到,it' ...
- 重装Delphi10.2的IDE必要设置
重装Delphi10.2的IDE必要设置: 1,Tools->Options Editor Options->Display 右侧的 Right margin: 设为200 这个设置是为右 ...
- linux常用的一些访问目录
救命三键(Ctrl+Alt+Delete) /var/log 如果是网络服务的问题时,请到 这个目录里头去查阅一下 log file (登录档): /etc/rc.local 修改挂载 ...
- 使用jhipster搭建微服务--简单demo
简介 jhipster简单来说是一个基于nodejs+yeoman的java代码生成器.往大了说是基于java的一套微服务解决方案.请注意是一整套的微服务解决方案.jhipster在整个程序架构上都做 ...
- mac java环境变量配置
在终端输入java -version命令,如果没安装系统会自动弹出个东西让你安装,下载完之后打开,再点java -version,如果有显示就说明安装成功了. 在终端输入 ç 可以得到JAVA_HO ...
- Thrift 入门之helloWorld
不多说,先看项目结构 首先先编写一个hello.thrift的文件 hello.thrift namespace java sawshaw service HelloService { string ...
- 使用NUget发布自己的dll
一:Nuget控制台有几个常用命令 Get-Package 获取当前项目已经安装的类库 Install-Package 安装指定类库,命令格式如下:Install-Package 类库ID,示例:PM ...
- 160227、javascript特效
1.给网页设定快捷键 js: function getkey(){ event = event || window.event; url = "www.baidu.com&q ...