NOI2012 Day2
NOI2012 Day2
迷失游乐园
题目描述:给出一个\(n\)个点的图,边数为\(n-1\)或\(n\)。从某个点出发,每次等概率地随机选一个相连的并且没有经过过的点,直到不能走为止,问期望路径长度为多少。(开始时等概率选一个点为起点)
solution:
设期望长度为\(Len\),每个点的度为\(d\),则
\[Len[i]=\sum_{j与i相连} \frac{Len[j]+dis[i][j]}{d[i]}\]
如果是一棵树,那么可以记\(f[i]\)为从\(i\)号的祖先走到\(i\)号点往下走的期望长度,\(g[i]\)为从\(i\)号点的子树走到\(i\)号点往上走的期望长度。
\[f[i]=\sum_{j \in son(i)} \frac{f[j]+dis[i][j]}{d[i]-1}\]
\[g[i]=\frac{g[fa(i)]+f[fa(i)]-\frac{f[i]+dis[i][j]}{d[fa(i)]-1}+dis[i][j]}{d[i]-1}\]
\[ans=\sum_{i=1}^{n} \frac{(f[i]+g[i])*(d[i]-1)}{d[i]}\]
其中,在计算\(g\)的时候要计算出它的父亲不进入该子树的期望长度,所以式子有点长。
如果有一个环,那么先把环找出来,对于环上的每个点的树都按上面的算出\(f\),\(g\)不能在像上面这样先算,因为只有一棵树时,根是无法向上走的,但现在根可以走到环上的其它点的树,所以要先把环上的点的\(g\)算出来。
枚举环上的点\(i\),然后枚举顺逆时针(这样就相当于删去环上的一条边),这就变成了一棵以\(i\)为根的一棵树,求从\(i\)往下走的期望长度(类似于\(f\))。求出环上的点的\(g\)后,就可以像上面一样处理环上的每一点的树。
时间复杂度:\(O(n)\)
美食节
题目描述:有\(n\)种菜品,每种菜品有\(p[i]\)个学生预订,共有\(m\)个厨师制作这\(n\)种菜,厨师按要求的顺序制作,每次做一人份,每个厨师制作同一道菜的时间未必相同每个同学的等待时间为所有厨师开始做菜起,到自己那份菜品完成为止,求学生最短总等待时间。
solution:
这题主要在于能否逆向思考问题,如果卡在顺序上,那么就解不出这道题了。我们应该考虑每道菜的贡献。设一位厨师一共制作\(k\)道菜,那么第一道菜对时间的贡献为(做菜时间$ * k\(),第二道菜为\)(k-1)$,最后一道为\(1\),所以可以求厨师的最后一道菜是什么?倒数第二道才是什么?……以此来构图(最小费用网络流)
可以采用动态加点,首先每位厨师做一道菜(最后一道),哪位厨师做满了,就加点连向这位厨师与对应的菜品,这时新加的边的费用为(\(*2\)),以此类推,直到完成任务为止。
时间复杂度:\(?\)
NOI2012 Day2的更多相关文章
- 【从零开始学BPM,Day2】默认表单开发
[课程主题]主题:5天,一起从零开始学习BPM[课程形式]1.为期5天的短任务学习2.每天观看一个视频,视频学习时间自由安排. [第二天课程] Step 1 软件下载:H3 BPM10.0全开放免费下 ...
- BZOJ 2879: [Noi2012]美食节
2879: [Noi2012]美食节 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1834 Solved: 969[Submit][Status] ...
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
- day2
三级菜单: ))))))))))] last_levels.pop() ]]]]]]]]:] information = : ch = msvcrt.getch() ][][: : password= ...
- java day2一个模拟双色球的代码
package day2; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt ...
- Python基础-day2
1.Python模块python 中导入模块使用import语法格式:import module_name示例1: 导入os模块system('dir')列出当前目录下的所有文件 # _*_ codi ...
- 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数
本蒟蒻第一次没看题解A的题竟然是省选$Round1$ $Day2$ $T2$ 这道组合数学题. 考试时一开始以为是莫队,后来想到自己不会组合数的一些公式,便弃疗了去做第三题,,, 做完第三题后再回来看 ...
- 冲刺阶段 day2
day2 项目进展 今天本组五位同学聚在一起将项目启动,首先我们对项目进行了规划,分工,明确指出每个人负责哪些项目.由负责第一部分的组员开始编程,在已经搭建好的窗体内,对系部设置进行了编写,本校共六个 ...
- NOI2012 : 迷失游乐园
终于补完NOI2012了好开心~ 题目大意:给定一棵树或者环套外向树,求出从中随机选一条简单路径的期望长度,环上点数不超过20. 设 d[x]表示x的度数,ch[x]表示x孩子个数 up[x]表示x向 ...
随机推荐
- Spring2.0集成Quartz1.5.2调度框架
Quartz是个开放源码项目,提供了丰富的作业调度集.希望您在阅读完本文并看过代码演示后,可以把Quartz的基本特性应用到任何Java™应用程序中.现代的Web应用程序框架在范围和复杂性方面都有所发 ...
- JavaScript基本概念(数组)
1.数组方法 /** * join(str) * 将数组元素转换为字符串并使用参数中的字符串将各字符串链接起来 */ var a = [1, 2, 3]; a.join(); // "1,2 ...
- 远程连接mysql数据慢的问题
由于公司没有服务器,买的阿里云的服务器用于开发,所以就在本地连接服务器的mysql. 连接很慢,打开表也很慢,一开始没多想,以为是网络慢而已. 最近,开发经常要使用navicat连接数据库,实在是太慢 ...
- centos6.7配置git服务器
1.yum install -y git 2.adduser git 3.cd /data/git 没有则创建该目录 git init --bare test.git;创建一个裸仓库,没有工作区,不需 ...
- Linux01--文件管理,常用命令 权限管理
一.Ø文件系统 1.Linux文件系统特点 • Linux文件系统为单根的树状结构 •文件系统根为”/” •文件名大小写敏感,除了”/”都是可用字符文件名以”.”开始的为隐藏文件 •文件路径使 ...
- C++流操作之fstream
在Windows平台对文件进行存取操作可选的方案有很多,如果采用纯C,则需要用到File*等,当然也可以直接调用Windows API来做:如果采用C++,首先想到的就是文件流fstream.虽然在C ...
- fs.rename可以重新写入文件
fs.rename可以重新写入文件 用法 fs.rename(旧path,新path,callback)可以重新写入文件 引用地址 http://www.jb51.net/article/58548. ...
- OC运行时和方法机制笔记
在OC当中,属性是对字段的一种特殊封装手段. 在编译期,编译器会将对字段的访问替换为内存偏移量,实质是一种硬编码. 如果增加一个字段,那么对象的内存排布就会改变,需要重新编译才行. OC的做法是,把实 ...
- C++ STL 一般总结
以下内容来源网上 经过整合而成(转载) 一.一般介绍 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库.它被容纳于C++标准程序库( ...
- Android平台音频信号FFT的实现
转载请标明出处:http://blog.csdn.net/sctu_vroy/article/details/45871823 功能:加载本地SD卡中moveDsp文件夹中的音频文件(包括录音获取文件 ...