自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 区间DP-

思想:把一个区间分成两个区间,然后从两个子区间中来计算出当前区间的信息void DP(){ for(int len=1;len<=n;len++)//枚举区间长度 { for(int l=1;i+len-1<=n;i++)//枚举区间左端点 { r=l+len-1;//计算出区间右端点 dp[l][r]= //根据题意初始化 for(int k=l;k<=r;k++)//枚举当前区间的划分点 dp[l][r]=(dp[l][k],dp[k+1

2022-01-22 11:19:16 277

原创 数论问题模板

1.欧几里得算法求两个正整数的最大公约数,时间复杂度 O(logn)。int gcd(int a, int b){ return b ? gcd(b, a % b) : a;}2. 扩展欧几里得算法裴蜀定理:若 a,b 是整数,且 gcd(a,b)=d,那么对于任意的整数 x,y,ax+by 都一定是 d 的倍数,特别地,一定存在整数 x,y,使 ax+by=d 成立。扩展欧几里得算法可以在 O(logn)的时间复杂度内求出系数 x,y。int exgcd(int a, int b

2022-01-20 10:15:52 93

原创 滑动窗口——双指针

USACO 2014 March Contest Bronze题目:这是一个炎热的夏日。懒洋洋的奶牛贝茜想将自己放置在田野中的某个位置,以便可以在短距离内尽可能多地吃到美味的草。贝茜所在的田野中共有 N 片草地,我们可以将田野视作一个一维数轴。第 i 片草地中包含 gi 单位的青草,位置坐标为 xi。不同草地的位置不同。贝茜想选取田野中的某个点作为她的初始位置(可能是某片草地所在的点)。只有一片草地与她的初始位置的距离不超过 K 时,贝茜才能吃到那片草地上的草。如果贝茜选择最佳初始位置,请

2022-01-19 12:00:06 561

转载 树链剖分---详解

更好的阅读体验点击跳转更更好的阅读体验点击跳转导言你会DFS序吗?我想,你肯定会说会.不会,欢迎点击搜索和DFS序学习你会线段树吗?不会,欢迎点击暂无我想,身为巨佬的你肯定会.既然巨佬你会DFS序,会线段树.那么接下来的树链剖分,你也一定会.接下来的学习,您必备的算法知识有,DFS序,线段树.您可以选修的知识点有树上差分,最近公共祖先初学算法适用范围将树从x到y结点最短路径上所有节点的值都加上z我们很容易发现,这个算法就是树上差分算法.求树从x到y结点最短路径上所有节点的

2022-01-19 11:34:57 172

原创 倍增求LCA

求LCA的过程:两个节点平层同时往上跳,直到相遇,相遇的点就是他们的LCA。但是很明显,如果这棵树的深度较大,那么就要跳很久了,所以可以采用倍增优化设 F[x, k] 表示 x 的 第 2k 个祖先,即 x 节点向根节点走 2k 步到达的节点。f[x, 0] 就是 x 节点第一个祖先(也即父节点)。若该节点不存在(跳到了根节点外),我们则令 f[x, k] = 0因为从x走2^k步, 可以分为先走2(k-1)步,再走2(k-1)步得出F[x,k]的递推方程∀k∈[1,logn],F[x,k]

2022-01-19 11:06:01 591

原创 RMQ——区间最值

概念:RMQ指的是Range Minimum/Maximum Query 即为区间最值问题。优点:此问题放眼看去似乎是一个比较简单的问题,我们可以直接朴素算法走一遍区间,找到最值即可,但是这样的话时间复杂度为O(n2)如果题目中所给的有多个询问,这时候我们如果还坚持朴素算法的话,必然会超时。这时候RMQ算法的优势就体现出来了初始化需要的时间复杂度接近O(nlogn),但是查询的时间复杂度为O(1)递推:(1)思想:要从小区间递推到大区间,我们这里采用了分割的方式,也就是先找 [a,a+2^0

2022-01-19 10:26:15 486

原创 数位dp圆形数字

数位dp

2021-09-17 12:26:59 122

原创 最大约数.

一个正整数 x 被称为一个可爱数当且仅当不存在任何正整数 a>1 满足 a2 是 x 的约数。给定一个正整数 n,请计算并输出 n 的所有约数中,属于可爱数的最大约数。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据占一行,包含一个整数 n。输出格式每组数据输出一行结果。数据范围1≤T≤10,1≤n≤1012输入样例:21012输出样例:106思路:任何一个大于1的自然数n,都可以唯一分解成有限个质数的乘积,如果一个数存在平方数约数,那么这个数的质因数分

2021-08-24 21:17:04 299

原创 交换相邻元素-----(思维)

交换相邻元素给定一个长度为 n 的数组 a1,a2,…,an。该数组是一个 1∼n 的排列。数组的前 n−1 个位置中,部分位置可以进行交换操作,将该位置的元素与后面相邻位置的元素进行互换。交换操作的次序和次数均不限。请你判断给定的数组能否通过交换操作变为一个升序数组。输入格式第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,an。第三行包含一个长度为 n−1 的 01 字符串,第 i 个字符为 1 表示第 i 个位置可以进行交换操作,第 i 个字符为 0 表示第 i 个位置无法

2021-08-20 16:39:13 615

原创 KMP算法

KMP算法通常用来判断一个字符串是否是另一个的字串核心思想:在每次失配时,不是把字符串往后移一位,而是把p串往后移动至下一次可以和前面部分匹配的位置,这样就可以跳过大多数的失配步骤。而每次p串移动的步数就是通过查找next[ ]数组确定的。模板#include<iostream>using namespace std;const int N=10010;char a[N],b[N];//a为匹配串,b为模板串int n,m;int next[N];//存在[1,i]位置,最大前缀

2021-08-15 21:48:37 81 1

原创 STR容器用法

vector定义与初始化:vector v;//默认初始化vector v(v1);//用v1初始化vvectorv(v1.begin(),v1.end());//用v1初始化vvector v(10);//定义一个大小为10的数组!vector v(10,1)//定义个全为1而且长度为10的数组方法:a.front(),a.rbegin() //首元素a.back(),a.rend() //末尾元素v.push_back() //增v.insert() //由于

2021-08-15 21:18:08 153

原创 邻接表存图

数组模拟邻接表存图无向图和有向图区别就是,把一条边 (u, v, w) 看成 (u, v, w) 和 (v, u, w) 两条边调用 add 加入邻接表即可。要记得将 head 数组初始化为 -1。同时,在访问 x 出发的所有边的时候,终止条件是 i != -1,进一步 i != -1 可以简写为 ~i。e[ x ]表示第x条边的终点ne[ y ]表示以y为起点,当前边的前一条边的标号(也是以y为起点的)h[ z ]表示以z为起点有多少条边int h[N], e[M], l[M], ne[M],

2021-08-15 20:33:49 181

原创 欧拉图的路径输出

My little sister had a beautiful necklace made of colorful beads. Two successive beads in the necklaceshared a common color at their meeting point. The figure below shows a segment of the necklace:But, alas! One day, the necklace was torn and the beads w

2021-08-09 08:21:35 117

原创 二进制优化

本题链接DividingMarsha and Bill own a collection of marbles. They want to split the collection among themselves so that both receive an equal share of the marbles. This would be easy if all the marbles had the same value, because then they could just split t

2021-08-01 16:10:09 710

原创 并查集的删除操作

Almost Union-Find题目接口I hope you know the beautiful Union-Find structure. In this problem, you’re to implement somethingsimilar, but not identical.The data structure you need to write is also a collection of disjoint sets, supporting 3 operations:1 p q

2021-08-01 14:42:37 251

原创 食物链-------带权并查集

## lindi530的“C回忆”(2)

2021-08-01 13:38:03 91

原创 不要62-----数位dp

不要62-----数位dp杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。不吉利的数字为所有含有4或62的号码。例如:62315 73418 88914都属于不吉利号码。但是,61152虽然含有6和2,但不是62连号,所以不属于不吉利数字之列。你的任务是,对于每次给出的一个牌照区间号,推断出交管局今次又要实际上给多少辆新的士车上

2021-07-31 21:45:21 95

原创 二分-----思想

二分思想思想:把整个区间划分为满足性质,和不满足两部分。整个区间左端点边界l,右端点r,中点mid,判断mid的性质,从而判断答案在那个区间内,直到区间的长度为11.分为[l,mid],[mid+1,r]两区间**void erfen(int l,int r){ while(r>l) { int mid=l+r>>1; 相当于(l+r)/2 if(check(mid))r=mid; **如果mid对应的值满足所要判断的条件,说明答案在【l,mid】区间内** e

2021-07-16 09:17:43 74

原创 第k个字符串-------(思想)

第k个字符串题目:给定两个整数 n 和 k。用 n−2 个 a 和 2 个 b 来构成一个字符串,则一共可以构成 n(n−1)/2个不同的字符串。将这 n(n−1)/2 个字符串按照字典序进行排序。请输出排好序后,排在第 k 个的字符串。例如,当 n=5,k=2 时,共可以生成 10 个不同的字符串,按字典序排列如下:aaabbaababaabbaabaabababaabbaabaaabbaabababaabbaaa其中,排在第 2 个的字符串为 aabab。输入格式第

2021-07-13 16:44:42 178

原创 最优包含

最优包含题目:我们称一个字符串 S 包含字符串 T 是指 T 是 S 的一个子序列,即可以从字符串 S 中抽出若干个字符,它们按原来的顺序组合成一个新的字符串与 T 完全一样。给定两个字符串 S 和 T,请问最少修改 S 中的多少个字符,能使 S 包含 T?输入格式输入两行,每行一个字符串。第一行的字符串为 S,第二行的字符串为 T。两个字符串均非空而且只包含大写英文字母。输出格式输出一个整数,表示答案。数据范围1≤|T|≤|S|≤1000输入样例:ABCDEABCDXAABZ输

2021-06-04 09:01:05 635

原创 路径计数

问题描述从一个 5 x 5 的方格矩阵的左上角出发,沿着方格的边走,满足以下条件的路线有多少种?总长度不超过 12;最后回到左上角;路线不自交;不走出 5 x 5 的方格矩阵范围之外。如下图所示,ABC 是三种合法的路线。注意 B 和 C 由于方向不同,所以视为不同的路线。答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。答案:206坑:五乘五的方格,走的却是边,所以走的路径的大小为6*6;从(0,0

2021-06-04 08:16:36 182

原创 求值

答案:45360定理:一个数的因字数等于它的各个素因子的个数+1的乘积#include"bits/stdc++.h"using namespace std;int book[1111],su[1111],c;int ppp(int a){ int ans=1; for(int i=0;i<c;i++){ if(a<su[i])break; if(a%su[i]==0){ int b=0; while(a%su[i]==0){ b++; a/=.

2021-06-03 22:00:28 57

原创 质数拆分

答案:55965365465060dp[i][j]:在第i个素数时,选择的素数和为j的方法数#include"bits/stdc++.h"using namespace std;long long su[500],book[2100],c,dp[3000][3100];//dp存的方案数很大,不开long long运行查出来是错的long long bfs(int a,int b){ if(dp[a][b]!=-1)return dp[a][b]; if(b==2019)return 1; .

2021-06-03 21:38:32 156

原创 皮亚诺曲线距离

皮亚诺曲线距离题目描述皮亚诺曲线是一条平面内的曲线。下图给出了皮亚诺曲线的 11 阶情形,它是从左下角出发,经过一个 3 × 3 的方格中的每一个格子,最终到达右上角的一条曲线。下图给出了皮亚诺曲线的 2 阶情形,它是经过一个 3^2 × 3^2 的方格中的每一个格子的一条曲线。它是将 1 阶曲线的每个方格由 1 阶曲线替换而成。下图给出了皮亚诺曲线的 3 阶情形,它是经过一个 3^3 × 3^3 的方格中的每一个格子的一条曲线。它是将 2 阶曲线的每个方格由 1 阶曲线替换而成。皮亚诺曲

2021-06-03 21:02:53 1623

原创 2020第十一届蓝桥杯国赛

B题 扩散D题 本质上升序列

2021-06-03 16:44:53 286

原创 第四题 本质上升序列

本质上升序列本题总分:10 分【问题描述】小蓝特别喜欢单调递增的事物。在一个字符串中,如果取出若干个字符,将这些字符按照在字符串中的顺序排列后是单调递增的,则成为这个字符串中的一个单调递增子序列。例如,在字符串 lanqiao 中,如果取出字符 n 和 q,则 nq 组成一个单调递增子序列。类似的单调递增子序列还有 lnq、i、ano 等等。小蓝发现,有些子序列虽然位置不同,但是字符序列是一样的,例如取第二个字符和最后一个字符可以取到 ao,取最后两个字符也可以取到 ao。小蓝认为他们并没有本质

2021-06-03 16:32:28 162

原创 第二题 扩散

2020年第十一届蓝桥杯国赛第二题 扩散本题总分:5 分【问题描述】小蓝在一张无限大的特殊画布上作画。这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。只有这几个格子上有黑色,其它位置都是白色的。每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是

2021-06-03 07:54:31 203

原创 lindi530的“C回忆“(2)———fire(细节问题)

Joe works in a maze. Unfortunately, portions of the maze havecaught on fire, and the owner of the maze neglected to create a fireescape plan. Help Joe escape the maze.Given Joe’s location in the maze and which squares of the mazeare on fire, you must d

2021-05-05 20:39:18 148

转载 lindi530的“C进阶”(1)———平面分割

【直线分平面问题】 问题:n条直线,最多可以把平面分为多少个区域。 解:当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线段。而每条射线和线段将以有的区域一分为二。这样就多出了2+(n-2)个区域。 如图:第四条红色的线与其他3条线生成了3个交点,生成了两条...

2021-05-05 19:08:48 91

原创 lindi530的“C回忆”(1)———最短路简单而又易错点

## lindi530的“C回忆”(1)- List item 1~~最短路的简单而又易错点例题:某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。Input本题目包含多组数据,请处理到文件结束。每组数据第一行包含两个正整数N和M(0<N<200,0<M<10

2021-05-04 23:10:53 1075 3

空空如也

空空如也

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

TA关注的人

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