码迷,mamicode.com
首页 > 其他好文 > 详细

二模 (9) day2

时间:2014-10-12 09:38:07      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:style   数据   sp   on   bs   size   算法   方法   优化   

第一题:

题目大意:求满足条件P的N位二进制数的个数。P:该二进制数有至少3个0或者3个1挨在一起。。 N<=20000

 

解题过程:

1.一开始直接写了个dfs把表打了出来,不过没发现什么规律,然后就尝试着反过来想,先求出不满足条件P的个数,然后总个数减一下。然后就把2^N-ans输了出来,结果发现是个斐波那契数列。(打表大法好啊)

2.如果直接写高精度是要超时并且爆空间的。。所以要用滚动数组并且万进制优化(实际上我用了16位数字压成一个long long),貌似20000的数据万进制还是太慢。另外第一次写压位的高精度,原来要注意输出的时候不够位的要补0。

 

下面给出为什么不满足P的个数是一个斐波那契数列:

A:如果最后2位相同,那么只要前N-2位满足条件P即可(若第N-2位是0,那么N-1,N-2必须是1,反之亦然);

B:如果最后2为不相同,那么只要前N-1位满足条件P即可(若第N-1位是0,那么不管第N-2位是啥,只要第N位是1就好,反之亦然);

综上F[n]=F[n-2]+F[n-1]。

做出这题不难,不过这个递推式还是不大容易理解。

 


 

第二题:

题目大意:给出数轴上N辆车和每辆车的速度,求超车的总次数。

 

解题过程:

1.其实就是求逆序对。一种方法是归并排序,另外一种是树状数组。就当复习了一次树状数组吧。

 

 


 

第三题:

题目大意:给出N个点M条边的有向图,求从1到N的一条路径,要求如果存在权值为正,那么应该尽可能小并输出正权值,如果不存在权值为正的路,那么负权值也应该尽可能小。n≤100,m≤20000。 每条边的权值绝对值小于10.

 

解题过程:

1.状态为二维的最短路,只要修改一下spfa算法,记录d[i][j]表示到点i,权值为j的路径能否达到。

转移的时候d[k][j+w[i][k]]=d[i][j]。

二模 (9) day2

标签:style   数据   sp   on   bs   size   算法   方法   优化   

原文地址:http://www.cnblogs.com/vb4896/p/4020111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!