- 博客(15)
- 问答 (1)
- 收藏
- 关注
原创 通过扩欧得出线性同余方程的通解以及x的最小正整数解
同余定理若 ax与b模m的余数相同(其中x为未知数,即所需要求的数),即ax%m=b%m,则这个式子可以记作成a≡b (mod m)。设ax对m取模后的余数为r1,则有:ax=y1*m+r1。 ①同理,设b对m取模后的余数为r2,则有:b=y2*m+r2。 ...
2019-03-22 23:01:49 3164 11
原创 HDU---2069(母函数 二维、三维DP)
这题可以 母函数 或者 DP。母函数:为了描述每一种取法的钱数个数要限制到 100100100 ,则sup[]sup[]sup[]与temp[]temp[]temp[]数组再加一个一维,表示这个状态的钱数是 iii 个,然后多项式合并时判断是否超过100100100,超过则不计数。DP:同理,一般的 DP[i][j]DP[i][j]DP[i][j] 表示的是 前 iii 类美分,所能达到钱...
2019-07-19 19:06:35 386
原创 HDU 2571(DP 和 初始化问题)
设 dp[i][j]dp[i][j]dp[i][j] 表示第 iii 行,第 jjj 列的最大幸运值。对于第 iii 行 jjj 列的最大值转移状态:1、来自于第 i−1i-1i−1 行 jjj 列,取dp[i−1][j]。dp[i-1][j] 。dp[i−1][j]。2、来自第 iii 行 j−1j-1j−1 列,取dp[i][j−1]。dp[i][j-1]。dp[i][j−1]。3、...
2019-07-18 10:55:43 208
原创 HDU 4427 Math Magic
设 dp[i][j][k]dp[i][j][k]dp[i][j][k] 表示的是 前 iii个数,总和为 jjj ,LCM 为 kkk 的时候的种类数。如果现在已知dp[i][j][k]dp[i][j][k]dp[i][j][k],那么我们可以求得下一个状态:设下一个数为 sss ,那么 dp[i+1][j+s][lcm[k,s]]dp[i+1][j+s][lcm[k,s]]dp[i+1][j...
2019-07-16 20:41:22 167
原创 UVA 147 完全背包种类个数问题 (含有一维、二维 代码)
UVA 147 (完全背包的种类个数问题)由于涉及到美元、美分,所以将全部金额乘以100之后,再进行完全背包的种类状态 dpdpdp 即可。先通过二维来分析出一维:设 dp[i][j]dp[i][j]dp[i][j] 表示的是 前 iii 个物品,能达到 jjj 美元时的种类数。对于初始化:dp[0][j]dp[0][j]dp[0][j] 表示前 000 个物品,在最大容量为 jjj 的...
2019-07-16 20:18:07 258
原创 HDU3535 AreYouBusy
多重背包问题该题含有三种背包问题:1、在本组中,至少拿一件物品的 0 1 背包问题2、在本组中,至多拿一件物品的 0 1 背包问题3、在本组中的 0 1 背包问题1、对于第一种:由于至少拿一件物品,故初始化 dp[i]dp[i]dp[i] 为 负无穷。因为该 第 i 组,在各种体积下的合法状态都是未知的,因为不可以不拿,不能初始化为 000 ,而求的是最大值,故初始化为 负无穷。由于...
2019-07-16 01:03:35 152
原创 HDU 3033 I love sneakers!
分组背包问题至少拿一件物品的 0 1 背包问题设dp[i][j] 表示前 i 组,在总花费为 j 的情况下,最大价值。对于边界:dp[0][j]dp[0][j]dp[0][j] 表示前 000 组 的最大价值,因为不可能状物品,果断初始化为 000 。dp[i][0]dp[i][0]dp[i][0] 表示总花费为 000 的时候,前 iii 组的最大价值。由于本题的物品花费可能为 000...
2019-07-16 00:38:03 94
原创 POJ 1384 Piggy-Bank
完全背包的装满问题凡是求装满或不装满,都是由于初始化决定的。一定要记住,DP的初始化是满足解的条件(或待定解状态)而对于完全背包:设 dp[i][j]dp[i][j]dp[i][j] 表示 前 iii 件物品在拥有最大体积 jjj 的情况下,所得到的最大价值。当dp[0][j](j=0......V)dp[0][j] (j=0......V)dp[0][j](j=0......V) 时,...
2019-07-15 21:45:35 174
原创 POJ 3466 带限制的 0 1背包问题
POJ 3466 带限制的 0 1背包问题题目链接分析如下:由于必须要 超过 q 值才能购买,而无论是一维还是二维普通 000 111 背包问题,它后一个的值都需要用到上一个的值。比如:我们现在更新 dp[i][j]dp[i][j]dp[i][j],需要用到 dp[i−1][j−w[i]]+v[i]dp[i-1][j-w[i]]+v[i]dp[i−1][j−w[i]]+v[i] 的值,...
2019-07-15 21:12:58 369
原创 对Tarjan求割点的理解
Tarjan算法求割点模板题:P3388求割点要注意的是与求强连通分量的区别:1、割点对于的是无向图,而非有向图。2、不需要栈数组3、low[]的含义变化为:最早能绕到的祖先节点(这里的定义是洛谷题解里面觉得最透彻的,而我觉得应该是:不通过父亲节点,最早能绕到的祖先节点。 下面会有解释~ ),为什么是说绕到,因为是有向图,所以一定会有 儿子–>父亲 这条路,而不能通过这条路到它...
2019-07-08 12:20:16 383
原创 LCA 与 tarjan 实现的原理
P3379 LCA模板这里写到的是用tarjan与并查集求LCA。首先回顾一下tarjan算法:核心代码:for (int i = head[u]; i; i = edge[i].next){int v = edge[i].to;tarjan(v);//递归返回,代表此时已经遍历完以 u 为节点的子树,u 根据每次递归层数,u 是不同的}它是一个可以将一张有向图或无向图遍历D...
2019-07-08 12:13:42 292
原创 两种素数的筛法(埃拉托斯特尼筛法与欧拉筛)
很多文章都已经介绍过这两类筛法了,在这不过多叙述,而这篇文章的重点放在“欧拉筛”的细节上(如果必要,可以直接去看“欧拉筛”那节)。之前浏览过大篇文章,都是来细说 “i % prime[j]==0 ” 为什么跳出循环,而没有对 “为什么只需要当前的 i 乘以比它更小的 prime[j] 就可以筛去合数” 在后面的“欧拉筛”篇幅会有详细推导。老规矩,先放上埃式筛:int cnt = 0 从0...
2019-04-07 14:31:58 585
原创 二分查找步骤总结
6种二分查找及其变式总结及牢记方法假设数组为:int arr[] = { 1,2,3,3,4,5,5,8,10,12 };(数组从小到大排序)先从最开始的两个二分查找入手,通过细节变形而总结出6中二分查找:- 查找第一个等于key的元素(或 是第一个大于等于key的元素 或 最后一个小于key的元素)我们首先想一下,当 arr[mid]==key 的时候,我们有两个策略:1、left=m...
2019-02-10 13:26:58 2656
原创 Codeforces 867E :Buy Low Sell High 问题(贪心、优先队列)
**题目大意:有一只股票,假如你能遇见未来N天,每天的股票价格。问最多获利多少?**(在任意一天内,只能买或卖或者不操作,当然手中未有股票的时候不能卖)这题跟普通促销问题不一样的是,他可以不买不卖。此题用到的贪心算法: 只要当前股价大于之前所买的股票价格,咱就卖。很容易想到的是,把所有价格排序,更大的一些相加减去剩下更小的一些相加。可难以操作的是,时间是不可逆的,如果前一天卖10块钱,...
2018-12-15 14:40:51 630 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人