首页 > 编程语言 > 详细

51nod 80分算法题 (5/100)

时间:2017-01-23 14:59:19      阅读:238      评论:0      收藏:0      [点我收藏+]

1537:见前几篇。

1627:题意:给定n,m的网格(10^5),初始状态为(1,1),你每次可以瞬移到右下方(不可以同行同列逗留)任何一个方格里,求移动到n,m的方案数。

一句话题解:首先很容易想到n^2的DP,不过实际上没必要,我们枚举走了几步,然后插板法看n和m分别分解为i个数的方案数,乘起来就好,也就是求这个式子(默认n小于m)

 $ \sum\limits_{i = 1}^n {\left( \begin{array}{l}n - 1\\i - 1\end{array} \right)} \left( \begin{array}{l}m - 1\\i - 1\end{array} \right) $
1678:题意:给定一个序列(10^5),给定两个操作:单点修改和查询。查询时给定一个i,求出所有与i互质的下标对应的值的总和。

题解:正难则反,我们可以考虑求出不互质的总和,然后取补集,把每个数的值统计到自己的因子上,修改的时候改就可以了,查询的时候容斥一下,考虑到最多只有6 个不同的质因子,2^6完全可以接受。

1711:题意:给定序列(10^5),求出所有区间平均数中第k大的平均数。

题解:二分答案,然后统计有多少个区间满足,统计方法是:我们知道一个区间的平均数可以表示为  $ \frac{{sum[i] - sum[j]}}{{i - j}} $

我们要统计多少个i,j(j<i)满足  $ \frac{{sum[i] - sum[j]}}{{i - j}} \ge mid $

变形一下  $ sum[i] - mid * i \ge sum[j] - mid * j $

也就是每个位置都有一个值sum[i]-i*mid,把这个东西离散化之后我们实际上要求的就是逆序对个数,这个可以树状数组。

总复杂度O(nlognlogn)

1836:题意:m天n个东西,每天等概率选一个东西,求m天后个数期望。

题解:不知道说什么了。。简单dp

51nod 80分算法题 (5/100)

原文:http://www.cnblogs.com/enigma-aw/p/6343861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!