51nod五级题小记
来源:互联网 发布:php mysql 参数化 编辑:程序博客网 时间:2024/06/04 18:07
1028 大数乘法 V2(void)
1040 最大公约数之和(枚举因数,计算贡献度。欧拉函数)
题意:给出一个n,求1-n这n个数,同n的最大公约数的和。比如:n = 6。1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15。(
n≤1e9 )。
思路:考虑枚举因数i,那么它对答案的贡献就是
1020 逆序排列(dp)
题意:给出2个数n和k,求1-n的全排列中,逆序数为k的排列有多少种?(
2≤n≤1000,0≤k≤20000 )
思路:简单dp,因为dp状态容易定义:dp[i][j]:前i个数字,构成逆序对为j个的排列的种数。然后考虑第i+1个数字放在序列中的不同地方产生新的k个逆序对(
1084 矩阵取数问题 V2(dp)
题意:一个M*N矩阵中有不同的正整数,经过这个格子,就能获得相应价值的奖励,先从左上走到右下,再从右下走到左上。第1遍时只能向下和向右走,第2遍时只能向上和向左走。两次如果经过同一个格子,则该格子的奖励只计算一次,求能够获得的最大价值。(2 <= M, N <= 200,1 <= A[i,j] <= 10000)
思路:其实等价于从左上角有两个人同时往右下走,易得dp[x1][y1][x2][y2],第一个人在1号点,第二个人在2号点的最大价值,然后因为在矩阵上,可以发现x1+y1=x2+y2=len,优化掉一维空间,dp[x1][x2][len]。即可。
1201 整数划分 (dp)
题意:将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种。
(1≤N≤50000) 。
思路:整数划分都是套路,第二维维护最大的数是多少。最大只有
所以有
再写一个
两者做差,得到dp[i][j] = dp[i-1][j-1]+dp[i-j][j].复杂度
1052 最大M子段和 (void)
题意:N个整数组成的序列a[1],a[2],a[3],…,a[n],将这N个数划分为互不相交的M个子段,并且这M个子段的和是最大的。如果M >= N个数中正数的个数,那么输出所有正数的和。(2 <= N , M <= 5000,-10^9 <= a[i] <= 10^9)
思路
1383 整数分解为2的幂 (dp)
题意:任何正整数都能分解成2的幂,给定整数N,求N的此类划分方法的数量!由于方案数量较大,输出Mod 1000000007的结果。比如N = 7时,共有6种划分方法
思路:因为2的幂的特性,所以判断一下有无1即可。
if(i % 2 == 0) dp[i] += dp[i / 2];dp[i] += dp[i - 1];
1120 机器人走方格 V3(void)
题意:N * N的方格,从左上到右下画一条线。一个机器人从左上走到右下,只能向右或向下走。并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?(
2≤N≤109 )
1537 分解(矩阵快速幂)
题意: 问
(1+2√)n 能否分解成m−−√+m−1−−−−−√ 的形式 如果可以 输出 m%1e9+7 否则 输出no(n≤1018 )
思路:手动推前几项,发现都满足结论,大胆猜想结论恒成立,数学归纳法易证。所以到此,用矩阵推一推即可。
- 51nod五级题小记
- 51nod四级题小记
- 默慈金数学习小记 && 51nod 1556 计算
- 51Nod
- 51Nod
- 51nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- 51Nod
- [开发日志4]人物控制器修改和2D表现形式修改
- BZOJ 3709 Bohater 【贪心】
- 【问题记录】解决,打开app时,EditView的自动获得焦点,并且软键盘弹出
- 第四周 项目1 建立单链表
- 7-8 使用原子 和 子表结构 ,求广义表 的深度
- 51nod五级题小记
- volatile和synchronized的比较
- vue-cli(详解)
- caffe代码data_transform
- 深入理解linux内核——内核同步
- Java结束线程的三种方法
- neuq 1202: 人民币问题
- setInterval
- jq代码学习3--某网站品牌列表的效果 fl ch2 p53