[BZOJ1494][NOI2007]生成树计数(动态规划,矩阵快速幂) 题面 Description 最近,小栋在无向连通图的生成树个数计算方面有了惊人的进展,他发现: ·n个结点的环的生成树个数为n. ·n个结点的完全图的生成树个数为n^(n-2).这两个发现让小栋欣喜若狂,由此更加坚定了他继续计算生成树个数的 想法,他要计算出各种各样图的生成树数目.一天,小栋和同学聚会,大家围坐在一张大圆桌周围.小栋看了看, 马上想到了生成树问题.如果把每个同学看成一个结点,邻座(结点间距离为1)的同学间…
https://leetcode.com/problems/knight-dialer/ 在如下图的拨号键盘上,初始在键盘中任意位置,按照国际象棋中骑士(中国象棋中马)的走法走N-1步,能拨出多少种不同的号码. 解法一:动态规划,逆向搜索 class Solution { public: vector<vector<,},{,},{,},{,},{,,}, {},{,,},{,},{,},{,}}; ; int knightDialer(int N) { ; ; i<=; i++) {…
快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了解到动态规划是“带有备忘录的递归”, 而大多数用来理解动态规划的例子都是斐波那契数列,就是那个经典的递归式 f(i)=f(i-1)+f(i-2) ,f(1)=f(2)=1 那么我们就可以得到很多式子,比如求f(5): f(5)=f(4)+f(3); f(4)=f(3)+f(2); f(3)=f(2)…
[CF1151F]Sonya and Informatics(动态规划,矩阵快速幂) 题面 CF 题解 考虑一个暴力\(dp\).假设有\(m\)个\(0\),\(n-m\)个\(1\).设\(f[i][j]\)表示当前做到了第\(i\)个操作,前\(m\)个元素中有\(j\)个\(1\)的方案数. 转移就枚举交换哪两个东西就可以了. 把转移用矩阵优化就可以做到\(O(n^3logK)\). #include<iostream> #include<cstdio> #include&…
[BZOJ5298][CQOI2018]交错序列(动态规划,矩阵快速幂) 题面 BZOJ 洛谷 题解 考虑由\(x\)个\(1\)和\(y\)个\(0\)组成的合法串的个数. 显然就是把\(1\)当做隔板插入进去,那么有\(y+1\)个位置可以放\(1\),所以方案数就是\({y+1\choose x}\). 而\(x^ay^b\)的贡献可以直接快速幂算,所以问题变成了求组合数.然后\(Lucas\)一下就可以得到\(TLE\)的好成绩了.复杂度\(O(nlogn)\)(事实上只要有快速幂就会\…
[BZOJ4870]组合数问题(动态规划,矩阵快速幂) 题面 BZOJ 洛谷 题解 显然直接算是没法做的.但是要求的东西的和就是从\(nk\)个物品中选出模\(k\)意义下恰好\(r\)个物品的方案数.\(n\)的范围这么大,往快速幂的方面靠.设\(f[i][j]\)表示从前\(i\)个物品中选了模\(k\)意义下\(j\)个物品的方案数,转移显然,快速幂即可. 时间复杂度\(O(k^3logn)\). 稍微注意一个细节,\(k=1\)的时候,矩阵的唯一一项不是\(1\),而是\(2\).所以在…
CF954F Runner's Problem(动态规划,矩阵快速幂) 题面 CodeForces 翻译: 有一个\(3\times M\)的田野 一开始你在\((1,2)\)位置 如果你在\((i,j)\)位置 在不出界的前提下,可以走到\((i+1,j),(i+1,j±1)\) 有\(n\)段障碍,障碍不能走 询问从\((1,2)\)到达\((M,2)\)的方案数 \(n<=10^4,M<=10^{18}\) 题解 发现\(M\)的范围非常大 很容易往矩阵快速幂的方向考虑 如果知道上一行的…
LeetCode:螺旋矩阵||[59] 题目描述 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 题目分析 这道题难度也是中等,是那道恶心题的衍生版,但是说实话难度小于1,且已经明示一定是正方形矩阵.我们直接改一下1的代码就可以了!并且效率是非常高的! 这道题简直也丧心病狂☺!我们采用的方式是一圈一圈赋值! 答案将是从第一个外层按顺时…
LeetCode:螺旋矩阵[54] 题目描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] 输出: [1,2,3,6,9,8,7,4,5] 示例 2: 输入: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] 输出: [1,2,3,4,8,12,11,10,9,5,6,7] 题目分析 这道题简直…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1614 题意: 给你一个无向图,n个点,m条边. 你需要找出一条从1到n的路径,使得这条路径上去掉k条最大的边后,剩余边中最大的边最小. 问你最大边最小为多少. 题解: 求最大值最小:二分. 二分:最大边的值L. check函数: 每次一遍spfa. 对于每条边,如果len > L,则认为该边边权为1:如果len <= L,则边权为0. dis[i]也就代表:从1到i最少要去掉多少条边,…