蓝桥杯备战
从0到1冲刺蓝桥杯国赛
战士小小白
作者为在校大三学生,计划考研,每周更新博客,其内容包括但不限于数据结构、计算机组成原理、计算机网络、操作系统、算法、Java、python、数据库...
展开
-
动态规划——股票买卖5
给定一个长度为N的数组,数组中的第i个数字表示一个给定股票在第i天的价格。设计一个算法计算出最大利润。原创 2022-07-25 10:49:12 · 201 阅读 · 0 评论 -
股票买卖4
给定一个长度为N的数组,数组中的第i个数字表示一个给定股票在第i天的价格。设计一个算法来计算你所能获取的最大利润,你最多可以完成k笔交易。注意你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。一次买入卖出合为一笔交易。...原创 2022-07-25 10:18:58 · 267 阅读 · 0 评论 -
PAT甲级——签到与签出
每天第一个到机房的人负责开门,最后一个从机房离开的人负责锁门。现在,给定每个人的签到与签出记录,请你找出当天开门的人以及锁门的人分别是谁。原创 2022-07-21 22:09:17 · 260 阅读 · 0 评论 -
PAT甲级——拼写正确
给定一个非负整数N,你的任务是计算N的所有数字的总和,并以英语输出总和的每个数字。原创 2022-07-21 22:05:49 · 89 阅读 · 0 评论 -
PAT甲级——A + B 格式
计算a+b并以标准格式输出总和----也就是说,从最低位开始每隔三位数加进一个逗号(千位分隔符),如果结果少于四位则不需添加。原创 2022-07-21 22:01:47 · 212 阅读 · 0 评论 -
分组背包问题
有N组物品和一个容量是V的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是vij,价值是wij,其中i是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。...原创 2022-07-20 17:49:48 · 89 阅读 · 0 评论 -
动态规划例题——潜水员
潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸一个为氧气,一个为氮气。让潜水员下潜的深度需要各种数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如潜水员有5个气缸。如果潜水员需要5升的氧和60升的氮则总重最小为249(1,2或者4,5号气缸)。你的任务就是计算潜水员为了完成他的工作需要的气缸的重量的最低值。...原创 2022-07-19 15:42:56 · 233 阅读 · 0 评论 -
动态规划多重背包问题(二进制优化)
有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。原创 2022-07-19 10:37:31 · 204 阅读 · 0 评论 -
二维费用的背包问题(01背包)
有NN件物品和一个容量是VV的背包,背包能承受的最大重量是MM。每件物品只能用一次。体积是vivi,重量是mimi,价值是wiwi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。...原创 2022-07-18 15:15:11 · 97 阅读 · 0 评论 -
动态规划多重背包——庆功会(一维)
为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。原创 2022-07-18 14:46:15 · 280 阅读 · 0 评论 -
动态规划多重背包一维
有NN种物品和一个容量是VV的背包。第ii种物品最多有sisi件,每件体积是vivi,价值是wiwi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。原创 2022-07-18 14:35:47 · 280 阅读 · 0 评论 -
庆功会代码
为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。原创 2022-07-18 13:52:14 · 182 阅读 · 0 评论 -
多重背包问题代码模板
有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。原创 2022-07-18 13:14:08 · 151 阅读 · 0 评论 -
完全背包问题代码模板
接下来有NN行,每行两个整数vi,wivi,wi,用空格隔开,分别表示第ii种物品的体积和价值。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。有NN种物品和一个容量是VV的背包,每种物品都有无限件可用。完全背包第一层循环从小到大枚举个数,第二层循环从小到大枚举体积。第ii种物品的体积是vivi,价值是wiwi。输出一个整数,表示最大价值。...原创 2022-07-16 22:34:57 · 135 阅读 · 0 评论 -
日期——贵州大学考研机试题目
今天是20122012年44月1212日星期四,编写程序,输入今天开始到1212月3131日之间的任意日期,输出那一天是星期几。第二行包含一个整数dd,表示询问日期的为该月的第几天。共两行,第一行包含一个整数mm,表示询问日期的月份。输出询问日期是星期几。注意,要用英文表示。...原创 2022-07-16 11:02:19 · 158 阅读 · 0 评论 -
ACM/蓝桥杯动态规划篇——背包问题
特点:每种物品只有一个,只有放和不放两种情况做法:第一层循环从前往后遍历物品,第二层循环从后往前遍历体积特点:每种物品有无限个做法:第一层循环从前往后遍历物品,第二层循环从前往后遍历体积特点:物品有一定的个数,介于01背包和完全背包之间做法:第一层循环从前往后遍历物品种类,第二层循环从前往后遍历背包容量,第三层循环从前往后遍历物品数量...原创 2022-07-12 21:52:19 · 625 阅读 · 0 评论 -
ACM/蓝桥杯基础算法——二分
整数二分例题——数的范围题目描述题目分析分析:先找最左边的x,check函数为要找的整数区间,在x的右边,所以是q[mid] >= x, x在mid的左边,所以x所在区间为[l, mid]。再找最右边的x,check函数为要找的整数区间,在x的左边,所以是q[mid] ...原创 2022-07-11 21:42:36 · 152 阅读 · 0 评论 -
算法竞赛动态规划篇——最长上升子序列模型(一)
分析:最长上升子序列模型经典问题,经典解法。怪盗基德的滑翔翼题目描述思路分析分析:此题为最长上升子序列模型的变形,通过分析可以发现其实就是正向求一边最长上升子序列,反向求一便最长上升子序列。再进一步就是从正向开始求一边最长上升子序列和最长下降子序列。登山题目描述思路分析与怪盗基德不同,怪盗基德是求最长上升也行,最长下降也行,这道题就不能完全从头开始求最长下降,因为这样所求的g[i]是从左边开始的,而我们要的是从右边开始的,所以必须从右边开始求。用两个数组分别求从左边的最长上升和从右边的最原创 2022-07-08 16:26:18 · 269 阅读 · 0 评论 -
算法竞赛动态规划篇——数字三角形模型
思路分析分析:本题是一道非常经典的dp问题,数字三角形问题可以从上往下走来寻找最大路径,也可以从下往上走来寻找最大路径,我们可以发现从上往下走我们要分析每个数是怎么走到这里的,比如0这个数字,只能从左边走过来,右边走不过来,这样我们就多了许多特判的问题,增加了代码的复杂性。我们再看从下往上走的情况,再看0这个数字,它可以走到他下面的任何两个4,这就省略了边界的问题,所以这道题目采用从下到上的方式最为简单,事实上,这也是这道题目的最优解,同学们做题目做多了自然也就掌握了。注:个人认为下标从0开始更好写代码原创 2022-07-08 00:52:25 · 294 阅读 · 0 评论 -
蓝桥杯每日一练——疯狂的采药(完全背包)
题目链接疯狂的采药 - 洛谷https://www.luogu.com.cn/problem/P1616题目描述LiYuxiang 是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值原创 2022-04-19 17:14:15 · 237 阅读 · 0 评论 -
蓝桥杯每日一练——P1048 [NOIP2005 普及组] 采药
题目链接[NOIP2005 普及组] 采药 - 洛谷https://www.luogu.com.cn/problem/P1048题目描述辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总原创 2022-04-19 10:19:31 · 818 阅读 · 0 评论 -
蓝桥杯——NASA的食物计划(01背包)
题目链接NASA的食物计划 - 洛谷https://www.luogu.com.cn/problem/P1507题目描述题目分析01背包问题C++实现#include<iostream>using namespace std;int a[51], b[51], c[51];//题目中有三个变量就设三个变量;int dp[501][501];int main(){ int i, j, l, m, n, k; cin >>...原创 2022-04-18 20:10:49 · 499 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——目标和
题目链接力扣https://leetcode-cn.com/problems/target-sum/题目描述题目分析每个元素仅取一次,01背包变形C++实现class Solution {public: int findTargetSumWays(vector<int>& nums, int target) { int sum = 0; for(int i = 0; i < nums.size...原创 2022-04-18 19:27:05 · 167 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——最后一块石头的重量Ⅱ
题目链接力扣https://leetcode-cn.com/problems/last-stone-weight-ii/题目描述题目分析这道题目其实是01背包的一个变形,做过分割等和子集的话就很容易想到,解法几乎完全一样,就多了一个差值比较而已,大家可以看看下面这篇【从0到1冲刺蓝桥杯国赛】每日一练——分割等和子集_战士小小白的博客-CSDN博客力扣https://leetcode-cn.com/problems/partition-equal-subset-sum/题目描述...原创 2022-04-18 19:00:11 · 164 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——分割等和子集
力扣https://leetcode-cn.com/problems/partition-equal-subset-sum/题目描述题目分析这道题其实用暴力也能做,回溯来实现,但是时间复杂度太高,AC不了;还是dp来做比较合适,这道题其实可以转化为01背包来做,背包的容量为所有数字和的一半,如果把背包装满了,那么返回true,否则false;在开始之前来个判断,如果数组所有元素之和是奇数,那么一定返回false;C++实现class Solution {publi...原创 2022-04-18 16:59:52 · 179 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——螺旋矩阵
力扣https://leetcode-cn.com/problems/spiral-matrix-ii/class Solution {public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定义一个二维数组 int startx.原创 2022-04-12 21:45:43 · 213 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯】每日一练——扩展欧几里得算法
求ab mod n因为a mod n × b mod n可能超过int 所以用long long 保存中间值// ab mod nint mul_mod(int a, int b, int n) { a %= n, b %= n; return (int)((long long)a * b % n);}大整数取模输入正整数 n 和 m ,输出 n mod m 的值// n mod mscanf("%s%d", n, &m);int len = strlen(n..原创 2022-04-04 22:08:37 · 409 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练
目录欧几里得算法质数筛欧拉函数矩阵乘法的实现欧几里得算法欧几里得算法又称辗转相除法。该算法用来快速计算2个整数的最大公约数公式:gcd(a,b)=gcd(b,a mod b)int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b);}计算最小公倍数也通过gcd函数来实现#include<iostream>using namespace std...原创 2022-04-03 21:58:07 · 840 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——向数组中追加 K 个整数
向数组中追加k个整数https://leetcode-cn.com/problems/append-k-integers-with-minimal-sum/题目描述:题目分析:寻找空挡,第一个是从1到数组第一个数减1的空挡,第二种是数组中每个数之间的空挡,第三种是数组最后一个数加1到无穷大之间的空挡。class Solution {public: long long calc(int &k, long long l, long long r){ ...原创 2022-03-31 15:47:29 · 443 阅读 · 7 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——零钱兑换
零钱兑换https://leetcode-cn.com/problems/coin-change/题目描述:给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回-1 。你可以认为每种硬币的数量是无限的。解题思路:C++实现:class Solution {public: int coinChange(vector<...原创 2022-03-31 12:31:45 · 215 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一题——最佳买卖股票时期含冷冻期
最佳买卖股票时期含冷冻期https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/题目描述:C++实现:class Solution {public: int maxProfit(vector<int>& prices) { if (prices.empty()) { return 0; } ...原创 2022-03-30 11:48:49 · 402 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——最长递增子序列
最长递增子序列https://leetcode-cn.com/problems/longest-increasing-subsequence/题目描述:class Solution {public: int lengthOfLIS(vector<int>& nums) { int n = (int)nums.size(); if (n == 0) { return 0; } .原创 2022-03-30 11:33:09 · 399 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——完全平方数
完全平方数https://leetcode-cn.com/problems/perfect-squares/题目描述:思路分析:四平方和定理class Solution {public: // 判断是否为完全平方数 bool isPerfectSquare(int x) { int y = sqrt(x); return y * y == x; } // 判断是否能表示为 4^k*(8m+7) bo...原创 2022-03-30 11:27:54 · 188 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——丑数Ⅱ
丑数Ⅱhttps://leetcode-cn.com/problems/ugly-number-ii/题目描述:给你一个整数n,请你找出并返回第n个丑数。丑数就是只包含质因数2、3和/或5的正整数。思路分析:最小堆实现:class Solution {public: int nthUglyNumber(int n) { vector<int> factors = {2, 3, 5}; ...原创 2022-03-30 10:36:12 · 121 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——打家劫舍Ⅱ
打家劫舍Ⅱhttps://leetcode-cn.com/problems/house-robber-ii/题目描述:思路分析:与打家劫舍相同,只不过分析两段范围,取max。C++实现:class Solution {public: int robRange(vector<int>& nums, int start, int end) { int first = nums[start], second = max(n...原创 2022-03-30 10:21:29 · 191 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——打家劫舍
打家劫舍https://leetcode-cn.com/problems/house-robber/题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。思路分析:C++实现:class Solution {publi...原创 2022-03-30 10:13:32 · 141 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——乘积最大子数组
成绩最大子数组https://leetcode-cn.com/problems/maximum-product-subarray/题目描述:给你一个整数数组nums,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。思路分析:求最大子数组,子数组中可以有负数,有两个负数就可以,而且负数越大,再出现负数的时候乘积就越大。C++实现:class Solution {public: int maxPr...原创 2022-03-30 09:43:21 · 741 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——盛最多水的容器(双指针)
盛最多水的容器https://leetcode-cn.com/problems/container-with-most-water/题目描述:思路分析:本题采用双指针,看代码就可以知道思路C++实现:class Solution {public: int maxArea(vector<int>& height) { int l = 0, r = height.size() - 1; int ans = 0...原创 2022-03-29 22:22:29 · 217 阅读 · 0 评论 -
【从0到1冲刺蓝桥杯国赛】每日一题——买卖股票的最佳时机
买卖股票的最佳时机https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/题目描述:思路分析:这道题其实非常简单,尽管它是股票买卖第一题的变形(专栏里的前一题),其实想要获得最大价值,只要在局部最低点购入,在离它最近的顶峰期卖出,再在下降处购买,再在上升期卖出,所以就知道了,其实我们只需要计算上升期的起始点和终止位置的差就行,累加起来就是最大利益。有一个小知识点,不是所有的最低点都要购买,还要看它在之后...原创 2022-03-29 10:45:00 · 450 阅读 · 2 评论 -
【从0到1冲刺蓝桥杯国赛】每日一练——股票问题
股票问题https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/题目描述:思路分析:C++实现:class Solution {public: int maxProfit(vector<int>& prices) { int n = prices.size(); if (n == 0) return 0; // 边界条件 ...原创 2022-03-29 10:26:39 · 468 阅读 · 0 评论