二模 (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本.每位读者心里对自己想看的刊物都有一个排位,到达之后他会 ...
随机推荐
- ubuntu虚拟环境virtualenv中djanggo连接mysql
在ubuntu服务器上安装MYSQLDB,执行:sudo apt-get install python-mysqldb, 若提示: ---------------------------------- ...
- MATLAB中的nargin与varargin的用法
nargin的用法: nargin:number of function input arguments,指的是一个函数的输入变量的个数. 用法:nargin或着nargin(fx), 其中fx指的是 ...
- html中盒子模型立体结构图
边框(border),位于盒子的第一层..元素内容(content).内边距(padding),两者同位于第二层..背景图(background-image),位于第三层..背景色(backgroun ...
- Lua a and b or c
lua中nil和false为条件不成立,其余都为条件成立. a and b : a条件不成立,则返回a,否则,返回b a or c : a条件成立,则返回a,否则,返回b 常用x = x or v ...
- windows redis:Uncaught exception 'RedisException' with message 'Redis server went away'
window-exe-redis-2.8.12服务,当你复制好php_igbinary.dll,php_redis.dll时候,你运行redis报错:Fatal error: Uncaught exc ...
- typedef void (*funcptr)(void)
定义一个函数指针类型.比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { printf("再见!&q ...
- struts2 I18N 国际化
1. 准备properties文件 globalMessages_en_US.properties globalMessages_zh_CN.properties 2. 配置struts.xml &l ...
- 实现 像网易云音乐 播放列表那样的弹出型Dialog
如图 所示是点击Test之后的 弹出的Dialog (请无视我工程的命名) 20161017/**加入点击回调,假设dialog里放了一个TextView*/ 得先写一个点击回调 public int ...
- Java并发编程:并发容器之CopyOnWriteArrayList
转载: Java并发编程:并发容器之CopyOnWriteArrayList Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个 ...
- php Composer 报ssl证书错误
CA证书下载地址:http://curl.haxx.se/docs/caextract.html 修改php.ini文件 openssl.cafile= D:/wamp/php/verify/cace ...