自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [蓝桥杯][基础练习VIP]分解质因数-质数筛选+模拟+双指针

题目描述求出区间[a,b]中所有整数的质因数分解。提示先筛出所有素数,然后再分解。数据规模和约定输入输入两个整数a,b。2< =a< =b< =10000输出每行输出一个数的分解,形如k=a1a2a3…(a1< =a2< =a3…,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=225=56=237=78=2229=3310=25法一:代码如下:#include <iostream>using na

2021-03-31 22:41:53 118 1

原创 [蓝桥杯][历届试题]网络寻路-dfs,图的遍历

题目描述X 国的一个网络使用若干条线路连接若干个节点。节点间的通信是双向的。某重要数据包,为了安全起见,必须恰好被转发两次到达目的地。该包可能在任意一个节点产生,我们需要知道该网络中一共有多少种不同的转发路径。源地址和目标地址可以相同,但中间节点必须不同。如下图所示的网络。1 -> 2 -> 3 -> 1 是允许的1 -> 2 -> 1 -> 2 或者 1 -> 2 -> 3 ->

2021-03-31 21:45:11 192

原创 [蓝桥杯][2013年第四届真题]幸运数-模拟+dfs

题目描述幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,…1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 …把它们缩紧,重新记序,为:1 3 5 7 9 … 。这时,3为第2个幸运数,然后把所有能被3整除的序号位置的数删去。注意,是序号位置,不是那个数本身能否被3整除!! 删除的应该是5,11, 17, …此时7为第3个幸

2021-03-31 21:20:41 737

原创 poj3468 A Simple Problem with Integers-线段树区间查询,区间修改

DescriptionYou have N integers, A1, A2, … , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is to ask for the sum of numbers in a given interval.InputThe

2021-03-31 19:01:40 144 1

原创 C++实现线段树(lazy-tag方法)-区间修改,区间查询

代码如下:#include <iostream>using namespace std;const int N = 10010;typedef long long LL;LL input[N];struct node { int l, r; LL sum; LL add;} tree[4 * N];void build(int l, int r, int u) { tree[u].l = l; tree[u].r = r; if (l == r) { tree

2021-03-31 17:33:01 450

原创 [蓝桥杯2015决赛]奇怪的数列-双指针+模拟

题目描述从X星截获一份电码,是一些数字,如下:13111331131321131113122113…YY博士经彻夜研究,发现了规律:第一行的数字随便是什么,以后每一行都是对上一行“读出来”比如第2行,是对第1行的描述,意思是:1个1,1个3,所以是:1113第3行,意思是:3个1,1个3,所以是:3113请你编写一个程序,可以从初始数字开始,连续进行这样的变换。输入第一行输入一个数字组成的串,不超过100位第二行,一个数字n,表示需要你连续变换多少次,n不超过20输出输出一

2021-03-29 09:28:09 325 3

原创 [蓝桥杯2015决赛]机器人数目-枚举

题目描述少年宫新近邮购了小机器人配件,共有3类,其中,A类含有:8个轮子,1个传感器B类含有: 6个轮子,3个传感器C类含有:4个轮子,4个传感器他们一共订购了100套机器人,收到了轮子600个,传感器280个。根据这些信息请你计算:B类型机器人订购了多少个?输出请直接提交该整数,不要填写任何多余内容。代码如下:#include <iostream>using namespace std;int main() { for (int i = 1; i <= 100

2021-03-29 09:20:26 175 2

原创 洛谷T172100 商店-贪心

解题思路:贪心代码如下:#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int a[N], w[N];int ans;int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i..

2021-03-28 18:23:54 158 2

原创 洛谷T172098 子串-substr

代码如下:#include <iostream>#include <cstring>using namespace std;int main() { int cnt; cin >> cnt; string a, b; while (cnt--) { int n, m; cin >> n >> m; cin >> a; cin >> b; int ans = 0 ; for (in..

2021-03-28 18:21:01 158

原创 [蓝桥杯][算法提高VIP]五次方数-枚举

题目描述对一个数十进制表示时的每一位数字乘五次方再求和,会得到一个数的五次方数例如:1024的五次方数为1+0+32+1024=1057有这样一些神奇的数,它的五次方数就是它自己,而且这样的数竟然只有有限多个从小到大输出所有这样的数输入无输出每个数独立一行输出解题思路:0和1不算5次方数代码如下:#include <iostream>using namespace std;typedef long long LL;bool check(LL x) { LL an

2021-03-28 14:59:37 150

原创 dotcpp1115 DNA-打印图案

题目描述小强从小就喜欢生命科学,他总是好奇花草鸟兽从哪里来的。终于, 小强上中学了,接触到了神圣的名词–DNA.它有一个双螺旋的结构。这让一根筋的小强抓破头皮,“要是能画出来就好了” 小强喊道。现在就请你帮助他吧输入输入包含多组测试数据。第一个整数N(N<=15),N表示组数,每组数据包含两个整数a,b。a表示一个单位的DNA串的行数,a为奇数且 3<=a<=39。b表示重复度(1<=b<=20)。输出输出DNA的形状,每组输出间有一空行。样例输入23 15

2021-03-28 14:48:05 130

原创 hdu4911 Inversion-归并排序

解题思路:如果原序列的逆序对数大于交换次数,那么最少的逆序对数量就是原序列逆序对-交换次数。如果原序列的逆序对数小于等于交换次数,那么最少的逆序对数量为0,因为交换次数超过逆序对数,可以把这些逆序对全部消除。代码如下:#include <iostream>using namespace std;const int N = 100010;typedef long long LL;LL cnt = 0;LL a[N];LL w[N];int n, p;void merge.

2021-03-28 14:10:41 118

原创 AcWing 788 逆序对的数量-归并排序

给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i个和第 j 个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围1≤n≤100000输入样例:62 3 4 5 6 1输出样例:5解题思路:求逆序对,其实就是在归并排序的代码加一个cnt+=mid-i+1就可

2021-03-28 13:45:15 106

原创 C++实现线段树求区间和-区间查询

代码如下:#include <iostream>using namespace std;const int N = 10010;int input[N];struct node { int l, r; int sum;} tree[4 * N];void build(int l, int r, int u)//建树 { tree[u].l = l; tree[u].r = r; if (l == r) { tree[u].sum = input[l]; r

2021-03-28 11:45:56 371

原创 C++实现线段树RMQ-单点修改,区间查询

代码如下:#include <iostream>#include <algorithm>using namespace std;const int N = 10010;int input[N];const int INF = 1 << 30;struct node { int l, r; int mw;} tree[4 * N];void init_tree(int n) //初始化,因为要求最小值,所以要初始化为无穷大{ for (int

2021-03-28 11:07:45 197

原创 poj2182 Lost Cows-线段树

DescriptionN (2 <= N <= 8,000) cows have unique brands in the range 1…N. In a spectacular display of poor judgment, they visited the neighborhood ‘watering hole’ and drank a few too many beers before dinner. When it was time to line up for their eve

2021-03-28 10:16:50 129

原创 [蓝桥杯2015决赛]完美正方形-dfs

题目描述如果一些边长互不相同的正方形,可以恰好拼出一个更大的正方形,则称其为完美正方形。历史上,人们花了很久才找到了若干完美正方形。比如:如下边长的22个正方形2 3 4 6 7 8 12 13 14 15 16 17 18 21 22 23 24 26 27 28 50 60如下图那样组合,就是一种解法。此时,紧贴上边沿的是:60 50紧贴下边沿的是:26 28 17 21 1822阶完美正方形一共有8种。下面的组合是另一种:2 5 9 11 16 17 19 21 22 24 26

2021-03-27 23:23:48 279 2

原创 [蓝桥杯2017初赛]等差素数列-巧妙枚举(思维)

题目描述2,3,5,7,11,13,…是素数序列。类似:7,37,67,97,127,157 这样全由素数组成的等差数列,叫等差素数数列。上边的数列公差为30,长度为6。2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10的等差素数列,其公差最小值是多少?输出输出一个整数表示答案解题思路:看代码应该就知道了!!!代码如下:#include <iostream>

2021-03-27 21:52:03 406 1

原创 [蓝桥杯2015决赛]分机号-枚举(水题)

题目描述X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:751,520,321 都满足要求,而766,918,201 就不符合要求。现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码?输出请直接输出该数字,不要输出任何多余的内容。解题思路:水题!代码如下:#include <iostream>using namespace std;int ans;int main() { for (int i

2021-03-27 18:33:00 144

原创 C++并查集的实现

编号代表每一个元素。数组par表示的是父亲的编号,也就是前驱。par[x] = x时,x是所在的树的根。代码如下:#include <iostream>using namespace std;const int N = 100010;int par[N], ranks[N];void init(int n) { //初始化n个元素 for (int i = 1; i <= n; i++) { par[i] = i; ranks[i] = 0; }}.

2021-03-27 18:26:36 124

原创 [蓝桥杯][2018年第九届真题]调手表-bfs

小明买了块高端大气上档次的电子手表,他正准备调时间呢。在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1,则要按 n - 1 次加一按钮才能调回正确时间。小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多

2021-03-26 21:45:58 131

原创 第七届蓝桥杯决赛真题 - 凑平方数-全排列+dfs+set去重

题目:凑平方数把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。比如:0, 36, 5948721再比如:10985247361, 25, 63907840, 4, 289, 15376等等…注意,0可以作为独立的数字,但不能作为多位数字的开始。分组时,必须用完所有的数字,不能重复,不能遗漏。如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?注意:需要提交的是一个整数,不要填写多余内容。解题思路:先用全排列列举出所有可能的序列,然后

2021-03-26 21:19:36 178

原创 第七届蓝桥杯(国赛)——随意组合-dfs,next_permutation

【问题描述】小明被绑架到X星球的巫师W那里。其时,W正在玩弄两组数据 (2 3 5 8) 和 (1 4 6 7)他命令小明从一组数据中分别取数与另一组中的数配对,共配成4对(组中的每个数必被用到)。小明的配法是:{(8,7),(5,6),(3,4),(2,1)}巫师凝视片刻,突然说这个配法太棒了!因为:每个配对中的数字组成两位数,求平方和,无论正倒,居然相等:872 + 562 + 342 + 212 = 12302782 + 652 + 432 + 122 = 12302小明想了想说:

2021-03-26 17:06:21 392 2

原创 2017年第八届蓝桥杯国赛B组试题A-36进制-进制转换

【问题描述】对于16进制,我们使用字母A-F来表示10及以上的数字。如法炮制,一直用到字母Z,就可以表示36进制。36进制中,A表示10,Z表示35,AA表示370你能算出 MANY 表示的数字用10进制表示是多少吗?【答案提交】请提交一个整数,不要填写任何多余的内容(比如,说明文字)答案:1040254代码如下:#include <iostream>#include <string>using namespace std;int main(){ in

2021-03-26 13:24:39 3403 11

原创 2019年第十届蓝桥杯国赛B组试题D-求值-枚举

【问题描述】学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为 St 。例如 S1 = 1, S2 = 2, S3 = 4, S4 = 6,···。现在小明想知道,当 t = 100 时,St 是多少?即 S100 是多少?答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。代码如下:#include &l

2021-03-26 13:11:31 492 2

原创 2019年第十届蓝桥杯国赛B组试题A-平方序列-枚举

【问题描述】小明想找到两个正整数 X 和 Y,满足2019 < X < Y;20192 , X2 , Y2 组成等差数列。请你求出在所有可能的解中,X + Y 的最小值是多少?答案提交这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。解题思路:水题!!!代码如下:#include <iostream>using namespace std;int main() { int m

2021-03-26 13:11:04 505 2

原创 2019年第十届蓝桥杯国赛B组试题G-排列数-next_permutation枚举,模拟

在一个排列中,一个折点是指排列中的一个元素,它同时小于两边的元素,或者同时大于两边的元素。对于一个 1∼n 的排列,如果可以将这个排列中包含 t个折点,则它称为一个 t+1 单调序列。例如,排列 (1,4,2,3) 是一个 3 单调序列,其中 4 和 2 都是折点。给定 n 和 k,请问 1∼n 的所有排列中有多少个 k 单调队列?输入格式输入一行包含两个整数 n,k。输出格式输出一个整数,表示答案。答案可能很大,你可需要输出满足条件的排列数量除以 123456 的余数即可。数据范围1≤

2021-03-26 13:10:50 3470 8

原创 2019年第十届蓝桥杯国赛B组试题E-路径计数-dfs(坑题)

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

2021-03-26 13:10:29 488 3

原创 2018年第九届蓝桥杯国赛B组试题B-激光样式-dfs

【问题描述】x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?显然,如果只有3台机器,一共可以成5种样式,即:1、全都关上(sorry, 此时无声胜有声,这也算一种)2、开一台,共3种3、开两台,只1种但是30台就不好算了,国王只好请你帮忙了。【答案提交】要求提交一个整数,表示30台激光器能形成的样式种数。注意,只提交一个整数,不

2021-03-26 13:10:05 127

原创 2019年第十届蓝桥杯国赛B组试题B-质数拆分-01背包问题+素数筛选

问题描述】2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种?注意:分解方案不考虑顺序,如 2 + 2017 = 2019 和 2017 + 2 = 2019 属于同一种方案。答案:55965365465060代码如下:#include <iostream>using namespace std;const int N = 2500;//空间要开大一点long long dp[N][N];int p[N];bool vis[N];int k = 1;

2021-03-26 13:09:40 1149 6

原创 poj2182 Lost Cows-暴力

DescriptionN (2 <= N <= 8,000) cows have unique brands in the range 1…N. In a spectacular display of poor judgment, they visited the neighborhood ‘watering hole’ and drank a few too many beers before dinner. When it was time to line up for their eve

2021-03-25 22:16:10 173

原创 字符串哈希-BKDRHash

代码如下:#include <iostream>#include <vector>using namespace std;const int N = 10005;struct node { char name[35];};unsigned int BKDRHash(char *str) { unsigned int key = 0, seed = 31; while (*str) { key = key * seed + (*str++); } ret

2021-03-25 20:52:38 161

原创 strcmp()字符串比较函数

字符串比较函数strcmp的比较,两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。基本形式为strcmp(str1,str2),若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数;...

2021-03-25 13:27:43 505

原创 hdu2648 Shopping-map容器

Problem DescriptionEvery girl likes shopping,so does dandelion.Now she finds the shop is increasing the price every day because the Spring Festival is coming .She is fond of a shop which is called “memory”. Now she wants to know the rank of this shop’s pr

2021-03-25 13:12:36 146

原创 poj3981 字符串替换-字符串的基本操作

Description编写一个C程序实现将字符串中的所有"you"替换成"we"Input输入包含多行数据每行数据是一个字符串,长度不超过1000数据以EOF结束Output对于输入的每一行,输出替换后的字符串Sample Inputyou are what you doSample Outputwe are what we do法一代码如下:#include <iostream>using namespace std;const int N = 1010;ch

2021-03-25 12:44:25 135

原创 C++实现dijkstra单源最短路径算法-邻接表+优先队列

dijkstra单源最短路径算法不允许边权值为负,适用的图范围可以很大。代码如下:#include <iostream>#include <queue>#include <vector>#include <string>using namespace std;const int N = 1e8;bool done[N];int dis[N];const int INF = 1 << 30;int n, m;struct e

2021-03-25 10:45:56 648

转载 hdu2544 最短路-邻接表+优先队列实现dijkstra

Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括

2021-03-25 10:22:11 96

原创 Floyd最短路径算法

Floyd最短路径算法适用于节点(n<200)的图,允许边权值为负。代码如下:#include <iostream>using namespace std;const int N = 110;const int INF = 1 << 30;int g[N][N];int n, m;void Floyd() { for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) if (g[

2021-03-25 10:06:33 102

原创 hdu2544 最短路-Floyd算法

Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括

2021-03-25 10:06:02 110

原创 吃鸡蛋-优先队列

题目描述小林养了一只母鸡,一连 n 天,每天都可以生下若干个鸡蛋。在第 i 天,母鸡会生下 eggs[i] 个鸡蛋,这些鸡蛋将会在days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,母鸡不会生下新的鸡蛋,此时用 eggs[i] = 0 且 days[i] = 0 表示。你打算每天最多吃一个鸡蛋来保证营养均衡。注意,你可以在这 n 天之后继续吃鸡蛋。给你两个长度为 n 的整数数组 eggs 和 days ,返回你可以吃掉的鸡蛋的最大数目。输入格式第一行

2021-03-25 10:05:39 188

空空如也

空空如也

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

TA关注的人

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