- 博客(44)
- 收藏
- 关注
原创 c++ 空间向量类(Vector3D)的实现
该类可用于描述3D向量和点在空间中的位置。可以使用该类保存与计算 3D 位置和方向。 此外,它还包含用于执行常见向量操作的函数。头文件:#pragma once#include <cmath>#include <iostream>using namespace std;const double PI = 3.14159265358979323846;//转角度double Deg(double rad) { return rad * 180.0 / PI; }//
2021-08-11 13:13:56 8512 4
原创 c++ 矩阵运算 Matrix(矩阵)类的粗略实现
矩阵运算在计算机图形和视觉中用着十分广泛的应用,成熟的第三方库有很多比如:Eigen、opencv、ViennaCL等。头文件#pragma once#include <cmath>#include <assert.h>//如果方程无解或矩阵没有逆或运算不符合数学逻辑 报错using namespace std;#define ERROR 1e-12#define ESP(val) (fabs(val) <= ERROR) ? 0.0 : val //过于小的数字
2021-08-07 18:58:58 4048 1
原创 c++ 2D小球 碰撞模拟
一个简单的2D小球碰撞模拟程序,代码不长主程序90多行。全部用c++实现,借助easyx绘图,同时实现简单向量类便于计算 (默认小球质量相同 大小相同)。#include <iostream>#include <easyx.h>#include <conio.h>#include <algorithm>#include <vector>#include <cmath>#include <stdlib.h>.
2021-07-30 18:40:24 1982
原创 ac自动机——字符串多模式匹配算法
在学习了Trie树后紧接着要学习的就是ac自动机了,很多人说ac自动机 = KMP算法 + Trie树,或者说是树上的KMP算法,我觉得的ac自动机理解起来要比KMP简单一些。只是脑子里想应该是很难理解的,多画画图就会理解ac自动机的匹配模式和过程。我参考的是下面两个博客很详细:https://www.cnblogs.com/cmmdc/p/7337611.htmlhttps://www.cnblogs.com/hyfhaha/p/10802604.html模板题用来验证代码的正确性:https:/
2021-07-20 12:20:03 247
原创 数据结构:Tire树--高效的字符串匹配结构
Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。给定如下单词:abc、abd、cbd、ccce、bcda、cccTire树的结构大致如下:那它是如何构造的呢? 首先从根节点开始我们要存放单词abc,判断根节点是否有存放着字母 a 的子节点,如果没有就增加一个节点将a存进去;接着在 a 节点判断 .
2021-07-15 13:44:57 396 4
原创 大数运算
大数加法与减法考虑数字正负情况较多,应考虑周全加减法主要就是模拟竖式运算的过程进行进位和退位。#include<iostream>#include<algorithm>#include<string>#include<cstring>#include<limits.h>#include<time.h>using namespace std;typedef long long ll;inline int toIn
2021-05-18 21:35:33 95
原创 扩展欧几里得、二元一次方程整数解、乘法逆元
扩展欧几里得求二元一次方程的整数解扩展欧几里得是欧几里得的进化版本,一般通过它我们可以求出如下方程的解:ax + by = gcd(a, b)接下来说的解都指的是整数范围内的解。如果我们要求得上述方程的解该如何求解呢?从代码的角度来说求解是通过递归来实现求解的。扩展欧几里得在求解两个数的最大公约数的同时可以由下而上的求得方程的解。代码如下:ll ex_gcd(ll a,ll b,ll &x,ll &y) { if (b == 0) { x = 1; y = 0
2021-05-14 20:16:22 960 3
原创 字符串匹配:kmp算法和SunDay算法
KMP:#include<iostream>#include<string>#include<cstring>using namespace std;const int maxn = 1e5 + 7;int prefix[maxn];//存放的是下标i之前的字符串中前缀和后缀的最长相同子串/*前缀:一个字符串不包含最后一个字符其他的所有子串后缀:不包含第一个字符其他所有子串如:ababa前缀:a,ab,aba,abab后缀:a,ba,aba,bab
2021-05-08 12:34:03 139
原创 L3-1 森森旅游 (只拿了24 分)
首先这道题分没有拿满,但方向或许找对了?L3-1 森森旅游 (30 分)好久没出去旅游啦!森森决定去 Z 省旅游一下。Z 省有 n 座城市(从 1 到 n 编号)以及 m 条连接两座城市的有向旅行线路(例如自驾、长途汽车、火车、飞机、轮船等),每次经过一条旅行线路时都需要支付该线路的费用(但这个收费标准可能不止一种,例如车票跟机票一般不是一个价格)。Z 省为了鼓励大家在省内多逛逛,推出了旅游金计划:在 i 号城市可以用 1 元现金兑换 ai 元旅游金(只要现金足够,可以无限次兑换)。城市间
2021-05-03 15:19:52 1110
原创 L2-3 清点代码库 (25 分)
L2-3 清点代码库 (25 分)上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块如果接受同样的输入,总是给出同样的输出,则它们就是功能重复的;其次我们把每个模块的输出都简化为一个整数(在 int 范围内)。于是我们可以设计一系列输入,检查所有功能模块的对应输出,从而查出功能重复的代码。你的任务就
2021-05-03 14:59:48 309
原创 Dijkstra堆优化(链式前向星存图)
失踪人口回归系列实在太懒了一直拖拖拖…了解Dijkstra的都知道一般的Dijkstra通过不断寻找已遍历的点集合可以到达的最短边来求单元最短路径,如果能优化寻找最短边的过程那么就可以实现优化了。优先队列就是一个不错的选择,而优先队列的原理就是堆排序。下面是模板代码:#include<iostream>#include<queue>using namespace std;#define INF 0x3f3f3f3fconst int maxn = 1e3 + .
2021-05-03 14:41:02 216
原创 P3379 【模板】最近公共祖先(LCA)【 在线算法(树上倍增)、离线算法(tarjan)】
P3379 【模板】最近公共祖先(LCA)https://www.luogu.com.cn/problem/P3379题目描述如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。输入格式第一行包含三个正整数 N,M,S分别表示树的结点个数、询问的个数和树根结点的序号。接下来 N−1 行每行包含两个正整数 x,y,表示 x结点和 y 结点之间有一条直接连接的边(数据保证可以构成树)。接下来 M 行每行包含两个正整数 a,b,表示询问 a 结点和 b 结点的最近公共祖先。输出格式输
2021-04-16 20:02:24 151
原创 红黑树学习笔记~~(完整源码+注释)
本来想着自己依托红黑树写一个set容器呢,但是发现懂得还是太少了写不出来啊,就先把红黑树贴出来吧留个纪念~其实红黑树最重要的还是它的5条性质,其中性质4和性质5又尤其重要。代码中的插入和删除大多就是对性质4和5的修正。旋转的话没什么说的和平衡二叉树的左右旋类似。卡壳了就借鉴借鉴网上的伪代码和详解,红黑树虽然复杂但花点时间总能写出来。写的时候切记要冷静!!!!当然代码只适合给我自己看~代码可能并不完善欢迎指出~建议参考的文章1:https://www.jianshu.com/p/31d23e708.
2021-04-14 23:09:51 137
原创 最强对手矩阵(最大子矩阵)蓝桥杯模拟题
链接:https://ac.nowcoder.com/acm/contest/13493/G来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述这一天你来到了蓝桥杯的考场,你发现考场是一个NM的矩阵。因为你的群友很多,你知道考场内每个人有多强,并且把实力换算成了数值。(因为有的人太弱了,所以可能出现实力值是负数的可能)你想知道考场内实力总和最大的矩阵区域的实力和是多少。(注意:区.
2021-04-13 17:50:59 326
原创 P3958 [NOIP2017 提高组] 奶酪
题目链接:https://www.luogu.com.cn/problem/P3958题目描述现有一块大奶酪,它的高度为h,它的长度和宽度我们可以认为是无限大的,奶酪中间有许多半径相同的球形空洞。我们可以在这块奶酪中建立空间坐标系,在坐标系中,奶酪的下表面为z=0,奶酪的上表面为 z=h。现在,奶酪的下表面有一只小老鼠 Jerry,它知道奶酪中所有空洞的球心所在的坐标。如果两个空洞相切或是相交,则 Jerry可以从其中一个空洞跑到另一个空洞,特别地,如果一个空洞与下表面相切或是相交,Jerry
2021-04-04 21:52:46 348
原创 滑动窗口(线段树 / 单调队列)
链接:https://ac.nowcoder.com/acm/problem/50528来源:牛客网题目描述给一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位。你的任务是找出窗体在各个位置时的最大值和最小值。输入描述:第1行:两个整数N和K;第2行:N个整数,表示数组的N个元素(≤2×109);输出描述:第一行为滑动窗口从左向右移动到每个位置时的最小值,每个数之间用一个空格分开;第二行为滑动窗口从左向右移动到每个位置时的最大值,.
2021-04-03 18:13:41 369
原创 M型字符串(字符串hash的简单使用)
链接:https://ac.nowcoder.com/acm/contest/13504/A来源:牛客网题目描述给一个长度为n的字符串(1<=n<=200000),他只包含小写字母找到这个字符串多少个前缀是M形字符串.M形字符串定义如下:他由两个相同的回文串拼接而来,第一个回文串的结尾字符和第二个字符串的开始字符可以重叠,也就是以下都是M形字符串.abccbaabccba(由abccba+abccba组成)abcbaabcba(有abcba+abcba组成)abccbabcc.
2021-03-30 20:12:09 635 1
原创 捡贝壳
捡贝壳时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K,其他语言524288K64bit IO Format: %lld题目描述小明来到一片海滩上,他很喜欢捡贝壳,但他只喜欢质量为x的倍数的贝壳。贝壳被排列成一条直线,下标从1到n编号,小明打算从编号为区间[l,r]\left [l,r \right ][l,r]的贝壳中,捡起所有他喜欢的贝壳。你能帮他计算出他能捡多少贝壳吗。给出一个大小为n(n≤105)n(n\le10^5)n(n≤105)的数组,下标从1到n.
2021-03-27 21:31:57 493 2
原创 Problem H. 小凡与英雄救美
问题 H: Problem H. 小凡与英雄救美时间限制: 1 Sec 内存限制: 256 MB题目描述英雄救美的故事永不过时。在本题中,小凡将扮演英雄勇闯魔王的宫殿,来到公主身边。小凡手上有着宫殿的完整地图,该地图可以看作一个 n × n 的网格图,每个网格即为一个房间,地 图上有 5 类房间:”S”:代表初始时小凡所在的房间。”E”:代表公主所在的房间,由于公主被魔王所囚禁,所以无法移动。”X”:该房间内驻守着第一类怪物,宫殿侍从,该怪物同样不会移动。”P”:该房间内驻守着第...
2021-03-25 22:19:33 315 1
原创 优先队列(priority_queue)的粗略实现
优先队列的实现:原理:优先队列实质上就是一个堆,只要掌握了堆的基础知识实现:大顶堆、小顶堆、递归调整顶堆,实现优先队列不在话下。STL中的优先队列默认大顶堆,也可以通过一定的方法变为小顶堆。我实现的优先队列暂时只能默认大顶堆,当然本来就是为了练习 ’ 堆 ’ 这一数据结构罢了。自己动手实现一些STL中的数据结构往往会有一些不错的收获。头文件模板:#pragma oncetemplate <class T>class MyPriority_Queue {private: T *roo
2021-03-24 22:02:31 180
原创 tokitsukaze and Soldier
tokitsukaze and Soldier链接:https://ac.nowcoder.com/acm/problem/50439时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述在一个游戏中,tokitsukaze需要在n个士兵中选出一些士兵组成一个团去打副本。第i个士兵的战力为v[i],团的战力是团内所有士兵的战力之和。但是这些士兵有特殊的要求:如果选了第i个士兵,这个...
2021-03-24 15:27:14 81
原创 暗号
链接:https://ac.nowcoder.com/acm/contest/12478/B来源:牛客网题目描述小源很快就是破解了小凡的暗号,于是小凡想了一个办法,那就是将暗号进行hashhashhash处理,这下小源就没法识破了。总所周知,hashhashhash算法是会产生冲突的,即两个串的hashhashhash值可能相同。现在给你一个hashhashhash函数,以及相关参数,再给一个字符串sss,小凡想知道所有长度为nnn的串里面,有几个串与sss串的hashhashhash值相同。.
2021-03-21 14:15:56 2297 6
原创 平衡二叉树(AVL树)--笔记
#include<iostream>#include<queue>using namespace std;#define max(a, b) (a > b) ? a : btypedef struct node{ int value; int weight; struct node *left; struct node *right;}BTNode;int getWeight(BTNode *N) { if (N == NULL) return 0; r
2021-03-19 20:50:27 136
原创 D.年终奖金--省赛
D.年终奖金时间限制 : 2.000 sec 内存限制 : 128 MB题目描述***公司承接了N个项目需要年底完成,每个项目有一定的难度系数。由于项目太多了,需要招聘大量的技术人员。要求每个技术人员至少完成K个项目。 考虑到有些项目之间相似性以及项目的难易程度,为了避免某些员工只挑选轻松项目,CEO提出了一个奖励机制,当技术人员完成分配给他的任务后,年终可以得到一笔奖金,其得到的酬金将是C + (Tmax–Tmin)2。其中,Tmax表示所做项目的最大的难度系数,Tmin是难度系数的最小值..
2021-03-18 19:42:30 180 1
原创 山区修路--2018省赛
题目描述SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江、B水之间,方圆数千平方公里,相传上古的神医在此搭架上山采药而得名。景区山峰均在海拔3000米以上,堪称"华中屋脊"。SNJ是以秀绿的亚高山自然风光,多样的动植物种,人与自然和谐共存为主题的森林生态区。SNJ处于中国地势第二阶梯的东部边缘,由大巴山脉东延的余脉组成中高山地貌,区内山体高大,高低不平。 交通十分不便。最近,HB省决定修一条从YC市通往SNJ风景区的高速公路。经过勘测分析,途中需要经过高度分别为H1,H2,……,Hn的N个山区
2021-03-17 22:41:17 140 1
原创 c++ 模板/类(vector容器的粗糙实现)
平时STL用起来十分的方便,但却一直没有深入了解过其中的实现原理,所以今天就粗略的用自己有限的知识实现vector容器的部分功能。首先vector容器的原理并不复杂:动态申请内存和释放内存。之前一直想着动态申请内存要使用realloc(),当空间不足就追加适当的空间,但是具体自己做的时候发现,如果追加空间那么如果后面的空间被占了怎么办呢?毕竟vector空间的地址是一个连续的线性空间,如果直接追加会造成意想不到的情况。所以应该另外开辟新的空间将之前的元素存放进去。不废话了~~~#pragma o.
2021-03-16 16:53:42 123
原创 生命游戏(c++/杂谈)
睡觉前刷视频了解到了生命游戏这个东西,今早起来就花了一些时间将游戏写了出来,代码没有多长思路也很简单,规则就是:(1)当前细胞为死亡状态时,当周围有3个存活细胞时,则迭代后该细胞变成存活状态(模拟繁殖);若原先为生,则保持不变。(2)当前细胞为存活状态时,当周围的邻居细胞低于两个(不包含两个)存活时,该细胞变成死亡状态(模拟生命数量稀少)。(3)当前细胞为存活状态时,当周围有两个或3个存活细胞时,该细胞保持原样。(4)当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态(模拟生命.
2021-03-14 16:23:36 303 2
原创 牛牛要起飞
题目链接:https://ac.nowcoder.com/acm/contest/9854/B思路:动态规划dp[ i ][ j ]表示前 i 个数字和结果为j的情况是否存在。水了#include<iostream>#include<cstring>using namespace std;#define maxn 100005bool dp[maxn][101];int a[maxn], b[maxn];int n, y;int main() { cin
2021-03-12 22:00:08 135
原创 Problem E: E.疫情控制
Problem E: E.疫情控制 Time Limit: 3 Sec Memory Limit: 128 MB 据某省水产部门通报,A市大面积范围水产养殖区爆发ADH氏菌疫情,导致大量鱼苗死亡,养殖户经济损失巨大。必须尽快控制疫情,使水产养殖秩序回归正常。此次ADH氏菌疫情传染范围较大,涉及到 M个地区。要想对某个地区I疫情进行控制,必须先控制住上游地区I-1的疫情,再对该地区监测,管理,施药才能彻底清除传染性,真正做到水体改良,水质改善。不妨设M个地区的编号1,2,…,...
2021-03-11 17:36:25 112 1
原创 k倍区间--蓝桥杯
评测地址:https://www.lanqiao.cn/problems/97/learning/一、问题描述给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。 你能求出数列中总共有多少个K倍区间吗?输入格式 第一行包含两个整数N和K。(1 <= N, K <= 100000) 以下N行每行包含一个整数Ai。(1 <= Ai <= 10
2021-03-07 22:09:01 401 7
原创 方格分割--蓝桥杯
题目描述:6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。输入:无输出:请提交该整数,不要填写任何多余的内容或说明文字。思路:dfs模拟剪纸这个过程。从纸上的坐标中心(3,3)开始沿着图中黑线向四个方向剪纸,每走到一个位置则将它的对称点也做标记,这样保证结束搜索的时候所得到的每种剪法得到的图案都是对称
2021-03-07 12:17:46 266 1
原创 River Crossing-省赛
River CrossingDescriptionAfandi is herding N sheep across the expanses of grassland when he finds himself blocked by a river. A single raft is available for transportation.Afandi knows that he must ride on the raft for all crossings, but adding shee.
2021-03-04 21:15:07 107 1
原创 明码--蓝桥杯
按照每行两个单词输出数字的二进制就行了其中就是负数的二进制转换可能有人不知道以-1为例先求出-1的相反数的二进制:0000 0001->(取反)1111 1110->(加一)1111 1111(即为-1的二进制)。其次就是得到的二进制要多打印几位(八位即可),不然很难看出来内容。其实完全可以用c++库来解决,特别方便记录下来学习学习。#include <iostream>#include <bitset>using namespace std;int ma
2021-03-02 21:49:21 95
原创 灵能传输--蓝桥杯
题目描述题目背景在游戏《星际争霸 II》中,高阶圣堂武士作为星灵的重要 AOE 单位,在 游戏的中后期发挥着重要的作用,其技能"灵能风暴"可以消耗大量的灵能对 一片区域内的敌军造成毁灭性的伤害。经常用于对抗人类的生化部队和虫族的 刺蛇飞龙等低血量单位。问题描述你控制着 n 名高阶圣堂武士,方便起见标为 1,2,··· ,n。每名高阶圣堂武士需要一定的灵能来战斗,每个人有一个灵能值 a i 表示其拥有的灵能的多少(a i非负表示这名高阶圣堂武士比在最佳状态下多余了 a i 点灵能,a i 为.
2021-03-02 16:55:58 1594
原创 蓝桥杯--迷宫
【问题描述】下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方。010000000100001001110000迷宫的入口为左上角,出口为右下角,在迷宫中,只能从一个位置走到这 个它的上、下、左、右四个方向之一。对于上面的迷宫,从入口开始,可以按DRRURRDDDR 的顺序通过迷宫,一共 10 步。其中 D、U、L、R 分别表示向下、向上、向左、向右走。对于下面这个更复杂的迷宫(30 行 50 列),请找出一种通过迷宫的方式, 其使用的步数最少,在步数最.
2021-02-26 13:55:46 119 1
原创 回文日期--蓝桥杯
在线评测地址:https://www.lanqiao.cn/problems/498/learning/题目描述:2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按 “yyyymmdd” 的格式写成一个 8 位数是 20200202,恰好是一个回文数。我们称这样的日期是回文日期。有人表示 20200202 是 “千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202 即 2021 年 12 月 2
2021-02-25 13:21:51 4951 13
原创 平面切分--蓝桥杯
【问题描述】平面上有 N 条直线,其中第 i 条直线是 y = Ai · x + Bi。请计算这些直线将平面分成了几个部分。【输入格式】第一行包含一个整数 N。以下 N 行,每行包含两个整数 Ai, Bi。【输出格式】一个整数代表答案。【样例输入】31 12 23 3【样例输出】6【评测用例规模与约定】对于 50% 的评测用例,1 ≤ N ≤ 4, 10 ≤ Ai, Bi ≤ 10。对于所有评测用例,1 ≤ N ≤ 1000, 100000 ≤ Ai, Bi ≤ 1000.
2021-02-24 21:26:38 2542 1
原创 等差素数列--蓝桥杯
题目描述:2,3,5,7,11,13,…是素数序列。类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?注意:需要提交的是一个整数,不要填写任何多余的内容和说明文字。题目答案:210思路:一道简单的素数筛选问题,这里就.
2021-02-24 20:29:58 300
原创 【蓝桥杯2020】 E题-七段码 枚举+dfs连通图
思路:枚举+dfs判断图是否连通题目描述:小蓝要用七段码数码管来表示一种特殊的文字。上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二极管,分别标记为 a, b, c, d, e, f, g。小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符的表达时,要求所有发光的二极管是连成一片的。例如:b 发光,其他二极管不发光可以用来表达一种字符。例如:c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上一行的方案可以用来表示不同的字符,尽管看上去比较相.
2021-02-21 13:53:55 486
原创 凑平方数--蓝桥杯
凑平方数把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。比如:0, 36, 5948721再比如:10985247361, 25, 63907840, 4, 289, 15376等等…注意,0可以作为独立的数字,但不能作为多位数字的开始。分组时,必须用完所有的数字,不能重复,不能遗漏。如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?看到网上都用的set,这里并没有使用set于是就想着记录一下。思路:根据题意可以看出是一道搜索题。首先我们可以看出
2021-02-20 11:02:29 356
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人