- 博客(75)
- 收藏
- 关注
原创 蓝桥杯回文数字
#include<iostream> using namespace std; int flag=0;//表示是否输出过回文数 int flag1=0;//表示是否输出AABBBBAA int in_arr[8];//存储日期 int month_arr[13]={0,31,30,31,30,31,30,31,31,30,31,30,31};//存储月份 bool run(int n){ return ((n%4==0&&n%100!=0)||n%400==0);
2022-04-06 22:14:04
310
原创 蓝桥杯七段码
/*先产生所有可能的序列,然后判断是否连通*/ /*从0000000-1111111*/ #include<iostream> #include<fstream> using namespace std; int judge(int,int); void dev(int); int map[5][3]={0}; int num[7]={0}; int move[8][2]={ {1,1},{1,-1},{-1,-1},{-1,1},{0,1},{0,-1},{-1,0},{1
2022-04-04 20:48:52
405
原创 小兰爱跑步
/* 小蓝每天跑1千米。 周一或者月初(1日) 要跑2千米。同时是,也是跑2千米。 从2000年1月1日周六(含)到2020年10月1日周四(含)。 小蓝总共跑步多少千米? */ #include<iostream> using namespace std; bool judge(int ); int month[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int main(){ int week=6;//记录星期几 int cnt=0.
2022-04-02 21:08:13
390
原创 完全背包问题
完全背包问题格式回顾题解插一嘴,这里并不一定要一个二维数组来存贮AC代码(滚动数组版) 先来一个奇妙的比喻,完全背包之于0/1背包,就仿佛是apple A15之于A14。 格式 有n个重量和价值分别为wi,vi的物品。从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中价值总和的最大值。在这里,每种物品可以挑选任意多件。 回顾 我们之前在解决0/1背包的时候,采用的是记忆化搜索的方式,把当前的情况存放在一个二维数组中,每当便利到这个新情况的时候,就拿当前新情况的值和之前的最优解进行比较,谁的价值更大就保
2022-02-22 15:49:06
199
原创 最长公共子序列问题——简单版
最长公共子序列什么是子序列思路AC代码字符串从0开始存储 什么是子序列 定义还是要搞清楚的 字符串s1s2···sn的子序列可以是si1si2···sim(这里的i1,i2,im并不一定要规律递增,只要保证是递增即可,例如2,4,6,9,或1,2,3,5皆可)。区分一个概念,字串是需要连续的,子序列只要保证下标递增即可。 思路 不用说,隔着屏幕都能嗅到动态规划的味道。 首先确定转移方程,我们用dp[m][n]这个二维数组存储每一个状态下的最大子序列的长度。 dp[i][j]的定义:字符串s1 ~ si处和字
2022-02-22 15:02:17
564
原创 01背包问题——记忆化搜索的妙用
目录最基本的想法思想引申解决方案 这是一道很经典的01背包问题,是有限背包。 我们可以看到利用记忆化搜索的方法时间是 最基本的想法 #include<iostream> using namespace std; int n,W; const int MAX_SIZE=100; int w[MAX_SIZE+1],v[MAX_SIZE+1]; void solve(); int rec(int,int); int main(){ cin >> n >> W
2022-02-14 23:25:46
662
1
原创 POJ 3253
目录分析采用优先队列解决问题作者的代码模仿哈夫曼编码的方法(作者的思想,但是我写的会超时,可能是因为sort的关系,而且我的变量sum没有申明为long long int 会造成越界)AC截图 分析 可以用的算法,首先想到的是贪心,再想一想可以理解成哈夫曼编码 因为每次砍掉的成本包含着等待被砍掉的长度。所以我们可以试想一下,如果你是伐木工,要想让成本最小
2022-02-13 00:54:38
388
原创 挑战程序设计竞赛——迷宫的最短路径
文章目录题目题解类型内存超限版本测试版采用数组记录次数版类/结构体版本All In Allset判重版Over了,还是练得不够???? 题目 题解 类型 很经典的BFS模板题,最短路径大多数采用BFS解决,但是BFS的缺点是空间复杂度太大,我们必须进行剪枝操作,即标记自己已经走过的点,而且一定要注意,在入队push操作之后就可以标记自己已经走过的点了,否则后面一定会有重复的位置进入队列,从而造成内存超限。 内存超限版本 #include<iostream> #include<queue&
2022-02-10 14:40:30
835
原创 POJ 2386 经典的BFS/DFS
目录题意AC代码 题意 说白了就是检测连通性,题目给出干的地面和湿的地面。 我们编写DFS检测连通性,从W进入,走过的路都标记成.,看看能进行几次DFS,就是最终答案。注意这里需要检测8个方向。 AC代码 #include<cstdio> void dfs(int,int); int n,m; char f[110][110]; int main(){ scanf("%d %d\n",&n,&m); for(int i=0;i<n;++i){
2022-02-09 19:20:16
494
原创 在递归中记忆搜索的重要性
用斐波那契数列进行测试,计算到第50项,看看记忆化搜索和纯递归消耗的时间 #include<cstdio> #include<cstdlib> #include<ctime> int Num[51]; int fun1(int); int fun2(int); int main(){ int result; Num[1]=Num[2]=1; clock_t start=clock(); result=fun2(50);
2022-02-09 14:06:12
372
原创 挑战程序设计竞赛——抽签Ⅱ
目录题目解析二分查找AC代码 题目 解析 牌的数量增加到了1000,因此如果使用四个for循环,肯定会超时,当n=1000时,我们的时间复杂度就是n^4^,肯定寄了,所以我们要对代码进行优化,想想看能不能减少一个for(),因此我们发现可以把最内层的for换成查找,这里的查找用的是二分查找,时间复杂度为logn,这样一来时间复杂度就变成了n3logn,一下子快了不少,但是这样交上去还是有问题,我们还要更快,因此,我们可以再淦掉一个for循环,因为4层for循环,内两层for循环就是用来查找是否有值等于m-
2022-02-09 12:57:02
946
原创 C++ 指针常量/常量指针 const *point/*const point 一句话整明白
目录 精华——区分方法常量指针——const pointer指针常量——pointer to const顶层const和底层const 精华——区分方法 从变量名出发,自右向左看,看看是先指针还是先常量 例如 常量指针——const pointer int * const p 变量名是p,向左看,先看到const,我们就知道p是个常量,然后再看到*,我们就知道p是个常量指针——const pointer 常量指针意味着p的指向不能变,但是p指向的变量的值可以改变 int a=2; int b=3; int
2022-01-29 22:20:10
2259
转载 计算机网络思科模拟器设置密码相关知识
https://www.cnblogs.com/qzqdy/p/8418279.html 看不看随意,反正我看完直呼内行~
2021-12-24 12:52:09
655
原创 CodeUp 1928 日期差值
@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验; 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示; 增
2021-12-01 16:11:57
241
原创 C/C++竞赛语法入门
1、在使用scanf("%s",XXX);读取数据的时候,scanf是以读入空白为分界线,也就是说scanf是不能读入空格的。这时候我们可以用gets()来读入空格或者getchar()来接收空格。 2、在输出的时候,使用puts()来输出二维数组中的一维,注意puts会自动输出一个换行符。 3、在字符数组的尾部会有空字符\0,使用gets()或scanf("%s",)读入字符串时,会自动添加在输入的字符串尾部,并占用一个字符位,而puts()和printf("%s")就是通过识别末尾的空字符\0来完成输出
2021-11-18 23:12:03
632
1
原创 数据结构--多重链表--稀疏矩阵的表示方法
数据结构–多重链表–稀疏矩阵的表示方法 其实画个图就理解了 #include<stdio.h> #define MAXSIZE 100 typedef enum{Head,Term} NodeTag; typedef int ElementType; //这个结构体用来存放非零元素的行号列号以及自生的值 struct TermNode{ int Row,Col; ElementType Value; }; typedef struct MNode * PtrToMNode;
2021-10-16 20:34:30
444
原创 C++ 关于常量指针(const pointer)与指针常量
#include<iostream> using namespace std; int main() { //按照书上的标准,常量指针(const pointer)指的是这个指针是一个常量,指针常量指的是这个指针指向一个常量 //小声BB:这里可能和百度上的有出入,应该是翻译导致的,本程序依照上述定义。 typedef char* cptr; const char c1='a'; char c2='a'; //下面两行写法不同,但是表示的意义相同
2021-10-08 09:11:13
408
原创 梯度下降法
文章目录梯度下降 梯度下降 这样之后我们已经有了原始数据y_hat和y 然后先对损失函数求梯度,从下图我们可以看出是对梯度求和,而不是对原始数据求和以后再求梯度。 我们先对损失函数求偏导,然后将数据代入就能得到衡量系统判断优劣的损失值 这里的求梯度,假设我现在有10组数据 代价函数如上图,先对代价函数求偏导,平方求导得到的2巧妙地和前面的1/2相消,我们得到的导函数为: 对于w1: 对于w2: 对于b: 由此可见,对于不同变量的偏导函数的形式由原函数决定 这里的i代表数据索引,我们现在有10组数
2021-06-03 10:21:42
150
原创 hdu2648——map的使用
文章目录题目流程图数据结构细节代码AC图片 题目 有n家商店,其中有一家叫做memory的商店,每家商店每天上涨一些价格,连续m天,请你输出memory商店每天的涨价排名。 流程图 1、读入n家商店名称 2、读入持续天数 3、将所有的数据存放到map中 4、通过vector里的店名,逐个寻找大于memory的值 5、输出memory的排名 数据结构 n家商店名称放在vector里面 每天每家店的涨价存放在map里面 细节 每个商店的涨价是累加的,论看题和英语的重要性 代码 #include<iostr
2021-05-13 14:26:57
355
原创 hdu2094——set的应用
题目 n场比赛,每场比赛对应为一行输出,格式为A队战胜B队,经历过n场比赛,请判断是否有冠军产生。 算法 由题意得但凡是输过的队伍都不能作为冠军,我们只需要把所有队伍放进一个集合,再把比赛失败的队伍放入另一个集合,当全部比赛结束后,比较两个集合的大小,如果A-B=1,说明已经产生冠军了,如果=0则没有冠军,如果>1则说明冠军还未产生。 数据结构 放入set中进行 代码 #include<iostream> #include<string> #include<set>
2021-05-13 13:39:19
139
原创 hdu1276——双向链表List的使用
文章目录题目数据结构算法细节代码 题目 给定人数,从1-2报数,报到2的人出列,再从1-3报数,报到3的人出列,如此循环往复,知道队伍中的总人数小于三。 数据结构 使用双向链表存放,满足双向链表的特点: 插入删除操作频繁 随机访问较少 算法 当List.size()>3时继续循环,使用flag来标记当前报数种类。 停止循环后输出。 每次删除前先计算一共会进行多少次删除操作 如果flag=2的话,每进行一次删除操作(假设现在删除的是第i位),后一位就会前进一位来填补空缺,我们下一位要删除的便是i+1
2021-05-13 13:11:17
280
原创 HDU1003——在线处理
文章目录题目流程图算法代码细节 题目 寻找最大字串和 咋一看是水题,但是这里介绍一种算法,叫做在线处理算法 流程图 1、读入测试用例数量 2、读入当前行数字数量 3、看每个数字的贡献值 算法 用sum储存每次的和,用 max储存最大值,用start记录开始位置,用end记录结束位置。 每次数字加和,得到新的sum,和max进行比较,若sum>max,则更新max的值,若sum<max,则继续向后加,但是这是必须保证sum>=0,因为如果sum<0,不管后面如果sum>0就继续向
2021-05-12 23:31:53
205
2
原创 hdu1873——优先队列(priority_queue)的使用
文章目录题目算法代码 题目 为什么会想到使用优先队列来处理问题呢? 因为首先涉及到优先级比较的问题,第二又涉及到入队先后的问题,那么采用优先队列无疑是最优解。 算法 主要是优先队列的自定义排序大于和小于是相反的 代码 #include<iostream> #include<string> #include<queue> using namespace std; struct node { int num;//病人的编号,编号越小,来的越早 int pri
2021-05-12 19:50:46
323
原创 hdu1702——queue和stack的使用
文章目录题目流程图数据结构代码 题目 给你一个规则以及一些指令和数字,按照规则遵循指令,输出数字,若指令数量>数字数量,则在数字全部输出后输出None 流程图 1、读入测试个数 2、读入行数和规则 3、选择相应数据结构 4、读入指令和数字 5、判断指令并输出 数据结构 当指令为FIFO时,选择队列存储 当指令为FILO时,选择栈存储 代码 #include<iostream> #include<string> #include<stack> #include<
2021-05-12 18:53:49
273
原创 hdu1020——使用stack解决
文章目录题目目的流程图数据结构算法代码AC截图 题目 上链接 给你一个字符串,里面有重复的字符,然后你要输出字符串中有哪些字符,每个字符重复了几次。 目的 累加,读取 笔者的目的是联系stack的使用,以下解法属于舍近求远。 流程图 1、读入测试数量 2、定义结构体,字符域和数字域,分别用来存储当前字符和出现的次数 3、输出结果 数据结构 栈 算法 由于使用栈进行存储,所以读入以后先将字符串翻转 然后开始匹配, 如果是新的字符,就压入栈中,如果不是就次数++ 代码 #include<iostream&
2021-05-12 18:25:47
248
原创 HDU1237——stack的应用、逆波兰数
文章目录题目解法 题目 简单计算机,也不算难吧,但是有些坑,不仔细的话要de好久的bug 上链接 解法 笔者的想法是用两个栈,分别存储数字和运算符~ 建议如果不太明白的话,可以搜索一下逆波兰数~ 废话不多说,上代码! #include<iostream> #include<string> #include<stack> using namespace std; bool cmp(char,char); double compute(double,double,char)
2021-05-12 13:15:05
196
原创 HDU1062——stack的应用
文章目录题目解法 题目 上链接 解法 //翻转字符串 #include<iostream> #include<algorithm> #include<string> #include<stack> using namespace std; int main() { int n; cin >>n; getchar(); while(n--){ stack<char>s; c
2021-05-11 19:44:38
155
原创 hdu4841——圆桌问题(Vector的使用)
文章目录题目思考 题目 圆桌上围坐着2n个人。其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数,数到第m个人,则立即处死该人;然后从被处死的人之后开始数数,再将数到的第m个人处死……依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。 链接 思考 就是普通的圆桌问题,但是如果用静态数组来做的话,很难表现出把坏人踢出去这一操作,所以采用动态数组可以生动形象的踢人。 注释我写的还是比较详细了~ /* 圆桌上围坐着2n个人。
2021-05-11 19:19:37
1086
原创 C++ STL Vector常用操作集合
#include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { vector<int>a; for(int i=0;i<10;i++){ a.push_back(i);//在链栈的尾部插入一个元素 } a.pop_back();//删除尾部元素 a.erase(a.begin()+1);//删除单个元素
2021-05-10 19:20:18
195
转载 辗转相除法(采用递归)
int gcd(int a,int b) { if(a%b==0) return b; else return gcd(b,a%b); } 这样写不用比较a和b的大小,也不用每次除完都对a和b重新赋值,太强了~ 作者是:元气算法 链接:link
2021-05-06 20:20:41
965
原创 蓝桥杯——密码发生器
题目 在对银行账户等重要权限设置密码的时候,我们常常遇到这样的烦恼:如果为了好记用生日吧,容易被破解,不安全;如果设置不好记的密码,又担心自己也会忘记;如果写在纸上,担心纸张被别人发现或弄丢了…。这个程序的任务就是把一串拼音字母转换为6位数字(密码),我们可以使用任何好记的拼音串(比如名字,王喜明,就写:wangximing)作为输入,程序输出6位数字。变换的过程如下: 第1步:把字符串6个一组折叠起来,比如wangximing则变为: wangxi ming 第2步:把所有垂直在同一个位置的字符的asc
2021-04-27 15:47:42
455
原创 蓝桥杯——奇怪的比赛
题目 奇怪的比赛 某电视台举办了低碳生活大奖赛。 题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10) 越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数 (选手必须回答问题,不回答按错误处理) 每位选手的起步分都是10分,某获胜选手最终得分刚好是100分 如果不让你看比赛过程,你能推断出他(她)哪个题目答对了 哪个题目答错了吗? 如果把答对的记为1,答错的记为0 则10个题目的回答情况可用仅含1和0的串来表示 如0010110011就是可能的情况。 你的任务是算出所有可
2021-04-26 21:32:05
738
原创 蓝桥杯——比酒量
题目 比酒量 有一群海盗(不多于20人),在船上比拼酒量。 过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。 再打开一瓶酒平分,又有倒下的,再次重复---- 直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。 当第4瓶酒平分喝下后,大家都倒下了。 等船长醒来,发现海盗船搁浅了。 他在航海日志中写到:“…昨天,我正好喝了一瓶…奉劝大家,开船不喝酒,喝酒别开船…” 请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。 如果有多个可能的答案,请列出所有答案, 每个答案占一行。格式是:人
2021-04-26 20:11:57
334
1
原创 蓝桥杯——古堡算式
题目 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE*?=EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!”,于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案,把ABCDE所代表的数字写出来。 解法 其实看到最后一句话,大家应该心知肚明了,暴力杯嘛,暴搜就完事儿了,所以解决这个很简单,详见代码 /* 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE*?=EDCBA 他对
2021-04-26 19:49:25
395
原创 next_permutation && prev_permutation in C++
这个是C++里面用于生成全排列的函数 很好用,不仅能对数组进行全排列,还能对字符串进行全排列,但是必须保证字符串内的数组是有序的。当然,我们也可以用sort对字符串内的字符进行排序 #include<iostream> #include<algorithm> #include<string> using namespace std; int main() { string s; s="213"; sort(s.begin(),s.end()); do{ co
2021-04-26 19:44:52
108
原创 蓝桥杯——细菌分裂
文章目录题目思路 题目 假设有两种微生物X和Y X出生后每隔3分钟分裂一次(数目加倍) Y出生后每隔2分钟分裂一次(数目加倍) 一个新出生的X,半分钟之后吃掉1个Y,且从此开始每隔1分钟吃掉1个Y 已知新出生的X=10,Y=89,求60分钟后Y的数目。若X=10,Y=90呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 题目的结果令你震惊吗?这不是简单的数字游戏! 真实的生物圈有着同样脆弱的性质! 也许因为你消灭的那只Y就是最终导致Y种群灭绝的最后一根稻草! 思路 首先进行模拟,x和y之间
2021-04-26 19:14:16
797
原创 蓝桥杯——等差素数列
文章目录题目解法 题目 解法 首先先对素数进行打表,把1e5内的所有素数都求出来,然后开始寻找,外层循环控制变量,内层循环控制第一个素数,再来个计数器,当循环走完计数器等于10时,输出公差,结束。 上代码 #include<iostream> #include<cstring> using namespace std; const int NUM=(int)1e5; bool not_prime[NUM]; void init(); int main() { init();
2021-04-25 18:21:17
254
原创 图论学习笔记——链式前向星——永远滴神
文章目录图的存储邻接矩阵(方阵)邻接表前向星构造前向星前向星的PRO——PLUS——ULTRA:链式前向星 图的存储 邻接矩阵(方阵) 比较简单,没啥可说的 邻接表 考虑三种可能 把每个链表的表头放在一个链表中(链表+链表) 把每个链表的表头放在一个数组中(数组+链表) 作用:表示一张图中两顶点之间的关系,用1表示 前向星 假设有那么一张有向图, 一种数据结构,以储存边的方式来存储图。构造方法如下:读入每条边的信息,将边存放在数组中,把数组中的边按照起点顺序排序(可以使用基数排序,如下面例程),前向星
2021-04-20 21:58:04
282
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅