LOJ2229. 「BJOI2014」想法(随机化)
题目链接
题解
评分标准提示我们可以使用随机化算法。
首先,我们为每一道编号在 \([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」想法(随机化)的更多相关文章
- LOJ#2230. 「BJOI2014」大融合
LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...
- 【LOJ】#2230. 「BJOI2014」大融合
题解 我现在真是太特么老年了 一写数据结构就颓废,难受 这题就是用lct维护子树 ???lct怎么维护子树 这样想,我们给每个点记录虚边所在的子树大小,只发生在Access和link的时候 这样的话我 ...
- loj2230 「BJOI2014」大融合
LCT裸题 我LCT学傻了这题明显可以树剖我不会树剖了 本来的siz是Splay上的子树和,并没有什么用. 所以每个点维护虚子树和和子树和 虚子树和即虚边连接的子树和,且只有在access和link操 ...
- Loj 2230. 「BJOI2014」大融合 (LCT 维护子树信息)
链接:https://loj.ac/problem/2230 思路: 设立siz数组保存虚点信息,sum表示总信息 维护子树信息link操作和access操作需要进行一些改动 可参考博客:https: ...
- loj2341「WC2018」即时战略(随机化,LCT/动态点分治)
loj2341「WC2018」即时战略(随机化,LCT/动态点分治) loj Luogu 题解时间 对于 $ datatype = 3 $ 的数据,explore操作次数只有 $ n+log n $ ...
- loj3161「NOI2019」I 君的探险(随机化,整体二分)
loj3161「NOI2019」I 君的探险(随机化,整体二分) loj Luogu 题解时间 对于 $ N \le 500 $ 的点,毫无疑问可以直接 $ O(n^2) $ 暴力询问解决. 考虑看起 ...
- 「译」JUnit 5 系列:扩展模型(Extension Model)
原文地址:http://blog.codefx.org/design/architecture/junit-5-extension-model/ 原文日期:11, Apr, 2016 译文首发:Lin ...
- 「2014-3-18」multi-pattern string match using aho-corasick
我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...
- LOJ_2305_「NOI2017」游戏 _2-sat
LOJ_2305_「NOI2017」游戏 _2-sat 题意: 给你一个长度为n的字符串S,其中第i个字符为a表示第i个地图只能用B,C两种赛车,为b表示第i个地图只能用A,C两种赛车,为c表示第i个 ...
随机推荐
- TWO PHASES OF ANGULAR 2 APPLICATIONS
Angular 2 separates updating the application model and reflecting the state of the model in the view ...
- Dockerfile RUN, CMD & ENTRYPOINT
Dockerfile RUN, CMD & ENTRYPOINT 在使用Dockerfile创建image时, 有几条指令比较容易混淆, RUN, CMD, ENTRYPOINT. RUN是在 ...
- Oracle学习笔记(一)
用户与表空间 系统用户: 一.系统用户级别sys.system 最高级(sys级别高于system)sysman 操作企业管理器使用的scott 创始人之一的名字scott默认密码是tiger登录方法 ...
- Oracle学习笔记(十二)
十三.存储过程和存储函数1.掌握存储过程(相当于建立一个函数或者方法体,然后通过外部对其调用) 指存储在数据库中供所有程序调用的子程序叫做存储过程或存储函数. 相同点: 完成特定功能的程序 区别: 是 ...
- Plupload 上传详细讲解,Plupload 多实例上传,Plupload多个上传按钮--推荐使用
今天帮朋友解决 Plupload 上传的问题,查了很多资料,资料还是挺全的,但是有点零零散散的,故整理好,合并发出来. 本教程包括: Plupload 上传详细讲. Plupload 多实例上 ...
- 加载 bean.xml 的几种方式 (java or web project)
1. java project ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:bean1.xm ...
- Spring源码解析 - ListableBeanFactory
Extension of the {@link BeanFactory} interface to be implemented by bean factories that can enumerat ...
- (转)SQL Server内存遭遇操作系统进程压榨案例
原文地址:http://www.cnblogs.com/zc_0101/p/3592259.html 场景: 最近一台DB服务器偶尔出现CPU报警,我的邮件报警阈(请读yù)值设置的是15%,开始时没 ...
- 团体程序设计天梯赛L2-021 点赞狂魔 2017-04-18 11:39 154人阅读 评论(0) 收藏
L2-021. 点赞狂魔 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 微博上有个"点赞"功能,你可以为你 ...
- TCP的几个状态(SYN/FIN/ACK/PSH/RST)
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 含义: SYN 表示建立连接, ...