![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法题与技巧
文章平均质量分 51
早年面向蓝桥杯,后来是算法题都往里放了,也不搞啥细分了
Vivid-victory
○( ^皿^)っHiahiahia…
展开
-
【算法】三色小球,相邻颜色不同,排列方案(DP)
假设有三种颜色小球,每种颜色各n个,问:相邻颜色不同的情况下,有多少中排列方法?(同色小球没有区别,输出取模998244353)#include <bits/stdc++.h>using namespace std;typedef long long ll;ll dp[301][301][301][3]; //三种颜色球剩余可用小球数,最后一维:当前选择颜色 int mod = 998244353;int main(){ int n, m, k; while (cin >原创 2021-11-16 21:54:46 · 2138 阅读 · 2 评论 -
【算法】bracket-sequence(DFS、DP)
给定一个长度为 n 的括号序列 S,其中有些位置上的字符缺失被换为 ∗,询问存在多少种将 S 中的 ∗ 替换为 ( 或 ) 的方案,使得 S仍然合法。若存在方案,输出字典序最小和最大的方案。对于一个括号序列 A 而言,合法的定义为:‘A = ()’ 是合法的如果存在一个合法的 B,使得 ‘A = (B)’ ,则 A 是合法的如果存在合法的 B,C,使得 ‘A = B + C’,其中 + 表示字符串的拼接操作,则 A 是合法的输入格式:输入一行长度为 n(1≤n≤5×103) 的括原创 2021-10-27 21:00:52 · 1472 阅读 · 1 评论 -
【算法】白给题(贪心,二分)
题目描述给定N个自然数,你需要选择M个,使得M个数中两两之间的差的绝对值的最小值尽可能大,求这个最大值。输入格式第一行两个空格隔开的正整数N,M,表示自然数个数和要选的数的个数。接下来一行为N个空格隔开的给定自然数。输出格式一个整数。样例输入3 21 2 3样例输出2★解题思路关键搞清楚什么是“两两之间的差的绝对值的最小值尽可能大”:假设给定一个序列,最小值为10,最大值为90,要求选择两个数,那么显然是选最大值和最小值。如果要求选择3个数,那么应该选择最大数和最小数,以及中间原创 2021-10-22 15:39:29 · 645 阅读 · 0 评论 -
【技巧】37%法则(rand()随机)
Introduction在我很小的时候,就曾在《意林》或者其他什么杂志上读过一则小故事:苏格拉底叫人穿过一片麦地,不走回头路且只能选取一个的情况下,找到最大的麦穗。故事结尾好像是很多人都无功而返,或者是抱怨自己过早选中而悔恨。不过不重要了,故事的结尾能领悟出什么道理有的时候取决于编辑希望我们明白什么道理。再后来,我又在不同场合听到过多次这样的故事,无非就是做实验的人变成了柏拉图、亚里士多德或者其他人,麦穗变成了葡萄、玉米之类的。这些问题的解都是一致的,即记录下前37%最大值不选择,此后若遇到大于等于原创 2021-10-19 11:23:27 · 815 阅读 · 1 评论 -
【技巧】生成算法题测试随机数据(文件读取freopen)
随机数rand()知识【技巧】C/C++生成随机数数组(rand(),srand(),time()函数介绍)关于rand(),srand()生成随机数原理,本人了解不深,目前仅仅是会简单使用的水平。生成不同范围随机数方法基于基本的生成随机数方法,通过一些策略调整所需随机数的范围#include <iostream>#include <cstdlib>#include <ctime>#include <algorithm>using names原创 2021-10-11 16:45:37 · 458 阅读 · 0 评论 -
【算法】triangle(由三角形中点求顶点,结构体重载operator)
对于任何一个三角形ABC,令f(A,B,C)表示其三条边的三个中点构成的点集。现在给定(A,B,C)且满足所有坐标均为整数且构造三角形ABC三个顶点坐标。输入格式输入共有三行,每行两个整数,表示三角形一条边的中点坐标。 保证所有输入数据都在[−1018,1018]中。输出格式输出三行,每行输出一个顶点的坐标,如果点坐标不是整数,则以两个有理数(既约分数),b/a的形式输出。如果三角形的三个点存在多组不同的解,只需输出任意一组即可,但所输出的三个顶点坐标必须升序,即横坐标较小的点优先输出,横坐标相原创 2021-10-11 10:57:17 · 1023 阅读 · 0 评论 -
【算法】kstring(字符串子序列重排序)
给定一个长度为n的只包含小写字母的字符串S,请对所有长度为k的子串进行排序,输出排好序的下标序列。按照字典序从小到大排序,如果子串一样,那么左端点下标小的更小(排在前面)。1、结构体,sort比较函数重定义Memory Limit Execeed(爆内存,5分)#include <iostream>#include <algorithm>#include <string.h>using namespace std;struct Node{ strin原创 2021-10-11 10:41:07 · 960 阅读 · 0 评论 -
【算法】just-copy(伪代码改写,归并排序)
根据伪代码写程序,实现的功能为归并排序,并输出res(res可能是用来记录元素交换了多少次,本人不是很确定,当然这并不影响做出这一题)输入样例:108 2 5 4 10 2 9 4 3 10输出样例:411、数组b用静态数组,记得大小要合适#include <iostream>using namespace std;long long F(long long a[],int l,int mid,int r){ long long i=l,j=mid,k=0,res=原创 2021-10-11 10:21:43 · 258 阅读 · 0 评论 -
【算法】Aphelios会数数 (数位统计)
Aphelios这孩子打小就聪明,天生就会数数!他从0开始数,一直数到n,然后这些数字排成一行,用火柴棒一笔一笔的摆出来,如图所示。现在给定n,Aphelios想知道他需要多少根火柴棒,才能够数到n。由于Aphelios这孩子打小就聪明,所以他不屑于计算,现在请你帮他计算一下最终答案输入格式:单组测试数据,输入第一行为正整数n,n<=10^5输入样例:3输出样例:181、暴力出奇迹这题暴力居然是满分,挺无语的#include <iostream>using nam原创 2021-10-09 16:28:53 · 323 阅读 · 0 评论 -
【算法】频繁集(字符串技巧,多种容器混合,map嵌套vector)
本题问题来源于Apriori算法的其中一个步骤题目直接复制会乱码题意:将头相同(头的长度为k-1,不包括最后一个字符)长度为k的字符串组合成长度为k+1的新字符串,新字符串尾巴长度为2,由找出的字符串尾巴按字典序序排列而成。注意:最后输出的字符串序列也是有序的。输入样例:5 2acbcadbece输出样例:2acdbce1、O(n^2)暴力比较vector当容器#include <iostream>#include <string>#incl原创 2021-10-09 16:02:02 · 477 阅读 · 0 评论 -
【算法题】YY and Matrix(矩阵变换)
YY and Matrix★题目描述YY 有一个大小为n∗m的矩阵,现在要对矩阵进行q次操作,操作分为如下三种:0 x y:交换矩阵的x、y两行。1 x y:交换矩阵的x、y两列。2 x y:求当前矩阵第x行第y列的元素。★输入第一行三个正整数n、m、q,表示矩阵大小和操作次数。接下来n行,每行m个空格隔开的整数,表示矩阵的元素。接下来q行,每行三个数op、x、y,表示上述操作中的一种。对于80%的数据,1 <= n、m、q <= 1000。对于100%的数据,1 &l原创 2021-10-09 15:22:20 · 734 阅读 · 0 评论 -
【蓝桥】2017年C/C++组填空题 方格分割(DFS基础应用)
标题:方格分割【第八届蓝桥杯C/C++ B组省赛第4题】6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:p1.png, p2.png, p3.png 就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。解题思路:从方块正中心开始深搜,每走一步便将当...原创 2020-03-30 20:24:56 · 309 阅读 · 0 评论 -
【蓝桥】第八届C/C++语言C组第2题 兴趣小组(文件读取、vector())
标题:兴趣小组【第八届蓝桥杯C组第2题】为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组(以下称A组,B组,C组)。每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。每个文件中存储的是学生的学号。由于工作需要,我们现在想知道:既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?请你统计该数字并通过浏览器提交答案。注意:答案是一个整数,不...原创 2020-03-29 22:12:22 · 592 阅读 · 0 评论 -
【蓝桥】原创填空练习题“欧拉猜想”(计算器、python、取模技巧)
题目:欧拉猜想(自编)【问题描述】欧拉猜想是欧拉提出的对“费马大定理”引出的猜想,欧拉猜想每个大于2的整数n,任何n-1个正整数的n次幂的和都不是某正整数的n次幂。但是,和费马猜想不同的是,欧拉的猜想是错误的。这猜想在1966年被L.J.Lander和T.R.Parkin推翻。他们找出n= 5的反例为:27^5+ 84^5+ 110^5+ 133^5= 144^51988年,Noam El...原创 2020-03-26 23:19:39 · 1018 阅读 · 0 评论 -
【蓝桥】“世界完全对称日”数目(蓝桥杯原创练习题)
题目:完全对称日(自编题)【问题描述】2020年2月2日是农历正月初九,不少人称之寓意为长长久久,又因其完整写法“20200202”谐音为“爱你爱你你爱你爱”,被网友戏称为千年一遇的“完全对称日”。然而,“完全对称日”真的是千年一遇吗?实则不然,比如下一次的“完全对称日”在2021年12月2日(20211202),再下一次是在2030年3月2日(20300302)。请统计出从公元1000...原创 2020-03-26 22:22:06 · 1644 阅读 · 0 评论 -
【蓝桥】算法能力恢复性练习3(next_permutation()、vector())
博客内容说明本系列博客:《算法能力恢复性练习》,主要用于记录个人备战2020年蓝桥杯,练习算法能力与技巧的过程。代码和思路不一定正确,部分代码和思路参考自他人,侵请删。欢迎大家交流学习,指正错误!推荐练习网址:蓝桥杯ACM训练习题1、简单暴力题标题:猜年龄小明带两个妹妹参加元宵灯会。别人问她们多大了,她们调皮地说:“我们俩的年龄之积是年龄之和的6倍”。小明又补充说:“她们可不是双胞胎...原创 2020-03-25 23:13:50 · 203 阅读 · 0 评论 -
【蓝桥】2020年第11届蓝桥杯C/C++组校内模拟赛(3月份)题目和做法参考
本博客为模拟赛最后半小时所写,所写内容为考场题目和个人答案所写做法不一定正确,仅供参考!欢迎大家交流学习,指正错误!1、填空1问题描述 在计算机存储中,15.125GB是多少MB?答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。参考做法15.125*1024=154882、填空2问题描...原创 2020-03-21 12:51:53 · 2778 阅读 · 9 评论 -
【蓝桥】算法能力恢复性练习2(日期、next_permutation()、递归、DP、大数)
1、日期题题目标题: 高斯日记大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记上标注着:...原创 2020-03-18 22:25:20 · 273 阅读 · 0 评论 -
【蓝桥】算法能力恢复性练习1(进制、暴力、打表、素数、vector()、逻辑)
1、类进制转换题(去年省赛B题)标题:年号字串(本题总分:5 分)小明用字母 A 对应数字 1,B 对应 2,以此类推,用 Z 对应 26。对于 27以上的数字,小明用两位或更长位的字符串来对应,例如 AA 对应 27,AB 对应 28,AZ 对应 52,LQ 对应 329。请问 2019 对应的字符串是什么?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为...原创 2020-03-07 23:10:57 · 368 阅读 · 0 评论 -
【蓝桥】第八届C语言C组第7题 Excel地址(进制变形题,stack()简单使用)
标题: Excel地址Excel单元格的地址表示很有趣,它使用字母来表示列号。比如,A表示第1列,B表示第2列,Z表示第26列,AA表示第27列,AB表示第28列,BA表示第53列,…当然Excel的最大列号是有限度的,所以转换起来不难。如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?本题目既是要求对输入的数字, 输出其对应的Excel地址表示方式。...转载 2019-03-05 10:38:11 · 782 阅读 · 0 评论 -
【蓝桥】算法提高 日期计算(蓝桥重点题型:日期做差)
问题:计算两个日期差说明:代码是一种艺术计算两个日期相差多少天相关问题,是一类常见的题目类型现在先来展示一下,解决这类问题,本人暂时所能写出的最优(美)的代码,见代码1代码1利用两日期和公元1年1月1日的差值,间接计算两日期差值#include <iostream>using namespace std;int a[13]={-1,31,28,31,30,31,30,...原创 2019-03-22 15:17:33 · 591 阅读 · 0 评论 -
【蓝桥】2019第十届蓝桥杯省赛C/C++大学B组题目及感想(考场代码和思考)
比赛时间:2019年3月24日礼拜天 上午9点到下午1点说明本文题目和代码为考试结束以后返回考场拷下来的文中答案不保证正确(感觉错的地方还不少)本文解题思路和代码只反映本人考场临场发挥情况,真实做题水平(蒟蒻一枚)故此文实则为感想体会,非题解(若拿省一,再补题解)试题 A: 组队本题总分:5 分【问题描述】 作为篮球队教练,你需要从以下名单中选出 1 号位至 5 号位各一名球员,...原创 2019-03-26 20:17:40 · 2942 阅读 · 13 评论 -
【算法设计与分析】动态规划设计思想介绍
动态规划Dynamic Programming1.学习要点:动态规划算法的基本要素(1)最优子结构性质(2)重叠子问题性质设计动态规划算法的步骤。(1)找出最优解的性质,并刻划其结构特征。(2)递归地定义最优值。(3)以自底向上的方式计算出最优值。(4)根据计算最优值时得到的信息,构造最优解。2.经典应用范例(1)矩阵连乘问题;(2)最长公共子序列;(3)最大子段和...转载 2019-03-28 21:49:58 · 843 阅读 · 0 评论 -
【蓝桥】【洛谷】P2563 [AHOI2001]质数和分解(动态规划)
题目链接:https://www.luogu.org/problemnew/show/P2563题目描述任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式。例如,9 的质数和表达式就有四种本质不同的形式:9 = 2 + 5 + 2 = 2 + 3 + 2 + 2 = 3 + 3...转载 2019-05-14 21:21:40 · 529 阅读 · 0 评论 -
【蓝桥】【CS505B】Mr. Kitayuta's Colorful Graph(并查集)
交题网址:①http://codeforces.com/problemset/problem/505/B②https://cn.vjudge.net/problem/CodeForces-505B题目描述一个无向图包含n个点m条边,顶点编号从1到n。 对于每条边有颜色ci, 连接着顶点 ai 和 b i.下面有q个询问.每条询问有两个整数 — ui 和 vi.找到满足下面...原创 2019-05-14 22:27:53 · 163 阅读 · 0 评论 -
【蓝桥】算法提高 A Careful Approach(next_permutation(),二分,fmod()函数)
问题描述 如果你认为参加一个编程比赛让你感到有压力,那么请你想象你是一个空中交通管制员。因为人命关天,所以一个空中交通管制员必须在时刻变化的环境中专注于任务,解决不可预知的事件。 让我们将目光转向飞机的着陆流程。飞机进入目的地飞航情报区之后,就会报告自己的位置、方向和速度,然后管制员就需要制定计划让所有飞机按指令安全着陆。一般来说,连续的两次着陆之间间隔时间越长,就越安全。因为这些额外的时...转载 2019-03-13 16:31:59 · 385 阅读 · 0 评论 -
【蓝桥】第八届C语言B组国赛 对局匹配(分组,线性DP)
标题:对局匹配小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹配。现在小明知道这个网站总共有N名用户,以及他们的积分分别是A1, A2, … AN。小明想了解最多可能有多少名用户同时在线寻找对手,但是系统却一场对局都匹配...转载 2019-03-12 19:36:26 · 256 阅读 · 0 评论 -
【蓝桥】第八届蓝桥杯C/C++ B组省赛第4题 方格分割(DFS)
标题:方格分割6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:p1.png, p2.png, p3.png 就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。思路:从中心点开始,可走四个方向,DFS遍历的同时将中心对称的点也进行标记,到达边界即为...转载 2019-03-09 15:05:39 · 355 阅读 · 0 评论 -
【蓝桥】第八届蓝桥杯C/C++ B组省赛第7题 日期问题(结构体重载,sort()中第三个元素cmp的使用)
标题:日期问题小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如02/03/04,可能是2002年03月04日、2004年02月...转载 2019-03-09 11:10:40 · 233 阅读 · 0 评论 -
【蓝桥】第八届C语言C组第2题 兴趣小组(文件题)
标题:兴趣小组为丰富同学们的业余文化生活,某高校学生会创办了3个兴趣小组(以下称A组,B组,C组)。每个小组的学生名单分别在【A.txt】,【B.txt】和【C.txt】中。每个文件中存储的是学生的学号。由于工作需要,我们现在想知道:既参加了A组,又参加了B组,但是没有参加C组的同学一共有多少人?请你统计该数字并通过浏览器提交答案。注意:答案是一个整数,不要提交任何多余的内容。...转载 2019-03-04 09:33:58 · 811 阅读 · 1 评论 -
【蓝桥】 历届试题 核桃的数量(__gcd(a,b)库函数知识简单应用)
问题描述小张是软件项目经理,他带领3个开发组。工期紧,今天都在加班呢。为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑)。他的要求是:各组的核桃数量必须相同各组内必须能平分核桃(当然是不能打碎的)尽量提供满足1,2条件的最小数量(节约闹革命嘛)输入格式输入包含三个正整数a, b, c,表示每个组正在加班的人数,用空格分开(a,b,c&lt;30)输出格式输出一个...原创 2019-02-26 19:02:55 · 202 阅读 · 0 评论 -
【蓝桥】算法提高 盾神与积木游戏 (简单贪心,结构体排序)
问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西。但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友的积木才能完成他的大作。如果某个小朋友完成了他的作品,那么他就会把自己的作品推倒,而无私地把他的所有积木都奉献出来;但是,如果他还没有完成自己的作品,他是不会把积木让出去的哟~ 盾神看到...原创 2019-03-02 16:14:42 · 417 阅读 · 0 评论 -
【蓝桥】 算法提高 聪明的美食家(最长上升子序列,upper_bound( ))
问题描述 如果有人认为吃东西只需要嘴巴,那就错了。 都知道舌头有这么一个特性,“由简入奢易,由奢如简难”(据好事者考究,此规律也适合许多其他情况)。具体而言,如果是甜食,当你吃的食物不如前面刚吃过的东西甜,就很不爽了。 大宝是一个聪明的美食家,当然深谙此道。一次他来到某小吃一条街,准备从街的一头吃到另一头。为了吃得爽,他大费周章,得到了各种食物的“美味度”。他拒绝不爽的经历,不走回头路...原创 2019-03-02 15:09:33 · 451 阅读 · 0 评论 -
【蓝桥】交换瓶子(memcpy()的使用)
交换瓶子有N个瓶子,编号 1 ~ N,放在架子上。比如有5个瓶子:2 1 3 5 4要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:1 2 3 4 5对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行: 一个正整数N(N&lt;10000), 表示瓶子的数目第二行:N个正整数,用空格分开,表...原创 2019-02-28 22:06:28 · 143 阅读 · 0 评论 -
【蓝桥】历届试题 带分数(全排列,next_permutation(),剪枝)
问题描述100 可以表示为带分数的形式:100 = 3 + 69258 / 714。还可以表示为:100 = 82 + 3546 / 197。注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。类似这样的带分数,100 有 11 种表示法。输入格式从标准输入读入一个正整数N (N<1000*1000)输出格式程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的...原创 2019-02-28 20:24:48 · 307 阅读 · 3 评论 -
【蓝桥】基础练习 数列特征(max_element(),accumulate()的使用)
问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入51 3 -2 4 5样例输出5-211数据规模与约定1 &lt;= n &lt;= 10000...原创 2019-02-15 21:44:35 · 240 阅读 · 0 评论 -
【暴力】 hdu 5879 Cure(字符串存储无限大数应用)
Given an integer n, we only want to know the sum of 1/k2 where k from 1 to n.InputThere are multiple cases. For each test case, there is a single line,containing a single positive integer n. The...原创 2019-01-29 21:53:42 · 233 阅读 · 0 评论 -
【思维题】Eugeny and Array(关于c++加速器的应用)
Eugeny has array a = a1, a2, …, an, consisting of n integers. Each integer ai equals to -1, or to 1. Also, he has m queries:Query number i is given as a pair of integers li, ri (1 ≤ li ≤ ri ≤ n).The...原创 2019-01-29 20:57:54 · 338 阅读 · 1 评论 -
【思维题】Magic Numbers
A magic number is a number formed by concatenation of numbers 1, 14 and 144. We can use each of these numbers any number of times. Therefore 14144, 141414 and 1411 are magic numbers but 1444, 514 and ...原创 2019-01-28 15:57:16 · 418 阅读 · 0 评论 -
【蓝桥】排它平方数(long long 取模,函数返回数组的小知识)
题目标题: 排它平方数小明正看着 203879 这个数字发呆。原来,203879 * 203879 = 41566646641这有什么神奇呢?仔细观察,203879 是个6位数,并且它的每个数位上的数字都是不同的,并且它平方后的所有数位上都不出现组成它自身的数字。具有这样特点的6位数还有一个,请你找出它!再归纳一下筛选要求:1. 6位正整数2. 每个数位上的数字不同3. 其...原创 2019-03-07 10:22:12 · 939 阅读 · 0 评论