03 2019 档案

能被一个整数整除的二进制序列个数(SOJ 2009)
摘要:2009: Zeros and Ones 问题:给出一个$N$位($N\le64$且为偶数)的二进制数并且没有前导$0$,且$0$和$1$的个数都是$N/2$.给出另一个整数$K$,求解满足上述条件并且能被$K$整除的二进制数的个数。 分析:动态规划。定义$dp[i][j][k]$为前$i$位中有$ 阅读全文

posted @ 2019-03-29 19:02 小叶子曰 阅读(232) 评论(0) 推荐(0)

区间动态规划-DFS种类数(SOJ 2469)
摘要:2469: Exploring Pyramids 问题:给出一棵树我们可以写出它的深搜结果,现在给出深搜结果字符串$S$求解对应树的种类数。 例子:深搜结果:$ABABABA$,对应的树(根结点在底层)有$5$个。 分析:应用区间动态规划,定义$dp[i][j]$为$S[i..j]$对应的树的个数, 阅读全文

posted @ 2019-03-28 06:51 小叶子曰 阅读(202) 评论(0) 推荐(0)

快速幂算法(SOJ 4454)
摘要:SOJ 4454: 写作业 问题:给出递推式$f_{1}=2$, $f_{2}=2$, $f_{n}=f_{n-1}+3f_{n-2}+1$, 求解$f_{n}\%1000000007$. 分析:类似于求解斐波那契数(参考这里),利用矩阵的快速幂算法,关键是写出矩阵形式。下面是一种最自然的方式, $ 阅读全文

posted @ 2019-03-25 19:04 小叶子曰 阅读(185) 评论(0) 推荐(0)

快速幂算法(SOJ 2984)
摘要:SOJ 2984: Fibonacci 问题:给出一个非负整数$n$,输出第$n$个斐波那契数$F_{n}$对$10000$取模的结果。 分析:利用最直接的方法(从$F_{0},F_{1}$开始迭代)求$F_{n}$的时间复杂度为$O(n)$.如果要求出所有的$F_{n}$,这种方法已经是最优的了, 阅读全文

posted @ 2019-03-24 14:40 小叶子曰 阅读(186) 评论(0) 推荐(0)

素因子分解(SOJ 2763)
摘要:SOJ 2763: Factorial 问题:给出两个数$N(1\le N\le 10^{9})$和$B(2\le B\le 100000)$,求解$N!$以$B$为基表达时末尾$0$的个数。 例子:(1)$7!$以$10$为基时等于$5040$,此时末尾有$1$个$0$. (2)$7!$以$2$为 阅读全文

posted @ 2019-03-22 16:44 小叶子曰 阅读(286) 评论(0) 推荐(0)

区间动态规划-括号匹配(SOJ 1069)
摘要:SOJ 1069: Brackets 题意:给出由$(,),[,]$四个字符组成的序列$S$,输出符合要求的括号序列的最大长度。下面是符合要求的括号序列的递归定义: (1)空序列; (2)如果$S$是,那么$(S)$和$[S]$也是; (3)如果$S$和$T$是,那么$ST$也是。 分析:这个问题和 阅读全文

posted @ 2019-03-21 14:07 小叶子曰 阅读(486) 评论(0) 推荐(0)

多维动态规划(SOJ 2818)
摘要:SOJ 2818: QQ音速 问题:给出$4$个状态$1,2,3,4$以及状态之间转移的费用矩阵 $T=\left[\begin{array}{cccc}0 &1 &2 &2\\ 1 &0 &1 &1\\ 2 &1 &0 &2\\ 2 &1 &2 &0 \end{array}\right]$.现有两 阅读全文

posted @ 2019-03-21 04:36 小叶子曰 阅读(438) 评论(0) 推荐(0)

0-1背包(SOJ 2142)
摘要:SOJ 2142: Cow Exhibition 同样的题目可见:POJ 2184 问题:给出$n$个元素$node[i],1\le i\le n$,每个元素$node[i]$有两个属性smartness和funness.现在从这$n$个元素中找出一些元素$node[k], k\in S, S\su 阅读全文

posted @ 2019-03-20 11:41 小叶子曰 阅读(163) 评论(0) 推荐(0)

最大正方形(SOJ 2801)
摘要:SOJ 2801: 正方形 http://acm.scu.edu.cn/soj/problem.action?id=2801问题:给出一个$0-1$矩阵,找出只包含0的最大正方形并输出它的边长。 分析:这道题与最大子矩形(SOJ 3329)类似, 这里我们可以使用相同的方法(参考这里). 方法:(1 阅读全文

posted @ 2019-03-20 07:20 小叶子曰 阅读(191) 评论(0) 推荐(0)

最大子矩阵(SOJ 3329)
摘要:SOJ 3329: Maximum Submatrix II http://acm.scu.edu.cn/soj/problem.action?id=3329 问题:给出一个$0-1$矩阵,找出只包含0的最大子矩阵并输出其中0的个数。 方法: (1)动态规划 定义$dp[i][j], 1\le i\ 阅读全文

posted @ 2019-03-16 03:30 小叶子曰 阅读(575) 评论(0) 推荐(0)

单调栈(SOJ 3085)
摘要:SOJ 3085: windy's cake V http://acm.scu.edu.cn/soj/problem.action?id=3085 问题:给出$n$个正整数$num[1], ..., num[n]$, 定义从$i$到$j$的子列的分数为 $(\min_{i\le k\le j}num 阅读全文

posted @ 2019-03-14 12:51 小叶子曰 阅读(282) 评论(0) 推荐(0)

单调栈(SOJ 2511)
摘要:SOJ 2511: Moooo http://acm.scu.edu.cn/soj/problem.action?id=2511 问题:给出$n$个元素$node[i], 0\le i<n$,每个元素$node[i]$有两个属性height和volume.对于每个$node[i]$,它的volume 阅读全文

posted @ 2019-03-14 07:28 小叶子曰 阅读(259) 评论(0) 推荐(0)

分段动态规划(SOJ 1162)
摘要:SOJ 1162: I-Keyboard 问题:给出一个长度为$L$的字符串$S$,其中每个字符有个频数$F[i], 0\le i<L$.现在把$S$分成$K$段满足积和(sum of products)最小。对于每个段,其中的每个字符有个位置$P[i]$值从$1$到这个段的长度。 字符串: $S[ 阅读全文

posted @ 2019-03-11 03:06 小叶子曰 阅读(373) 评论(0) 推荐(0)

完全背包(SOJ 3531)
摘要:SOJ 3531: Number Pyramids http://acm.scu.edu.cn/soj/problem.action?id=3531 题意:首先介绍一个概念,由正整数构成的金字塔,从顶层往下依次是第1层,第2层,......,并且满足第i层有i个数。定义numer[i][j]表示第i 阅读全文

posted @ 2019-03-07 14:10 小叶子曰 阅读(189) 评论(0) 推荐(0)

完全背包(SOJ 3300)
摘要:SOJ 3300: Stockholm Coins http://acm.scu.edu.cn/soj/problem.action?id=3300 题意:给出n个正整数num[i], 0≤i<n,求解一个最小的数,满足要通过求和得到该数必须用上所有的num[i](每个num[i]可以用任意次)。若 阅读全文

posted @ 2019-03-06 18:01 小叶子曰 阅读(122) 评论(0) 推荐(0)

0-1背包(SOJ 3172)
摘要:SOJ 3172: Fisherman http://acm.scu.edu.cn/soj/problem.action?id=3172 题意:给出n个数,从这n个数中选出任意一些求和,求解有多少种不同的和。 分析:考虑0-1背包模型,定义dp[i][j]为使用前i个数,和j是否存在,若存在则为1, 阅读全文

posted @ 2019-03-06 05:14 小叶子曰 阅读(132) 评论(0) 推荐(0)

完全背包(SOJ 2785)
摘要:SOJ 2785: http://acm.scu.edu.cn/soj/problem.action?id=2785 题意:任意一个正整数都可以分解成2的幂次数之和,这里2的幂次数为集合{1,2,4,8,16,32,...}. 举个例子5, 5=1+1+1+1+1 5=1+1+1+2 5=1+2+2 阅读全文

posted @ 2019-03-05 14:21 小叶子曰 阅读(173) 评论(0) 推荐(0)

多重背包
摘要:我在之前讲过0-1背包和完全背包,这里讲多重背包。不同于0-1背包和完全背包,多重背包中每个物品有个给定的数量。假定背包容量为m,有n个物品,每个物品的重量为weight[i], 价值为value[i], 数目为num[i]. 显然,多重背包可以转化为0-1背包问题:将num[i]个物品i看作是nu 阅读全文

posted @ 2019-03-05 07:55 小叶子曰 阅读(227) 评论(0) 推荐(0)

完全背包
摘要:之前我讲过0-1背包,这里讲解完全背包。 一. 问题描述 假设我们给定n个物品,每个物品具有重量weight以及价值value,第i个物品的重量为weight[i], 价值为value[i]。同时给定一个容量为m的背包,求解背包里装入的物品价值之和的最大值。 不同于0-1背包问题(每件物品最多放入一 阅读全文

posted @ 2019-03-04 16:18 小叶子曰 阅读(757) 评论(0) 推荐(0)

0-1背包
摘要:一. 问题描述 给定n个物品,每个物品有一个重量(也可以看作体积)weight[i]和一个价值value[i], 1≤i≤n。现有一个给定容量m的背包,求解背包里装入的物品价值之和的最大值。 二. 分析 定义dp[i][j]为:背包的容量为j并且放入前i个物品的最大价值。我们对第i个物品分析,存在两 阅读全文

posted @ 2019-03-01 15:27 小叶子曰 阅读(276) 评论(0) 推荐(1)

最长连续子段和被某个整数整除(SOJ 2293)
摘要:SOJ 2293: The Longest SubSequence 题目意思很明白,找出能被给出的整数整除的最长的连续子段和,输出这个子段和的长度。算法思路很简单:对数组累计求和,然后利用模同余的思想。这里有个取模的trick注意一下,C++中一个负数$x$对一个正数$y$取模为负,例如$-9\%4 阅读全文

posted @ 2019-03-01 13:08 小叶子曰 阅读(294) 评论(0) 推荐(0)

查找过半元素(SOJ 4389)
摘要:SOJ 4389: http://acm.scu.edu.cn/soj/problem.action?id=4389 题意非常简单:给定一个数组,找出过半的那个元素。刚开始我考虑从中位数入手,因为中位数一定是所求的答案。所以,利用快排找第(n+1)/2个元素,结果超时了。后来参考了别人的算法,这道题 阅读全文

posted @ 2019-03-01 13:06 小叶子曰 阅读(178) 评论(0) 推荐(0)

0-1背包(SOJ 2222)
摘要:SOJ 2222: Health Power http://acm.scu.edu.cn/soj/problem.action?id=2222 题目意思不难理解:给出需要的能量K以及F个食物(每个食物只能用一次),每种食物i具有能量HP[i]和分数score[i]。食物应该首先满足能量要求,然后从剩 阅读全文

posted @ 2019-03-01 13:02 小叶子曰 阅读(141) 评论(0) 推荐(0)

SOJ 1093
摘要:SOJ 1093: 伊拉克 http://acm.scu.edu.cn/soj/problem.action?id=1093 题意:有m艘船,给出每艘船的长度。现在把这m艘船排成n行,每一行至少有一艘船。给出这n行每一行的长度,输出该行船的个数以及每艘船的长度。多种情况下,将长的的放在前面。 这道题 阅读全文

posted @ 2019-03-01 12:59 小叶子曰 阅读(122) 评论(0) 推荐(0)

SOJ 1030
摘要:SOJ 1030: Sum It Up http://acm.scu.edu.cn/soj/problem.action?id=1030 题意不难理解,给出一个非递增序列和一个数t,从序列中找出所有的子序列满足之和等于t。序列中的数只能用一次并且不能出现重复的子序列。跟SOJ 1027相比这一道题有 阅读全文

posted @ 2019-03-01 12:57 小叶子曰 阅读(139) 评论(0) 推荐(0)

SOJ 1027
摘要:SOJ 1027: Lotto http://acm.scu.edu.cn/soj/problem.action?id=1027 题意非常简单:给定一个序列,按字典序输出固定长度的所有子序列。标准的做法是回溯,因为题目中给出了固定长度为6,所以可以用6层循环暴力输出,代码如下: #include < 阅读全文

posted @ 2019-03-01 12:54 小叶子曰 阅读(95) 评论(0) 推荐(0)

SOJ 1082
摘要:回溯算法最经典的问题是八皇后问题。题意很简单,给定一个n*n棋盘,放置n个皇后,满足任意两个皇后不能在同一行,同一列或者同一对角线上。显然,暴力算法可以求解这个问题。回溯算法相较于暴力算法的一个优点是从第一个状态开始,执行深度优先搜索,如果当前状态不满足,则立即停止并返回上一个状态。利用递归可以非常 阅读全文

posted @ 2019-03-01 12:29 小叶子曰 阅读(150) 评论(0) 推荐(0)

导航