题目链接

https://loj.ac/problem/2229

题解

评分标准提示我们可以使用随机化算法。

首先,我们为每一道编号在 \([1, m]\) 以内的题目(这些题目也对应了 \(m\) 个初始的想法)赋一个 \([0, d]\) 以内的随机权值。接下来,我们可以通过 \(O(n)\) 的递推来求出每一道编号在 \((m, n]\) 以内的题目所包含的所有想法对应权值的最小值。记第 \(i(i > m)\) 道题目包含 \(x_i\) 个不同的想法,且这些想法对应权值的最小值为 \(w_i\),那么有 \(w_i\) 的期望值为 \(\frac{d}{x_i + 1}\)。

我们试着证明一下上述结论。在此之前,我们先思考一个值域较小但更为普遍的问题:在 \([0, 1]\) 内选择 \(x\) 个随机变量(变量之间互相独立,且在 \([0, 1]\) 内均匀随机),求选出的这 \(x\) 个变量中第 \(k\) 小值的期望。

我们将该问题做一个转化:求选出的这 \(x\) 个变量中第 \(k\) 小值的期望,等价于求再在 \([0, 1]\) 内选择一个随机变量,求选出的这个变量小于之前选出的 \(x\) 个变量中第 \(k\) 小值的概率。

经过转化之后的问题显然就很好做了。我们考虑按照数值从小到大给这 \(x + 1\) 个变量赋上排名。忽略变量相等的情况,那么这 \(x + 1\) 个变量的排名构成了一个 \(x + 1\) 的排列,且显然,产生各个排列的概率是相同的。\(x + 1\) 的全排列数为 \((x + 1)!\),我们考虑用合法的排列数除以全排列数来求概率,这样,问题转化为了求共有多少种 \(x + 1\) 的排列满足排列的最后一个位置的值不超过 \(k\)。显然合法的排列总数为 \(k \times x!\)。因此概率即为 \(\frac{k \times x!}{(x + 1)!} = \frac{k}{x + 1}\),那么可以得到在 \([0, 1]\) 内选出的 \(x\) 个随机变量中第 \(k\) 小值的期望也为 \(\frac{k}{x + 1}\)。

这个结论其实被直接放在了[ZJOI2015]地震后的幻想乡一题的提示中。

这样,当随机权值的值域为 \([0, d]\) 时,选出 \(x\) 个随机权值的最小值 \(w\) 的期望即为 \(\frac{1}{x + 1} \times d\)。若求得 \(w\) 的期望 \(E\),那么可得 \(x = \frac{d}{E} - 1\)。

对于第 \(i\) 个想法,我们可以通过多次随机化求平均数来得到 \(w_i\) 的期望的近似值。设随机化的次数为 \(T\),那么总时间复杂度为 \(O(Tn)\)。

代码

#include<bits/stdc++.h>

using namespace std;

const int N = 1e6 + 10;

int n, m, from[N][2], a[N];
double answer[N]; int main() {
scanf("%d%d", &n, &m);
int M = 100000000 / n;
for (int i = m + 1; i <= n; ++i) {
scanf("%d%d", &from[i][0], &from[i][1]);
}
for (int tt = 1; tt <= M; ++tt) {
for (int i = 1; i <= m; ++i) {
a[i] = rand();
}
for (int i = m + 1; i <= n; ++i) {
a[i] = min(a[from[i][0]], a[from[i][1]]);
answer[i] += (double) a[i] / M;
}
}
for (int i = m + 1; i <= n; ++i) {
answer[i] = RAND_MAX / answer[i] - 1;
printf("%.0lf\n", answer[i]);
}
return 0;
}

LOJ2229. 「BJOI2014」想法(随机化)的更多相关文章

  1. LOJ#2230. 「BJOI2014」大融合

    LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...

  2. 【LOJ】#2230. 「BJOI2014」大融合

    题解 我现在真是太特么老年了 一写数据结构就颓废,难受 这题就是用lct维护子树 ???lct怎么维护子树 这样想,我们给每个点记录虚边所在的子树大小,只发生在Access和link的时候 这样的话我 ...

  3. loj2230 「BJOI2014」大融合

    LCT裸题 我LCT学傻了这题明显可以树剖我不会树剖了 本来的siz是Splay上的子树和,并没有什么用. 所以每个点维护虚子树和和子树和 虚子树和即虚边连接的子树和,且只有在access和link操 ...

  4. Loj 2230. 「BJOI2014」大融合 (LCT 维护子树信息)

    链接:https://loj.ac/problem/2230 思路: 设立siz数组保存虚点信息,sum表示总信息 维护子树信息link操作和access操作需要进行一些改动 可参考博客:https: ...

  5. loj2341「WC2018」即时战略(随机化,LCT/动态点分治)

    loj2341「WC2018」即时战略(随机化,LCT/动态点分治) loj Luogu 题解时间 对于 $ datatype = 3 $ 的数据,explore操作次数只有 $ n+log n $ ...

  6. loj3161「NOI2019」I 君的探险(随机化,整体二分)

    loj3161「NOI2019」I 君的探险(随机化,整体二分) loj Luogu 题解时间 对于 $ N \le 500 $ 的点,毫无疑问可以直接 $ O(n^2) $ 暴力询问解决. 考虑看起 ...

  7. 「译」JUnit 5 系列:扩展模型(Extension Model)

    原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...

  8. 「2014-3-18」multi-pattern string match using aho-corasick

    我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...

  9. LOJ_2305_「NOI2017」游戏 _2-sat

    LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个 ...

随机推荐

  1. [Laravel] mac下通过 homestead 搭建环境 到运行项目

    seven_Android 关注 2017.07.03 21:33* 字数 2240 阅读 3464评论 10喜欢 9 之前学习过一段时间的 Laravel ,换 mac 后一直没空做相关的事情,而且 ...

  2. Apache 调用不同的 PHP 版本

    # cd /etc/apache2/mods-enabled 建立 /etc/apache2/mods-available/ 之下的 php7.2.load   php7.2.conf 两个文件的符号 ...

  3. Net下的 ORM框架介紹(转)

    http://www.cnblogs.com/zhaoyx/articles/1896638.html 在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: ...

  4. NETSH.EXE操作SSL

    NETSH.EXE操作SSL 程序位置:c:\windows\syswow64\netsh.exe 查看当前端口配置 netsh http show sslcert 将 SSL 证书绑定至端口号 ne ...

  5. java 传参数时 类型后跟 3个点 "..." 的意义

    对照代码和运行结果便知"..." 的意义 import java.util.ArrayList; public class StringDemo { public static v ...

  6. CentOS 7 IPv6关闭

    你可以用两个方法做到这个.方法 1编辑文件/etc/sysctl.conf,vi /etc/sysctl.conf添加下面的行:net.ipv6.conf.all.disable_ipv6 =1net ...

  7. JS控制输入框,输入正确的价格

    在HTML中,验证输入内容的正确性是提高用户体验的一方面,同时也是初步保证了数据的来源的正确性. 下面是一个常用的控制输入正确的价格的JS代码 function clearNoNum(obj) { o ...

  8. Devexpress Tab Control 文档

    https://documentation.devexpress.com/WPF/8078/Controls-and-Libraries/Layout-Management/Tab-Control/P ...

  9. 巧用网页开发者工具F12 审查、修改元素、去除广告、屏蔽遮罩

    巧用网页开发者工具F12 审查.修改元素.去除广告.屏蔽遮罩 每当打开一个网页的时候,是否为页面有很多广告而烦恼:是否为要操作页面(例如观看超清视频),请先注册登录等等事情而麻烦:是否对网页加锁的视频 ...

  10. sharepoint site performance

    分析了您之前提供的在CPU使用率高的时候抓取的w3wp进程的dump,以下是一些发现: 在抓取dump文件的这个时刻,.Net的垃圾回收正在运行,在内存资源紧张时,.Net会自动启动内存垃圾回收机制, ...