自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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截图![在这里插入图片描述](https://img-blog.csdnimg.cn/b4e05b537ddd457aa297bf2250ca68ec.png) 分析 可以用的算法,首先想到的是贪心,再想一想可以理解成哈夫曼编码 因为每次砍掉的成本包含着等待被砍掉的长度。所以我们可以试想一下,如果你是伐木工,要想让成本最小

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

原创 POJ 1853 ants

POJ ants 1853 文章目录POJ ants 1853题型题解

2022-02-06 23:55:29 328

原创 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

原创 关于C++ 中的const-member function和non-const-member function

诸位直接看图

2022-01-29 20:17:12 968

转载 计算机网络思科模拟器设置密码相关知识

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关注的人

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