二模 (2) day1
第一题:
题目描述:淘汰赛制是一种极其残酷的比赛制度。2n名选手分别标号1,2,3,…,2n-1,2n,他们将要参加n轮的激烈角逐。每一轮中,将所有参加该轮的选手按标号从小到大排序后,第1位与第2位比赛,第3位与第4位比赛,第5位与第6位比赛……只有每场比赛的胜者才有机会参加下一轮的比赛(不会有平局)。这样,每轮将淘汰一半的选手。n轮过后,只剩下一名选手,该选手即为最终的冠军。
现在已知每位选手分别与其他选手比赛获胜的概率,请你预测一下谁夺冠的概率最大。 n<=10
解题过程:
1.概率的题目以前很少碰到,每位选手在第一轮比赛存活下来的概率很好算,因为每个人只可能和一个人比赛,但是第i轮就不好确定了。 比如 第一轮1 和 2比 1存活下来了,3 和 4 比 ,有可能是3 留下来 ,第二轮1和3比,也有可能是 4 留下来,第二轮1和4比。 假设 1 存活到第2轮的概率是 P1,3存活下来的概率是P3,4是P4, 那么只能是这样计算:设1和3对打存活下来的概率是P(1,3),和4对打是P(1,4);那么 1 在第二轮存活下来的概率是 P1* ( P3 * P(1,3)+P3 * P(1,4) ) ;
2.弄清楚了概率的计算公式之后,用F[i][j]表示编号为i的人存活到第j轮的概率。F[i][1]=1。那么需要确定第i个人在第j轮有可能和那些人相比。可以画一个关系树,就是一棵倒过来的二叉树。
以n=3为例,如果1要存活到第3轮,也就是在红色点的位置,他有可能和3,4比赛。同理如果要存活到第4轮,也就是蓝色节点,有可能和5,6,7,8比赛。
确定了哪些人比赛之后,根据公式计算递推即可。初始得分100.
第二题:
题目大意:有n个排成一行的格子,给出m个区间,和每个区间的权w,要求区间里至少有w个格子要种树。求最少的种树总数。 n<=30000,h<=5000;
解题过程:
1.这题以前做过了,直接贪心。先按照区间的右端点升序排序,对于任意一个区间,首先必须要满足它的条件,既然肯定要种树,那么就尽量在靠右边的格子填充。
2.具体实现有2种方法。
A:处理每一个区间时,先扫一遍,看看区间里已经有多少树了,在按照上面的贪心原则种下不够的。
B:每种下一棵树,扫一遍所有区间,如果这棵树在某个区间里,把那个区间需要种的树的个数-1;
我用的是方法B,不过时间明显不如方法A。用了2倍多的时间。但是方法A也有弊端,就是如果每个区间的长度都很大就会很慢。
初始得分100;
第三题:
题目大意:
有2个工程AB,每个工程有m个模块,有n个人,每个人完成同一个工程的不同模块耗时一样,分别给出每个人完成工程A和工程B的模块的时间。求最短的总时间能完成2个工程。
解题过程:
1.一开始想到用F[i][j][k]表示前i个人,完成了工程A的j个模块,工程B的k个模块的最短时间。状态转移方程也很好写:
F[i][j][k]=min{max(F[i-1][p][q],(j-p)*A[i]+(k-q)*B[i])}; 时间复杂度O(n*m^4); 初始得分60分。比预想的要好了。
2.AC算法:有点类似之前做过的快餐问题。用F[i][j]表示前i个人,完成了工程A的j个模块后最多还能完成多少个工程B的模块,但是时间不知道,所以先二分时间,然后判断F[n][m]>=m是否成立即可。
状态转移方程:F[i][j]=max( F[i-1][k] + (time-(j-k)*A[i])/B[i] );
注意初始化一开始要把F[0][0]=0,F[i][j]=-inf,而不是设成0,因为某些状态是永远无法达到的。
二模 (2) day1的更多相关文章
- 二模 (16) day1&day2
第一题:题目大意: 数列a[0]=a[1]=1, a[n]=a[n-2]*a[n-1]*n,求a[n]的因子个数 mod 1000000007. n<=1000000 解题过程: 1.递推式还 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- 二模 (8) day2
第一题: 题目描述: 有 n 个炸弹,有些炸弹牵了一根单向引线(也就是说引线只有在这一端能被炸弹点燃),只要引爆了这个炸弹,用引线连接的下一个炸弹也会爆炸.每个炸弹还有个得分,当这个炸弹被引爆后就能得 ...
- 二模 (12) day1
第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...
- 二模 (3) day1
第一题: 题目描述: 一个数列定义如下:f(1) = 1,f(2) = 1,f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.给定 A,B 和 n 的值,要求计算 ...
- 二模 (15)day1
第一题: 题目大意: 有两个长度为N的序列A和B,在A和B中各任取一个数相加可以得到N2个和,求这N2个和中最小的N个. 解题过程: 1.这题是刘汝佳<<训练指南>>上的一道经 ...
- 二模 (13)day1
第一题: 题目大意: N个发射站排成一排,求每个发射站左右第一个比它高的发射站. N<=1000000 解题过程: 1.前几天做poj的时候刚好在discuss里看到有一个神奇的东东叫单调栈,正 ...
- 二模 (11) day1
第一题: 题目大意:用邻接矩阵给出一棵树(边权非负)上N个节点相互之间的最短路距离,求这棵树所有边权的和. 解题过程: 1.暂时还没想出来,待AC. 第二题: 题目大意:给出一些单词,然后建立Trie ...
- 二模 (9)day1
第一题: 题目大意: 给出一个n位01串,要么不动它,要么把它删掉一个字符,要么插入一个字符(0或1),要么把一个1变成0,.使得有1的位置号的总和是n+1的倍数,或者是0. 解题过程: 1.直接枚举 ...
- 二模 (10)day1
第一题: 题目描述: 一个阅览室每天都要接待大批读者.阅览室开门时间是0,关门时间是T.每位读者的到达时间都不一样,并且想要阅读的刊物不超过5本.每位读者心里对自己想看的刊物都有一个排位,到达之后他会 ...
随机推荐
- EF执行存储过程
//执行strSql/procSql //返回受影响的行数 int i = dbsql.Database.ExecuteSqlCommand("exec getActionUrlId @na ...
- android MTK驱动背光唤醒流程
在标准的android驱动中,睡眠唤醒流程非常清晰,能够较方便的更改lcd唤醒时间和led背光的点亮时间,但是也很容易出现问题,比如说闪屏,唤醒慢! 出现闪屏有两个原因 1. 开背光时间在唤醒lcd前 ...
- Linux进程空间分布 & 进程控制块 PCB
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Verdana; color: #555555 } span.s1 { } Linux使用两级 ...
- 转!!JavaBean,List,Map转成json格式
public class User { private String username; private String password; public String getUsername() { ...
- Mybatis关联查询,查询出的记录数量与数据库直接查询不一致,如何解决?
<select id="findUserInfoListForMap" resultMap="BaseResultMap"> SELECT ...
- POJ 1218
题目描述看着就乐了,死板得只按着题意来写了ps: tequi是escape的方言版.. #include <iostream> using namespace std; int main( ...
- (转)springAOP解析-1
原文:http://hzbook.group.iteye.com/group/wiki/2261-Spring 3.1 Spring AOP概述 3.1.1 AOP概念回顾AOP是Aspect-O ...
- VB6 GDI+ 入门教程[1] GDI+介绍
http://vistaswx.com/blog/article/category/tutorial/page/2 VB6 GDI+ 入门教程[1] GDI+介绍 2009 年 6 月 18 日 17 ...
- 【软件使用】TortoiseSVN版本管理软件使用简单说明
TortoiseSVN版本管理软件使用简单说明 很多时候在写一个小的项目不想使用github等工具,只想简单在本地搭建一个版本管理器.那么TortoiseSVN就非常适合. 第一步:下载Tortois ...
- 封装jquery时用到的东西
顺序都是瞎拍的,就是明显分割用 1.将函数封装成$(' ')这种形式 把函数名起成$ $(各种选择器) $(selector) 2.有时候jquery可以继续加点,返回自己本身的元素 创建个构造函数, ...