- 博客(57)
- 资源 (1)
- 收藏
- 关注

原创 HTML CSS入门级常用知识点归纳总结(结尾实战练习附源码)
大二(经常逃网课????)经过一段时间对html css的学习,我想对其中最常用的知识点及用法进行一些整理,并且对困惑的地方和入门学习踩过的坑进行思考总结首先列出最最基础的常用标签是 <div></div> <p></p> <a></a> <ul><li></li></ul> <...
2020-04-19 18:33:59
2251
2
原创 最长公共子序列
给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式输出一个整数,表示最大长度。数据范围1≤N,M≤1000输入样例:4 5acbdabedc输出样例:3#include<iostream>#include<algorithm>using namesp
2020-09-07 20:37:04
297
原创 等差数列(第十届蓝桥杯省赛C++B组)
数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?输入格式输入的第一行包含一个整数 N。第二行包含 N 个整数 A1,A2,⋅⋅⋅,AN。(注意 A1∼AN 并不一定是按等差数列中的顺序给出)输出格式输出一个整数表示答案。数据范围2≤N≤100000,0≤Ai≤109思路:利用等差数列公式,以及每两个数差值的公共最大公约数 代入即可#include<
2020-08-29 11:39:30
359
原创 括号配对《信息学奥赛一本通》(区间DP)
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=1010;char st[N];int dp[N][N];int main(){ scanf("%s",st); int n=strlen(st); memset(dp,1000000,sizeof dp); .
2020-08-27 21:05:14
274
原创 包子凑数(第八届蓝桥杯省赛C++A/B组)
他发现这家包子铺有 N 种蒸笼,其中第 i 种蒸笼恰好能放 Ai 个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买 X 个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有 X 个包子。比如一共有 3 种蒸笼,分别能放 3、4 和 5 个包子。当顾客想买 11 个包子时,大叔就会选 2 笼 3 个的再加 1 笼 5 个的(也可能选出 1 笼 3 个的再加 2 笼 4 个的)。当然有时包子大叔无论如何也凑不出顾客想买的数量。比如一共有 3 种蒸笼,分别能放 4、5
2020-08-27 17:58:07
221
原创 最大公约数&最小公倍数
已知两数分别为 a b ,请分别求出 最大公约数 最小公倍数a * b=最大公约数 * 最小公倍数#include<iostream>using namespace std;int gcd(int a,int b){ return b? gcd(b,a%b):b;}int main(){ int a,b; cin>>a>>b; int k=gcd(a,b); cout<<k; cout<&l
2020-08-27 17:16:47
97
原创 生命之树(第六届蓝桥杯省赛C++B组)
在X森林里,上帝创建了生命之树。他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值。上帝要在这棵树内选出一个非空节点集 S,使得对于 S 中的任意两个点 a,b,都存在一个点列 {a,v1,v2,…,vk,b} 使得这个点列中的每个点都是 S 里面的元素,且序列中相邻两个点间有一条边相连。在这个前提下,上帝要使得 S 中的点所对应的整数的和尽量大。这个最大的和就是上帝给生命之树的评分。经过 atm 的努力,他已经知道了上帝给每棵树上每个节点上的整数。但是由于 atm
2020-08-27 13:39:16
635
3
原创 图的存储(邻接表)
图一般有两种存储方式邻接矩阵:开一个二维数组,g[i][j] 表示点 i 和点 j 之间边的权值邻接表:邻接表第一种方法利用数组模拟链表 第二种方法利用vector存储下面详细说明邻接表的两种存储方法,全部以下图二叉树为模板数组模拟链表:开三个一维数组和一个初始值为0的变量 e[i] ne[j] h[k] idx=0;具体关系:若顶点为 k 则与其相连的另一顶点为 e[h[k]],那么想要以e[h[k]]为顶点继续向下找相邻的顶点,需判断ne[h[k]]是否为-1 若为-1 则不存在相邻点,若存
2020-08-27 11:25:19
429
原创 密码脱落(第七届蓝桥杯省赛C++A组)
X星球的考古学家发现了一批古代留下来的密码。这些密码是由A、B、C、D 四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。输入格式共一行,包含一个由大写字母ABCD构成的字符串,表示现在看到的密码串。输出格式输出一个整数,表示至少脱落了多少个种子。数据范围输入字符串长度不超过
2020-08-25 14:58:24
207
原创 糖果《信息学奥赛一本通》
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;int st[110];int dp[110][110];int main(){ int m,n; cin>>m>>n; for(int i=1;i<=m;i++) cin>>st[i.
2020-08-25 12:30:32
239
原创 鸣人的影分身《信息学奥赛一本通》
#include<iostream>#include<cstring>#include<cstdio>using namespace std;int dp[15][25];int main(){ int t; cin>>t; while(t--) { int m,n; cin>>m>>n; memset(dp,0,sizeof dp); ..
2020-08-23 13:04:09
200
原创 蓝桥杯-历届试题-乘积最大
给定 N 个整数 A1,A2,…AN。请你从中选出 K 个数,使其乘积最大。请你求出最大的乘积,由于乘积可能超出整型范围,你只需输出乘积除以 1000000009 的余数。注意,如果 X<0, 我们定义 X 除以 1000000009 的余数是负(−X)除以 1000000009 的余数,即:0−((0−x)%1000000009)输入格式第一行包含两个整数 N 和 K。以下 N 行每行一个整数 Ai。输出格式输出一个整数,表示答案。数据范围1≤K≤N≤105,−105≤Ai≤1
2020-08-18 16:44:56
602
原创 糖果传递《算法竞赛进阶指南》
有n个小朋友坐成一圈,每人有a[i]个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。输入格式第一行输入一个正整数n,表示小朋友的个数。接下来n行,每行一个整数a[i],表示第i个小朋友初始得到的糖果的颗数。输出格式输出一个整数,表示最小代价。数据范围1≤n≤1000000数据保证一定有解。我们根据输入输出样例数据,进行推导代码就比较简单了,推导过程比较难#include<iostream>#include<
2020-08-16 13:59:28
195
原创 蓝桥杯-历届试题-大臣的旅费(树形DP原理证明)
很久以前,T王国空前繁荣为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重复经过大城市,从首都到达每个大城市的方案都是唯一的。J是T国重要大臣,他巡查于各大城市之间,体察民情。所以,从一个城市马不停蹄地到另一个城市成了J最常做的事情。他有一个钱袋,用于存放往来城市间的路费。聪明的J发现,如果不在某个城市停下来修整,在连续行进过程中,他所
2020-08-15 10:18:19
218
原创 c++ _vector操作总结
文章目录1. vector:1.1 vector 说明1.2 vector初始化:1.3 vector对象的常用内置函数使用(举例说明)2. 顺序访问vector的几种方式,举例说明2.1. 对向量a添加元素的几种方式2.2 从向量中读取元素3.几个常用的算法1. vector:1.1 vector 说明vector是向量类型,可以容纳许多类型的数据,因此也被称为容器(可以理解为动态数组,是封装好了的类)进行vector操作前应添加头文件#include <vector>1.2 v
2020-08-14 22:37:34
197
原创 全球变暖(第九届蓝桥杯省赛C++A/B组 Flood Fill算法)
你有一张某海域 N×N 像素的照片,”.”表示海洋、”#”表示陆地,如下所示:其中”上下左右”四个方向上连在一起的一片陆地组成一座岛屿,例如上图就有 2 座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。输入格式第一行包含一个整数N。以下 N 行 N 列,包含一个由字符”
2020-08-14 15:11:37
232
原创 地牢大师《信息学奥赛一本通》(深度优先搜索三维字符数组)
你现在被困在一个三维地牢中,需要找到最快脱离的出路!地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。向北,向南,向东,向西,向上或向下移动一个单元距离均需要一分钟。你不能沿对角线移动,迷宫边界都是坚硬的岩石,你不能走出边界范围。请问,你有可能逃脱吗?如果可以,需要多长时间?输入格式输入包含多组测试数据。每组数据第一行包含三个整数 L,R,C 分别表示地牢层数,以及每一层地牢的行数和列数。接下来是 L 个 R 行 C 列的字符矩阵,用来表示每一层地牢的
2020-08-13 21:06:49
238
原创 完全二叉树的权值(第十届蓝桥杯省赛C++A/B组)
给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从上到下、从左到右的顺序依次是 A1,A2,⋅⋅⋅AN,如下图所示:现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。输入格式第一行包含一个整数 N。第二行包含 N 个整数 A1,A2,⋅⋅⋅AN。输出格式输出一个整数代表答案。数据范围1≤N≤105,−105≤Ai≤105#include<iostream&g
2020-08-13 12:57:06
246
原创 交换瓶子(第七届蓝桥杯省赛C++B组 图论 环 置换群)
有 N 个瓶子,编号 1∼N,放在架子上。比如有 5 个瓶子:2 1 3 5 4要求每次拿起 2 个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换 2 次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式第一行包含一个整数 N,表示瓶子数量。第二行包含 N 个整数,表示瓶子目前的排列状况。输出格式输出一个正整数,表示至少交换多少次,才能完成排序。数据范围1≤N≤10000思路:此题利用到了环的相关概念,下
2020-08-13 10:51:38
381
原创 红与黑《信息学奥赛一本通》(广度优先搜索)
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入格式输入包括多个数据集合。每个数据集合的第一行是两个整数 W 和 H,分别表示 x 方向和 y 方向瓷砖的数量。在接下来的 H 行中,每行包括 W 个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:白色的瓷砖;3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合
2020-08-12 16:57:13
204
原创 c++基础:queue队列总结(利用队列实现bfs)
c++队列头文件 #include<queue>常用方法函数1 push2 pop3 size4 empty5 front back1 psuh 在队列尾部插入元素,根据元素形式不同举三个常用例子#include<iostream>#include<cstring>#include<cstdio>#include<queue>using namespace std;int main(){ queue<str
2020-08-12 12:53:22
1023
原创 日志统计(第九届蓝桥杯省赛C++B组)
小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N 行。其中每一行的格式是:ts id表示在 ts 时刻编号 id 的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是”热帖”。具体来说,如果存在某个时刻 T 满足该帖在 [T,T+D) 这段时间内(注意是左闭右开区间)收到不少于 K 个赞,该帖就曾是”热帖”。给定日志,请你帮助小明统计出所有曾是”热帖”的帖子编号。输入格式
2020-08-11 14:12:31
217
原创 外卖店优先级(第十届蓝桥杯省赛C++A组 暴力做法)
#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int N=1e5+10;struct SUM{ int times,num; bool operator <(const SUM &t)const { if(times!=t.times)retur..
2020-08-10 14:42:17
462
1
原创 航班时间(第九届蓝桥杯省赛C++A组)
小 h 前往美国参加了蓝桥杯国际赛。小 h 的女朋友发现小 h 上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”。小 h 对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有 12 小时时差,故飞机总共需要 14 小时的飞行时间。不久后小 h 的女朋友去中东交换小 h 并不知道中东与北京的时差。但是小 h 得到了女朋友来回航班的起降时间。小 h 想知道女朋友的航班飞行时间是多少。对于一个可能跨时区的航班,给定来回程的起
2020-08-10 12:38:09
570
原创 日期问题(第八届蓝桥杯省赛C++B组)
思路:一种是从19600101 依次1枚举到 20590101,相对简单一些,另一种是直接对输入数据处理,并且需要注意很多边缘细节,例如02/02/02 特殊数据#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a,b,c;string k;int leap_year[13]={0,31,29,31,30,.
2020-08-07 15:03:03
298
原创 移动距离(第六届蓝桥杯省赛C++B组)
#include<iostream>#include<cmath>using namespace std;int main(){ int w,m,n,y1,y2; cin>>w>>m>>n; int x1=m/w+1; int x2=n/w+1; if(m%w==0) { x1=m/w; } if(n%w==0) { x2=n.
2020-08-05 17:36:39
359
原创 回文日期(NOIP2016普及组)
思路:枚举所有八位数,分别判断是否为 合法日期 回文#include<iostream>using namespace std;int month_run[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};int month_frun[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};bool check_data(int x){ int data=x%10000; int day=data.
2020-08-05 13:26:16
324
原创 错误票据(第四届蓝桥杯省赛C++A/B组)
错误票据这道题,本身题意非常简单,但值得我们学习的是这道题的输入方式,针对这道题的输入方式我记录了两种方法输入数据仅仅已知行数,每行数据个数却是不固定的。方法一:利用 getchar() 检测换行符号 方法比较简单#include <iostream>#include<cstdio>#include<cstring>#include <string>#include<algorithm>using namespace std;i
2020-08-05 12:42:09
311
原创 特别数的和(第十届蓝桥杯省赛C++B组)
#include<iostream>using namespace std;bool check(int x){ while(x!=0) { int t=x%10; x=x/10; if(t==2||t==0||t==1||t==9) { return true; } } return false;}int main(){ int n; .
2020-08-04 14:03:08
268
原创 数据范围&时间复杂度
一般ACM或者算法笔试题的时间限制为 1秒 或者 2秒 因此 c++ 代码控制在 10⁷ 为最佳1:n<=30 dfs+剪枝 状态压缩dp2:n≤100 floyd,dp3:n≤1000 dp,二分,朴素版Dijkstra、朴素版Prim、Bellman-Ford4:n≤10000 块状链表、分块、莫队5:n≤100000 各种sort,线段树、树状数组、set/map、heap、dijkstra+heap、prim+heap、spfa、求凸包、求半平面交、二分6:n≤1000000
2020-08-04 11:31:42
619
原创 递增三元组(第九届蓝桥杯省赛C++B组)
思路:对A B C 先进行sort排序,循环B 利用二分思想 分别找出A中 B中 满足题意的个数即可,这里补充一下c++封装好的二分函数 C++ lower_bound 与 upper_bound 函数#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;const int N=1e5+10;int st1[N],st2.
2020-08-04 11:11:42
497
原创 连号区间(第四届蓝桥杯省赛C++B组)
思路:根据题目n的范围,我们需要将时间复杂度控制在 nlogn 以内,利用枚举可解决 [L,R]中 最大最小两数的差若==序列长度-1 即可满足题意#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N=1e4+10;int st[N];int main(){ int n; cin>>n; for(int i=
2020-08-02 12:07:19
151
原创 地宫取宝(第五届蓝桥杯省赛C++A/B组 动态规划 线性规划)
做地宫取宝这道题可以先看一看我的博客 摘花生 这道题,题目是在这基础上增加了难度中心思路:dp[i][j][k][v] i j 代表此时的位置 k 代表此位置 宝物的数量 v 代表当前口袋里 最大宝物的价值#include<iostream>#include<algorithm>using namespace std;int st[60][60];long long int dp[55][55][15][15];int n,m,k;int mod=10000000
2020-07-30 18:18:02
282
原创 最长上升子序列(动态规划 线性规划)
思路:一共两层循环,第一层循环 i 从第二个位置循环到最后一个位置,那么i的含义代表以 i 为最后一个数的最长上升子序列的最优解,第二层循环 j 从第一个位置循环到 j<i 的位置,那么 j 的含义代表 以i 为结尾 以j 为倒数第二个数的最长上升子序列的 最优解,那么显而易见 第j个数字一定要小于第i个数字满足上升子序列,推导公式如下:dp[i]=max(dp[i],dp[j]+1);#include<iostream>#include<algorithm>#incl
2020-07-30 14:06:05
207
原创 摘花生(深度搜索 线性规划)
摘花生这道题我写了两种方法,一种超时的深度优先搜索,另一种是不超时的线性规划深度优先搜索(超时,当作练习)#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;int dp[110][110];bool book[110][110];int xs[2]={1,0},ys[2]={0,1};int n,m;int
2020-07-30 13:41:12
181
原创 背包问题汇总
背包问题背包问题一直是动态规划算法中的经典系列,下面我将常见的所有背包问题进行总结分析0 1背包问题:关键理解背包的推到公式:fn[i][j]代表在此时此刻拥有j体积下前i个物品中最优的选择价值为多少,那么具体的决策是 如果体积不够装当前的物品,那么f[i][j]=f[i-1][j],如果体积可以装下当前的物品,那么我们判断是不装入得到最优价值还是装入得到最优的价值 f[i][j]=max(f[i-1][j],f[i-1][j-v[i]]]+w[i]);根据题目给出的输入样例,我们画表格手动推到一下
2020-07-30 09:43:15
2753
1
原创 激光炸弹(《算法竞赛进阶指南》, HNOI2003)
思路:这道题有点难度,利用二维矩阵的前缀和思想进行解题,并需要推导出其中炸弹最优的炸毁方式#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int N=5010;int maps[N][N];int n,R;int main(){ cin>>n>>R; in.
2020-07-25 13:45:16
151
原创 分巧克力(第八届蓝桥杯省赛C++A/B组)
思路:第一步是确定数据的存储以及如何对数据排序,第二步确定解题的方法为二分查找,第三步确定二分的左右边界,第四步编写给出确定的边长求出总的分得块数即可ac题目
2020-07-25 12:48:01
202
原创 四平方和(第七届蓝桥杯省赛C++A/B组)
思路:利用空间换取时间的思想,首先用结构体存储两个数以及这两个数的平方和,其次两层for循环并且利用二分的思想搜索结构体是否存在这样的数字t t=n-ii-jj#include<iostream>#include<cmath>#include<algorithm>using namespace std;const int N=5300000;int m;struct Sum{ int s,c,d; bool operator< (c.
2020-07-24 11:36:31
239
原创 机器人跳跃问题(今日头条2019,笔试题)
思路:我们从数据范围和题意可以分析出是一道二分查找的题目,那么确定 left 和 right 是这解决道题的关键,我们简单推到可得,不论当前 E 是否大于下一个建筑的 H,跳跃到下一个建筑的能量变化是相等的 例如当前在第 i 个建筑能量为 E 那么在第 i+1 个建筑的能量为 2*E-H(i+1)left:假设开始能量为E 一共有三个建筑 那么满足等式 [( 2E-H(0) ) - H(1)] -H(2) > 0right: 如果初始能量大于 建筑H 最大值 就一定能满足题意的跳跃到终点 rig.
2020-07-23 17:09:50
197
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人