算法
文章平均质量分 94
小满不吃香菜
这个作者很懒,什么都没留下…
展开
-
第三届“传智杯”全国大学生IT技能大赛(练习赛) 题解
A 各数字之和题目描述思路:一开始想的是回溯算法,后来想到暴力也不会超时就用的暴力代码#include <iostream>using namespace std;int n;int cnt;int sum;bool check(int k){ sum = 0; while(k){ if(sum > 9) return false; sum += k % 10; k /= 10; } if(sum == 9) return tr原创 2020-11-21 19:07:55 · 1740 阅读 · 3 评论 -
第十二届蓝桥杯大赛模拟赛(第二期)
填空题第一题问题描述 小明要用二进制来表示 1 到 10000 的所有整数,要求不同的整数用不同的二进制数表示,请问,为了表示 1 到 10000 的所有整数,至少需要多少个二进制位?答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。答案: 14 (2^14 = 2^10 * 2 * 4 刚好大于10000)第二题问题描述 请问在 1 到 2020 中,有多少个数既是 4 的整数倍,又是 6 的整数原创 2021-01-15 21:32:36 · 3989 阅读 · 5 评论 -
哈希表
哈希表1. 模拟散列表把一大堆整数,范围很大零散的,映射为在某一范围的例题:840. 模拟散列表维护一个集合,支持如下几种操作:“I x”,插入一个数x;“Q x”,询问数x是否在集合中出现过;现在要进行N次操作,对于每个询问操作输出对应的结果。输入格式第一行包含整数N,表示操作数量。接下来N行,每行包含一个操作指令,操作指令为”I x”,”Q x”中的一种。输出格式对于每个询问指令“Q x”,输出一个询问结果,如果x在集合中出现过,则输出“Yes”,否则输出“No”。每个结原创 2020-11-24 22:27:57 · 176 阅读 · 0 评论 -
堆优化Dijkstra求最短路
时间复杂度 O(mlogn), n 表示点数,m 表示边数,适合稀疏图,用邻接表存储模板typedef pair<int, int> PII;int n; // 点的数量int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边int dist[N]; // 存储所有点到1号点的距离bool st[N]; // 存储每个点的最短距离是否已确定// 求1号点到n号点的最短距离,如果不存在,则返回-1i原创 2020-11-13 19:10:15 · 122 阅读 · 0 评论 -
朴素Dijkstra求最短路
迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有权图中最短路径问题。迪杰斯特拉算法主要特点是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。朴素Dijkstra适用于求稠密图,时间复杂度n * n,用邻接矩阵求存储。思想:看的我们数据结构老师的ppt看懂的例如从起点1到其他点的最短距离代码模板int Dijkstra(){.原创 2020-11-09 11:16:36 · 1012 阅读 · 10 评论 -
剑指 Offer 49 丑数
今天上软件工程的时候一边看着美国大选和基金一边看剑指Offer这本书,看到了丑数这道题目,觉得挺有意思,就写个题解题目描述丑数我们把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。求第n个丑数的值。样例输入:5输出:5注意:习惯上我们把1当做第一个丑数。思路当一个丑数已经被 * 2 * 3 * 5 后,对于生成丑数已经没有用了,我们把对应指针前移一位(即复用标识) 让下一个丑数等待被*来生成新丑数每次计算出来个三个原创 2020-11-04 16:11:17 · 102 阅读 · 0 评论 -
树和图的深度优先搜索(应用:树的重心)
树和图的存储树是一种没有闭环的无向图,无向图是一种特殊的有向图。因此我们只要表示出有向图就可以了。有向图的表示有两种,分别是邻接矩阵和邻接表。用的比较多的是邻接表。邻接表的结构就是一个数组拉一个链表数组建立邻接表//邻接表int h[N], e[N * 2], ne[N * 2], idx;void add(int a, int b) { e[idx] = b, ne[idx] = h[a], h[a] = idx++;}树的bfs模板邻接表:1 -> 22 ->原创 2020-11-03 19:28:18 · 440 阅读 · 0 评论 -
数组模拟链表
单链表题目描述实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该链表进行M次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第1个插入的数,第2个插入的数,…第n个插入的数。样例输入:10H 9I 1 1D 1D 0H 6I 3 6I 4 5I 4原创 2020-10-11 11:54:28 · 164 阅读 · 1 评论 -
数的划分
今天一同学在写蓝桥杯题目的时候,问我这个问题,当时看了下觉得深搜挺好过的毕竟数据范围小,然后就去学java啦,然后晚上看了看,发现动态规划也能做问题描述原题链接:数的划分将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法。输入格式 n,k输出格式 一个整数,即不同的分法样例输入7 3样例输出4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,原创 2020-10-09 19:23:42 · 629 阅读 · 0 评论 -
猴子吃包子
问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同;肉包每秒钟吃x个;韭菜包每秒钟吃y个;没有馅的包子每秒钟吃z个;现在有x1个肉包,y1个韭菜包,z1个没有馅的包子;问:猴子吃完这些包子要多久?结果保留p位小数。 输入格式 输入1行,包含7个整数,分别表示吃不同包子的速度和不同包子的个数和保留的位数。 输出格式 输出一行,包含1个实数,表示吃完所有包子的时间。 样例输入4 3 2 20 30 15 2样例输出22.50数据规模原创 2020-09-12 16:18:48 · 165 阅读 · 0 评论 -
小猫爬山
小猫爬山翰翰和达达饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过W。每租用一辆缆车,翰翰和达达就要付1美元,所以他们想知道,最少需要付多少美元才能把这N只小猫都运送下山?输入格式第1行:包含两个用空格隔开的整数,N和W。第2..N+1行:每行原创 2020-07-14 22:14:36 · 304 阅读 · 0 评论 -
正整数N分成多个互不相同的整数和,乘积最大
将正整数 n 拆分为若干个互不相等的自然数之和,问如何拆分可以使得它们的乘积最大?输入格式一个正整数 n≤10000输出格式一行,包含若干个互不相等的自然数——乘积最大的一种拆分方案。这些自然数需从小到大输出,两个自然数之间用单个空格隔开。贪心策略:要使乘积做大,尽可能地将指定的n(n>4)拆分成从2开始的连续的自然数的和,如果最后有剩余的数,将这个剩余的数在优先考虑后...原创 2020-03-15 10:56:56 · 4870 阅读 · 2 评论 -
百钱百鸡
百钱百鸡百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用 100 文钱买 100 只鸡,公鸡、母鸡、小鸡各买多少只?本程序要求解的问题是:给定一个正整数 n,用 n 文钱买 n 只鸡,问公鸡、母鸡、小鸡各买多少只?输入格式 输入一个正整数 n。输出格式 如果有解,输出有多少种解(可以用正整数表示的解)。如果无解,输出"No Answer."。 数据范围: 1<...原创 2020-02-07 10:32:29 · 300 阅读 · 0 评论 -
除法表达式
除法表达式给出一个这样的除法表达式:X1/X2/X3/···/Xk,其中Xi是正整数。除法表达式应当按照从左到右的顺序求和,例如表达式1/2/1/2的值为1/4。但是可以在表达式中嵌入括号以改变计算顺序,例如表达式(1/2)/(1/2)的值为1输入首先输入一个N,表示有N组测试数据, 每组数据输入占一行,为一个除法表达式, 输入保证合法。使表达式的值为整数。k<=10000,X...原创 2020-01-28 20:49:23 · 922 阅读 · 0 评论 -
七夕祭(类似于糖果传递)
原题思路:这道题目思路和糖果传递思路类似,下面写出糖果传递题目糖果传递有n个小朋友坐成一圈,每人有a[i]个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。求使所有人获得均等糖果的最小代价。输入格式第一行输入一个正整数n,表示小朋友的个数。接下来n行,每行一个整数a[i],表示第i个小朋友初始得到的糖果的颗数。输出格式输出一个整数,表示最小代价。数...原创 2020-03-04 22:34:00 · 157 阅读 · 0 评论 -
最大子列和问题
输入一个 非空 整型数组,数组里的数可能为正,也可能为负。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。输入:[1, -2, 3, 10, -4, 7, 2, -5]输出:18思路:时间复杂度为O(n)开始想到的是贪心,动归没想到一维的,后来看别人博客看到了写的一维动归解法一:贪心...原创 2020-03-13 22:25:41 · 115 阅读 · 0 评论