BZOJ4117 : [Wf2015]Weather Report

一种天气情况的概率只与4种天气的出现次数有关,故将相同概率的情况计数后放入堆中模拟哈夫曼树即可。

每次取出概率最小的,将它个数除以2,对于零头需要特判。

#include<cstdio>
#include<queue>
#define N 22
using namespace std;
typedef long long ll;
typedef pair<double,ll>P;
int n,i,j,k,l;ll c[N][N];double A,B,C,D,pa[N],pb[N],pc[N],pd[N],ans;
priority_queue<P,vector<P>,greater<P> >q;
int main(){
  scanf("%d%lf%lf%lf%lf",&n,&A,&B,&C,&D);
  for(c[0][0]=i=1;i<=n;i++)for(c[i][0]=j=1;j<=i;j++)c[i][j]=c[i-1][j-1]+c[i-1][j];
  for(pa[0]=pb[0]=pc[0]=pd[0]=1,i=1;i<=n;i++){
    pa[i]=pa[i-1]*A;
    pb[i]=pb[i-1]*B;
    pc[i]=pc[i-1]*C;
    pd[i]=pd[i-1]*D;
  }
  for(i=0;i<=n;i++)for(j=0;j<=n;j++)for(k=0;k<=n;k++)for(l=0;l<=n;l++)
    if(i+j+k+l==n)
      q.push(P(pa[i]*pb[j]*pc[k]*pd[l],c[n][i]*c[n-i][j]*c[n-i-j][k]));
  while(1){
    P t=q.top();q.pop();
    if(q.empty()&&t.second==1)break;
    if(t.second>1){
      if(t.second&1)q.push(P(t.first,1)),t.second--;
      ans+=t.first*t.second;
      q.push(P(t.first*2,t.second>>1));
    }else{
      P u=q.top();q.pop();
      ans+=t.first+u.first;
      q.push(P(t.first+u.first,1));
      if(u.second>1)q.push(P(u.first,u.second-1));
    }
  }
  return printf("%.6f",ans),0;
}

  

时间: 2024-10-13 14:40:51

BZOJ4117 : [Wf2015]Weather Report的相关文章

(转) Artificial intelligence, revealed

Artificial intelligence, revealed Yann LeCunJoaquin Qui?onero Candela It's 8:00 am on a Tuesday morning. You've awoken, scanned the headlines on your phone, responded to an online post, ordered a holiday sweater for your mom, locked up the house, and

在Gradle中使用jaxb的xjc插件

jaxb,全称为Java Architecture for Xml Binding,是一种将java对象与xml建立起映射的技术.其主要提供两个功能,一是将java对象映射为xml,二是将xml映射为java对象.JAXB有1.0版和2.0版.2.0版对应的JSR(Java specification request, java规格要求)是JSR 222.jaxb中的xjc工具能够将XML Schema转换为对应的java类.支持的XML类型包括XML DTD,XSD以及WSDL.而schema

webservice的 发布

webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口.今天搜索到了非常好的 webservice provider列表 http://www.webservicex.net/WCF/default.aspx 这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就

Beginner Course about ExtJS

Foreword Fortunately, I met "ExtJS" in earlier afternoon, the feeling just like my encounter with "REST" Actually, at beginning, I had no idea about them, but when I got in touch with REST, I found it really suit my taste and opened an

URI.

Overview of URIURI are characterized by the following definitions:UniformUniformity provides several benefits: it allows different types of resource identifiers to be used in the same context, even when the mechanisms used to access those resources m

java调用webservice接口 几种方法

webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口.今天搜索到了非常好的 webservice provider列表 http://www.webservicex.net/WCF/default.aspx 这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就

java访问webservice接口(转)

java调用webservice接口 几种方法 webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口.今天搜索到了非常好的 webservice provider列表 http://www.webservicex.net/WCF/default.aspx 这上面列出了70多个包括很多方面的free webservice provider,ut

python 学习笔记 12 -- 写一个脚本获取城市天气信息

最近在玩树莓派,前面写过一篇在树莓派上使用1602液晶显示屏,那么能够显示后最重要的就是显示什么的问题了.最容易想到的就是显示时间啊,CPU利用率啊,IP地址之类的.那么我觉得呢,如果能够显示当前时间.温度也是甚好的,作为一个桌面小时钟还是很精致的. 1. 目前有哪些工具 目前比较好用的应该是 weather-util, 之前我获取天气信息一般都是通过它. 使用起来也很简单: (1) Debian/Ubuntu 用户使用 sudo apt-get install weather-util 安装

[转]搜索命令简介

An introduction to search commands Did you know you can search Google for web pages which were published in a certain timeframe? Did you know it often better to use Yahoo to work out your back links as you can exclude your own internal links? In Yaho