自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 01背包求具体方案

【代码】01背包求具体方案。

2023-04-20 18:50:26 87

原创 博弈论 打表

打一个下标从2开始的二维矩阵,可以看出当两个数的二进制位数相同时,就是必败态,也就是先手必败。

2023-04-18 19:28:40 123

原创 蓝桥杯2022国赛b组

【代码】蓝桥杯2022国赛b组。

2023-04-05 21:13:22 91

原创 POJ-2184 (01背包的负数处理)

在标准的01背包里,我们看见j>j-TS[i],也就是说我们要想求dp[j],我们必须用到上一层的dp[j]和dp[j-TS[i]],也就是要用到上一层的他自己dp[j]与自变量j-TS[i]小于自己的[j]的dp[j-TS[i]],如果正序的话,dp[j-TS[i]]就会被破坏掉。同样的,如果TS[i]是负数,j-TS[i]>j,如果我们要求dp[j],我们要用到上一层的dp[j]与上一层的自变量j-TS[i]大于j的dp[j-TS[i]],如果按照逆序循环,dp[j-TS[i]]会被破坏掉。

2023-03-28 19:58:38 144

原创 区间贡献问题

出现的质数的个数-多余(区间未出现的质数),利用每个数的最小质因子去分解质因数并存其出现过的位置,那么在未出现的一段区间len(就是两次出现的位置相减-1),即ans减去(len+1)*len/2,注意减去尾部空白段。先假设每个子数组都含有所有质数(数组中的数含有的质数),然后依次减去不包含某个质数的区间。方法二 : 这题我们还可以直接根据每个质数出现的位置,得到所有含有这个质数的区间个数。题意:求所有子数组的lcm的质数个数之和。

2023-03-26 19:46:24 83

原创 李白打酒加强版

状态转移方程:dp[i][j][k]=dp[i-1][j][k/2](i>1&&k%2==0) + dp[i][j-1][k+1](j>1);状态设计:dp[i][j][k]的值表示遇到i家店,j朵花,酒壶中还剩k斗酒的可能情况数;最后一次肯定遇到的是花,那么最后的结果便是dp[N][M-1][1];va 初始值为 2,要求经过 n+m次操作后 va=0的方案数取模。边界设计:除了dp[0][0][2]=1,其他元素全为0;(1)va=va*2(一共n次)(2)va=va-1(一共m次)

2023-03-24 17:37:57 113

原创 set维护区间

【代码】set维护区间。

2023-03-20 20:45:32 133

原创 trie树 + 树形dp

如果在trie上一个节点往下有分叉,那么我们序列中必然有数该位上为1和0,那么任何X异或后,最终值的该位上必为1,所以要使最终值最小,此时最终值应为 min(left,right) + (1

2023-03-05 10:30:26 153

原创 Floyd :最短路前提下最大价值

题目多次询问:每次询问两个城市u到v 的最短路径,并在最短路径的前提下使他购买的纪念品的总价值最大化。因为询问次数多,并且数据量不大,最大只有300个点,所以我们考虑floyd。

2023-01-22 23:09:03 58

原创 k倍区间问题

如果只是这样的话,其实是不对的,因为我们少考虑了一种情况,例如k = 5时,sum[i]%k = -1 和sum[j]%k = 4的这段区间和也是k的非负整数倍,首先可以看出sum[i]时负数, sum[j]是正数,因此sum[j] - sum[i] 也是正数,并且余数4 - (-1) = 5 能被k整除。已知a

2023-01-17 11:41:43 123

原创 均分纸牌问题

这题和上题不大一样,每次移动只能移动一个,问移动次数。并且行和列都要均分,但是行内交换不会影响到列,列内交换也不会影响到行,所以我们分别进行两次环形均分纸牌操作就行了。最后就转换成了一个经典问题:给你一组点的位置,求某个位置到所有点的距离最小是多少,最小值就是(所有点到其中位数的距离之和)由于每次移动可以移动若干张牌,问移动几次,所以我们只需要看x[1]~x[n-1]中非零的个数。x[i]代表i向i+1移动的牌数,负数时代表i+1向i移动。

2023-01-12 18:59:25 71

原创 二分查找算法模板

二分模板一共有两个,分别适用于不同情况。中, 每次将区间长度缩小一半,当。算法思路:假设目标值在闭区间。,此时为了防止死循环,计算。时,我们就找到了目标值。

2023-01-10 14:23:43 68

原创 最长公共上升子序列(LCIS)

而且是在a[i] == b[j]的时候成立,且可以发现,在每一次进行第二层循环时,a[i]是不变的,这也就可以推出,与a[i]进行配对的b[j]的值也是暂时不变的,那么把b[j]等价转化为a[i],并将maxv提至第一层循环内,在每一次比较a[i]和b[j]时,一起讲maxv处理出来,这样就可以将其优化为如下的O(n ^2)的代码。(1)若是 a[i]!若是a[i] == b[i] 如果不想要a[i]与b[j]进行配对,是不是也会得到上面的结果,故当。1 2 3 9 8 7 6 5 4序列。

2023-01-09 21:56:03 272

原创 染色法判断二分图

二分图当且仅当图中不含奇数环 环当中的边的数目为奇数。二分图可以把所有的点划分在两边 使得集合内部没有边。2.如何使用染色法判定图是不是二分图?如果不含奇数环的话 则一定是二分图。在染色过程中出现了矛盾 不是二分图。在染色过程中不出现矛盾 是二分图。

2022-12-18 19:29:36 77

原创 string.find()

【代码】string.find()

2022-11-27 20:16:08 194

原创 python 输出算符表达式

【代码】python 输出算符表达式。

2022-11-20 19:47:20 80

原创 mp[1e9][1e9]

【代码】mp[1e9][1e9]

2022-11-19 21:41:59 67

原创 vector 开动态二维、三维数组

行和列的下标都是从0开始,即(0 ~ n - 1 , 0 ~ m - 1);数组元素值默认为 0。初始化为value。

2022-10-31 22:49:49 380

原创 线段树区间修改,区间查询最大值

分析: 我们可以把树上问题转换为序列问题, 跑一遍dfs得到dfs序, in[], out[], 然后可以得到每个节点x为根节点的子树在dfs序中的范围 in[x] ~ out[x]. 然后问题就转换为线段树区间修改,区间查询最值。题意:给你一颗树,多次操作,操作一: 给两个数x , k,让以x为根节点的子树(包括它自己) 中所有节点值 + k;操作二: 给一个数x, 问以x为根节点的子树(包括它自己) 中所有节点值的最大值。最开始所有节点值为0;

2022-10-29 22:06:53 514

原创 unordered_map 和 map 的区别

缺点:空间占用率高,因为map内部实现了红黑树,虽然提高了运行效率,但是因为每一个节点都需要额外保存父节点,孩子节点和红。黑性质,使得每一个节点都占用大量的空间。当插入操作少,查询操作多时,用unordered_map。适用:对于有顺序要求的问题,用map会高效一些。当有大量的插入和查询操作时, 用map更快;,有可能还会哈希冲突(开链法避免地址冲突)优点:有序性,内部实现的红黑树的查找,优点:因为内部实现哈希表,因此其。适用:常用于查找问题。

2022-10-24 19:29:58 667

原创 高斯消元

它本质上是通过elementary row operation(初等行变化),将线性方程组的Augmented matrix(增广矩阵)转化为row echelon form(行阶梯型矩阵)。Gaussian elimination(高斯消元法)是线性代数中求解线性方阵组的一种算法,它也可用来求矩阵的秩,以及求可逆矩阵的逆矩阵等等,用途十分广泛。这里面就有另外一个知识点:线性方程组有解的充要条件是增广矩阵的最右列不是主元列,当没有自由变量时有唯一解,有自由变量时,有无穷多解。容易发现,这是一个满秩矩阵。

2022-10-03 11:32:41 213

原创 快速幂求逆元

因此 当 a m ≡ 1(mod p), m即为 a 在mod p 意义下的逆元。(需要注意只有a和p互质,a才有关于p的逆元) 时,作为对比,费马小定理 a ^(p − 1) ≡ 1 ( mod p) , 其中 p为质数),实际上就是欧拉定理的特殊情况。当 a m ≡ 1(mod p), m即为 a 在mod p 意义下的逆元。(需要注意只有a和p互质,a才有关于p的逆元)。对任意两个正整数 a , n ,若两者互质,则。就是a 在 mod p 意义下的逆元。一个质数 p 的欧拉函数值。

2022-09-19 16:35:24 70

原创 线性筛法求欧拉函数值

在线性筛法中,每个合数n只会被它的最小质因子p筛一次。我们恰好可以在此时执行以上两条判断,从phi(n/p)递推到phi(n)此题数据量很大,所以要用到线性筛法求欧拉函数。定义:欧拉函数表示1-N中与N互质的数的个数;用希腊字母φ表示,φ(N)表示N的欧拉函数.3.当N为奇数时,φ(2*N)=φ(N);因为除了p的倍数之外,其他数都与N互质;4.若N是质数p的k次幂,φ(N)=1.欧拉函数是积性函数(非完全);5.当N是质数时,φ(N)=N-1;2.除了N=2,φ(N)都是偶数;若将N表示成质因子分解式。

2022-09-07 22:47:04 286

原创 求N的所有约数

所以我们可以枚举 b1的所有约数,然后依次判断是否满足 lcm(x,b0)=b1 以及 gcd(x,a0)=a1 即可。所以一个数n的质因数只可能有一个大于sqrt(n)的,所以只用预处理出来。x和b0的最小公倍数是b1,所以x一定是b1的约数。如果直接用试除法求 b1 的所有约数,那么总计算量是。,会有一个测试数据超时。

2022-09-05 21:21:13 89

原创 一个数的约数个数,约数之和

如果k是奇数,则一共有偶数项,也可以把最后一项拿出来,

2022-08-18 20:45:10 105

原创 可持久化线段树

我们发现需要进行离散化,因为此时建树的依据是数值的大小,左子树存放的数比右子数的存放的数要小,而不是下标,又因为原本的数据取值太大,因此需要通过离散化将所有数据离散为一个较小范围,离散后我们并不在意它们的真实值,只需要某个数在所有数中的位置,通过位置可以找到在原数据中的真实值。当我们插入一个元素的时候,我们其实只需要修改其中一条链的数据,对于其他剩余的节点我们就直接复制,同时复制旧版本的节点到新的树上,复制完后新版本的节点加上新的版本号。区间[1,1]的线段树(蓝色节点为新节点)...

2022-08-07 13:40:22 121

原创 判断一个度数序列是否可以构成简单无向图

如图片两个定理: 利用握手定理及其推论:下面给出几个例子一. 1,1,1,2,3显然度数之和为偶数,也有偶数个奇数度。首先进行降序排列:3,2,1,1,1删去最大度数3,将其后面的3个度数减一:1,0,0,1重新排序:1,1,0,0删去最大数1,将其后面的1个度数减一:0,0,0发现最后所有度数都变成了0,则可以构成简单无向图。二.2,2,2,2,2显然度数之和为偶数。首先进行降序排列:2,2,2,2,2删去最大度数2,将其后面的2个度数减一:1,1,2,2重新排序:2,2,1,1

2022-08-05 00:48:20 2714

原创 spfa 判断负环正环

时间复杂度平均情况下O(m),最坏情况下O(nm),n表示点数,m表示边数。

2022-07-26 13:12:55 410

原创 数独(DFS+优化搜索顺序+位运算)

row[N],col[N],cell[N][N]都用9位的二进制数表示(初始状态下全为1,代表1-9都可以填),判断在坐标x,y上填某个数是否合法,只需要row[x]&col[y]&cell[x/3][y/3],例如结果是000010001,表示1,5可以填。很明显这里面check判定很多,我们必须优化这个check,所以我们可以对于,每一行,每一列,每一个九宫格,都利用一个九位二进制数保存,当前还有哪些数字可以填写.很明显,我们肯定是从当前能填合法数字最少的位置开始填数字。...

2022-07-22 21:46:30 151

原创 树的果实(dfs序+莫队算法)

对于1节点的子树贡献为(32)^2+(62)^2+(72)^2+(51)^2+(81)^2+(91)^2+(1*1)^2=547。查询一个节点的子树值,就是查询一个连续区间的值,用普通莫队就可以做出,细节就不多说了,因为这里和莫队模板题很接近了。对于5节点的子树,贡献为(71)^2+(81)^2+(31)^2+(61)^2=158。对于7节点的子树,贡献为(81)^2+(31)^2+(6*1)^2=109。树遍历dfs序使一个点的子树成为连续的区间。对于6和10节点的子树内。...

2022-07-15 00:17:02 82

原创 莫队算法

是莫涛发明的一种解决区间查询等问题的算法,基于思想,复杂度为;一般来说,如果可以在O(1)内从【l,r】的答案转移到【l-1,r】、【l+1,r】、【l,r-1】、【l,r+1】这四个与之紧邻的区间的答案,则可以考虑使用莫队。1先将所有查询记录下来,然后排序(排序规则如果左端点在同一个块中(a.l/sqrt(n)==b.l/sqrt(n)),则看右端点谁大(a.r...

2022-07-14 20:36:10 120

原创 三角函数,反三角函数

B - Counterclockwise Rotation (atcoder.jp)Time Limit: 2 sec / Memory Limit: 1024 MBIn an xy-coordinate plane whose xx-axis is oriented to the right and whose y-axis is oriented upwards, rotate a point (a, b) around the origin d degrees counterclockwise an

2022-07-11 12:20:24 628

原创 次小生成树

例题:秘密的牛奶运输农夫约翰要把他的牛奶运输到各个销售点。运输过程中,可以先把牛奶运输到一些销售点,再由这些销售点分别运输到其他销售点。运输的总距离越小,运输的成本也就越低。低成本的运输是农夫约翰所希望的。不过,他并不想让他的竞争对手知道他具体的运输方案,所以他希望采用费用第二小的运输方案而不是最小的。现在请你帮忙找到该运输方案。注意::如果两个方案至少有一条边不同,则我们认为是不同方案;费用第二小的方案在数值上一定要严格小于费用最小的方案;答案保证一定有解;输入格式第一行是两个整数 N,M,表示销

2022-07-01 17:49:16 91

原创 multiset

c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。找默认排序(从小到大)的第一个/最后一个值:*s.begin()/*s.rbegin()*s.begin()/*prev(s.end())如果是prev的话,prev(s.end())返回的是当前迭代器的前一个迭代器,复杂度不确定。C - Max - Min Qu

2022-05-29 10:50:04 122

原创 AtCoder E - Prefix Equality

题目链接:E - Prefix Equality (atcoder.jp)题意:给两个序列a,b,每次询问给出 i 和 j,问(a1,a2.....ai)和(b1,b2.....bj)中出现过的元素是否相同。由于询问量很大,所以要预处理,把每次询问时间复杂度降到O(1);思路:哈希。把出现序列中出现过的数赋一个2^64的随机数,然后一个集合的哈希值就是把这集合里元素被赋予的随机数的和。#include<bits/stdc++.h>using namespace std;ty

2022-05-11 23:31:35 62

原创 分解质因数

1、 对 n 进行分解质因数,应先找到一个最小的质数 k,k 的值应该从 2 开始,然后按下述 步骤完成:2、 如果这个质数恰等于 n,说明分解质因数的过程已经结束,打印出即可。3、 如果 n > k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商,作为新的正整 数 n,重复执行第一步。  如果 n 不能被 k 整除,则用 k + 1 作为 k 的值,重复执行第一步。#include <iostream>using namespace std;i.

2022-04-08 14:49:35 79

原创 扩展欧几里得(最小正整数解)

题意:两只青蛙在一个循环坐标轴上,朝一个方向同时开始跳,问何时两只青蛙能落在同一个点上。列出方程:(x + m * t) % L = (y + n* t) % L根据同余定义:如果 a-b能被n整除,则a≡b(mod n), 即a%n==b%n,a和b同余n。则上式可写成:(x+m*t)-(y+n*t)==k*L(x-y)+(m-n)*t==k*L(m-n)*t - L*k== y-x到这一步可以比较明显的看出来是一个 ax+by=k*(gcd(a,b)),可...

2022-04-07 17:46:05 196

原创 Kattis - earlyorders (单调栈)

题意:从给定的序列中找出k个数包含1到k,并且字典序较小。解题思路:用单调栈。单调栈中保持单调递增的序列,如果出现某个数大于栈顶的元素,就把该元素加进去,如果出现某个数小于栈顶的元素,判断在序列后面是否还有栈顶元素,如果有的话可以去掉,如果没有的话,该元素直接加进去。#include<iostream>#include<map>#include<stack>using namespace std;const int N=2e5+5;int n...

2022-03-16 23:12:07 65

原创 归并排序求逆序数

AC代码:#include<iostream>using namespace std;const int N=5e4+5;const int INF=0x3f3f3f3f;int a[N],a1[N/2],a2[N/2];inline int read(){ register int s=0,w=1; register char ch=getchar(); while(ch<'0'||ch>'9') { if(ch=='-')w=-1...

2022-03-10 20:39:47 88

原创 合法括号序列

()()() 合法(())合法()( 不合法)()( 不合法())( 不合法lb --> 当前前缀有多少个未匹配的左括号合法条件:lb最后为0;且当lb=0时没有遇到右括号例题:来源:牛客网小沙觉得括号真是一个神奇的东西,以至于他看什么都觉得这东西像一串括号,小沙买来了切糕,他准备将它分成几份拿来吃,但是小沙突然希望把他眼中的括号切糕全部切成合法的括号切糕。请问小沙有多少种切法,不同的切法仅看 切的位置,如果有一个位置切的不同,那么切法就不一样。如果你无论如

2022-03-05 23:13:13 697

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除