自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯 PREV-25 城市建设(最小生成树)

题目链接:PREV-25 城市建设思路:1.先考虑没有码头的情况,使用kruskal算得最小生成树,但是需要检查一下所有点之间是否连通;2.而后考虑建码头的情况,所谓建码头的城市均可以互相连通,我们可以设立一个虚点,城市到虚点的边权即是建造码头的费用,再使用kruskal算法算得最小生成树的最小权值;3.我们取两种情况的最小值(注意第一种情况要保证连通);4.在写最小生成树的时候...

2020-02-29 17:32:17 216

原创 蓝桥杯 PREV-42 九宫幻方(dfs)

题目链接:PREV-42 九宫幻方思路:直接dfs搜索所有可能,记录能形成幻方的矩阵即可;代码:#include<bits/stdc++.h>using namespace std;int cnt, vst[10];vector<vector<int> > mat(3, vector<int>(3)), ans(3, ve...

2020-02-29 16:02:22 161

原创 蓝桥杯 PREV-35 正则问题

题目链接:PREV-35 正则问题思路:题目不解释一下压根不知道x () |这些符号是做什么的…简单解释:x就是代表一个字符,题目要求最长字符数;()就是起到计算中的优先级作用;|代表或,既然取最长我们就需要找到或运算左右最长的字符;举例:1.xxx|xx就是3;2.(xxx)xx是5;3.(xxx|x)xx也是5;知道意思之后使用递归即可求得最长字符串;代码:...

2020-02-28 20:01:40 152

原创 蓝桥杯 PREV-50 对局匹配(贪心)

题目链接:PREV-50 对局匹配思路:1.我们将分数模kkk相同的放在一组,我们知道只有同一组的人才有可能相互匹配到;2.我们遍历每一组,按公差为kkk的分数顺序将该分数的人数组成一个序列,例如所有分数为[2,2,4,5,3,4,5,1,8][2,2,4,5,3,4,5,1,8][2,2,4,5,3,4,5,1,8],kkk为222,则模kkk为000的一组分数为[2,2,4,4,...

2020-02-27 15:42:16 233

原创 蓝桥杯 PREV-44 青蛙跳杯子(bfs)

题目链接:PREV-44 青蛙跳杯子思路:我们采用搜索的方式,寻找每一种情况的所有下一种可能情况,并用map标记已经遍历过的情况;像此种类似寻求最短路的搜索用bfs更加高效;代码:#include<bits/stdc++.h>using namespace std;map<string, int> vst;string s, t;queue&...

2020-02-27 13:34:58 153

原创 蓝桥杯 PREV-39 日期问题

题目链接:PREV-39 日期问题思路:1.将题目所给的三种格式都尝试一下;2.注意排序输出;3.算闰年遵守“四年一闰,百年不闰,四百再闰”的规则(闰年2月29天,平年2月28天);4.注意计算得出的重复日期要删去;代码:#include<bits/stdc++.h>using namespace std;struct date { int y, m...

2020-02-26 16:54:50 175

原创 蓝桥杯 PREV-37 分巧克力(二分)

题目链接:PREV-37 分巧克力思路:1.我们知道高为hhh,宽为www的矩形最多能分出[hd]+[wd][\frac{h}{d}]+[\frac{w}{d}][dh​]+[dw​]个d∗dd*dd∗d的正方形(其中[ ]为向下取整函数);2.然后二分答案,依次判断是否可行即可;代码:#include<bits/stdc++.h>using namespace...

2020-02-25 15:58:53 181

原创 蓝桥杯 PREV-31 小朋友排队(树状数组)

题目链接:PREV-31 小朋友排队思路:分析题意不难理解出某个人的移动次数为(排在他前面比他高的人数+排在他后面比他矮的人数);使用树状数组可以高效地计算得到上面两项数据(使用时注意将每个人的身高加1,因为有0身高的存在);每个人的不高兴程度就是ai(ai+1)2\frac{a_i(a_i+1)}{2}2ai​(ai​+1)​,其中aia_iai​代表此人的移动次数;代码:...

2020-02-25 15:36:32 190

原创 蓝桥杯 PREV-32 分糖果(模拟)

题目链接:PREV-32 分糖果思路:按题意模拟即可代码:#include<bits/stdc++.h>using namespace std;int n, a[105], ans, b[105];inline void run() { for(int i = 0; i < n; i++) { a[i] >>= 1; b[(i +...

2020-02-24 14:09:25 141

原创 蓝桥杯 PREV-33 兰顿蚂蚁

题目链接:PREV-33 兰顿蚂蚁思路:按照题意模拟即可代码:#include<bits/stdc++.h>using namespace std;bool a[105][105];int m, n, x, y, s, k;int mx[4] = {-1, 0, 1, 0}, my[4] = {0, 1, 0, -1};inline void move(...

2020-02-24 13:19:24 124

原创 蓝桥杯 PREV-26 最大子阵(二维最大子序列和)

题目链接:PREV-26 最大子阵思路:首先我们需要学会一维最大子序列和(这里就不多赘述啦)此题我们枚举这个子矩阵的上底和下底即原矩阵的两列,对于原矩阵的每一列我们都用前缀和数组记录下来;假设现在枚举第r和第rr列,我们设立数组v(下标从1到m),v[i]的值即为原矩阵a[r][i] + a[r + 1][i] + ... + a[rr][i],此时我们只需求一维数组v的最大子序列...

2020-02-23 16:13:53 215

原创 蓝桥杯 PREV-27 蚂蚁感冒

题目链接:PREV-27 蚂蚁感冒思路:仔细思考可知我们可以完全忽略碰面掉头这个条件;那么我们只需要统计初始感冒蚂蚁往哪个方向、初始感冒蚂蚁左侧蚂蚁往左往右方向蚂蚁数量、初始感冒蚂蚁右侧往左往右蚂蚁数量即可;代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest fr...

2020-02-23 15:01:16 170

原创 蓝桥杯 PREV-41 Excel地址

题目链接:PREV-41 Excel地址思路:当成进制来理解即可;代码:#include<bits/stdc++.h>using namespace std;int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin); #endif int n; cin >> n; strin...

2020-02-22 20:40:33 172

原创 蓝桥杯 PREV-23 数字游戏(等差数列)

题目链接:PREV-23 数字游戏思路:根据题意我们易计算出第i(0≤i<T)i(0\leq i<T)i(0≤i<T)次说出的数字为[1+in(in+1)2]%k[1+\frac{in(in+1)}{2}]\%k[1+2in(in+1)​]%k,我们的目标即让iii逐个遍历,然后求和即可;但是略微分析可知,这个数字在计算的过程中达到102410^{24}1024数量...

2020-02-22 19:32:01 552

原创 蓝桥杯 PREV-34 矩阵翻硬币(大数)

题目链接:PREV-34 矩阵翻硬币思路:1.由题意可知,将所有硬币都进行一次Q操作后,被翻转奇数次的硬币是反面朝上的;2.定义f(x)f(x)f(x)为正整数xxx的约数个数,那么坐标为(a,b)(a,b)(a,b)的硬币会被翻转f(a)∗f(b)f(a)*f(b)f(a)∗f(b)次,我们知道只有奇数乘以奇数结果才会是奇数,因此当且仅当f(a)f(a)f(a)与f(b)f(b)f...

2020-02-22 14:11:28 206

原创 蓝桥杯 PREV-49 发现环(链表)

题目链接:PREV-49 发现环思路:1.我们可以采用依次去掉度数为1的点的方法来寻找图中的环;2.遍历的过程中可以采用链表方式,以减少时间开销;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e6 + 5;int n, nex[maxn], deg[maxn];vector...

2020-02-20 15:27:36 153

原创 蓝桥杯 PREV-21 回文数字

题目链接:PREV-21 回文数字思路:dfs出所有情况即可代码:#include<bits/stdc++.h>using namespace std;int n;int a[3], b[3], s;vector<int> v;inline void dfsa(int p) { if(p == 3) { if(s == n) v.pu...

2020-02-20 14:41:31 130

原创 蓝桥杯 PREV-46 填字母游戏(博弈)

题目链接:PREV-46 填字母游戏思路:此题博弈的思想就是每个人寻找自己每一步的最优解,我们用dfs模拟博弈过程;int dfs()返回某方此步骤的最优解,遍历所有空格,模拟所有可能然后取里面最优的一个作为函数返回值;在游戏结束之前每个人每个步骤填一个空格然后递归地将剩下的局面交给对方;为了减少复杂度我们采用map容器进行记忆化搜索,保存该局面的最优结果;代码:#inclu...

2020-02-19 17:21:59 293

原创 蓝桥杯 PREV-30 波动数列(0/1背包)

题目链接:PREV-30 波动数列思路:设这个数列首项为AAA,由题意可知总和一定可以表示成nA+xa−yb(x+y=n(n−1)2)nA+xa-yb(x+y=\frac{n(n-1)}{2})nA+xa−yb(x+y=2n(n−1)​)的形式,其中xxx为+a+a+a操作的次数和,yyy为−b-b−b操作的次数和;那么我们有nA=s−xa+yb(x+y=n(n−1)2&0≤...

2020-02-19 15:05:20 219

原创 蓝桥杯 PREV-47 区间移位(二分+贪心)

题目链接:PREV-47 区间移位思路:1.既然是寻得长度的最优解,那我们二分答案便可;2.对于checkcheckcheck函数,我们自然需要检查当前的二分值是否合乎要求,即在lenlenlen长度内能否将这些线段拼凑好;3.博主首先采用左端点越小优先级越高的贪心方法,只有80分,该思路的问题就是过于想当然,如果是求线段移动总长度之和最小,我们可以采用这种方式;4.我们从左往右...

2020-02-18 22:37:27 350

原创 蓝桥杯 PREV-15 格子刷油漆(dp)

题目链接:PREV-15 格子刷油漆思路:这个2∗n2*n2∗n的城墙,我们将四个端点和非端点分开考虑;|------------------------------------------------------------------------------------|我们设dp[n]dp[n]dp[n]为:有nnn列时,从某一端点为起点,一共多少种刷漆方法;从端点开始我们...

2020-02-17 16:59:18 278

原创 蓝桥杯 PREV-12 危险系数

题目链接:PREV-12 危险系数思路:找到两点间的所有路径,结点出现次数和路径条数相等的(即每一条路径都出现的结点)即为关键点;统计这样的结点个数即可;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1005;int n, m, s, t, cnt, par[maxn], num...

2020-02-17 14:13:16 133

原创 蓝桥杯 PREV-11 横向打印二叉树

题目链接:PREV-11 横向打印二叉树思路:首先递归建立二叉搜索树;用字符串数组保存横向打印的二叉树,然后按层递归打印,注意打印的细节即可;代码:#include<bits/stdc++.h>using namespace std;string s[205];const int maxn = 1e4 + 5;int lf[maxn], rt[maxn]...

2020-02-16 15:37:05 230

原创 蓝桥杯 PREV-10 幸运数

题目链接:PREV-10 幸运数思路:用单链表模拟即可代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e6;int nex[maxn];int main() {#ifdef MyTest freopen("Sakura.txt", "r", stdin);#endif...

2020-02-16 14:32:14 158

原创 蓝桥杯 PREV-9 大臣的旅费(求树直径)

题目链接:PREV-9 大臣的旅费思路:根据题意,该国路线图是一颗树,则题意是求此树的直径;用两次dfs/bfs即可求得一棵树的直径;代码:#include<bits/stdc++.h>using namespace std;struct edge { int to, cost; };vector<vector<edge> > G;...

2020-02-15 16:43:26 230

原创 蓝桥杯 PREV-8 买不到的数目

题目链接:PREV-8 买不到的数目思路:结论:a,b为质数,x,y为非负整数,则ax+by最大不能表示的数为ab-a-b,因此ab-a-b即为答案;但是题目似乎并没有说a,b为质数?所以严谨一点还是用动态规划吧;代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1e7 + 99;...

2020-02-15 16:09:21 161

原创 蓝桥杯 PREV-6 翻硬币

题目链接:PREV-6 翻硬币思路:题目似乎并没有提到第一种状态不能转化到第二种状态的情况啊…实际上两种状态不相同的位置总数如果是奇数的话就没办法相互转化…题目也没说给定的两种状态一定可以相互转化,那我们就默认可以好了…我们记录所有正反不相同的硬币在字符串中出现的位置,然后贪心地去计数即可;代码:#include<bits/stdc++.h>using name...

2020-02-14 18:20:51 250

原创 蓝桥杯 PREV-4 剪格子

题目链接:PREV-4 剪格子思路:我们从左上角的格子开始dfs,途中记录sum和遍历的格子数,稍微剪枝即可;代码:#include<bits/stdc++.h>using namespace std;const int inf = 1 << 30;int m, n, a[15][15], sum, ans;bool vst[15][15];...

2020-02-14 14:23:59 152

原创 蓝桥杯 PREV-53 分考场(DFS)

题目链接:PREV-53 分考场思路:假设我们目前有ans个考场,我们dfs一下,检查这么多考场够不够用;ans个考场,分为已经有人在的考场和没人在的考场,对于每一个人,可以分配到有人的和没有人的,只不过有人的考场需要逐个检查是不是朋友;最后我们让ans从1开始逐个递增,寻找到最少考场数即可;//刚开始博主用的二分ans,不知为何只有60…递增就是满分代码:#include...

2020-02-10 15:38:10 168

原创 蓝桥杯 PREV-54 合根植物(并查集)

题目链接:PREV-54 合根植物思路:并查集裸题代码:#include<bits/stdc++.h>using namespace std;const int maxn = 1000 * 1000;int par[maxn], rk[maxn], tot;void init_set(int n) { tot = n; for(int i = 1; i &...

2020-02-09 15:05:14 139

原创 蓝桥杯 PREV-40 k倍区间

题目链接:PREV-40 k倍区间思路:我们记sum[]为该序列的前缀和数组,则满足sum[i] % k == sum[j] % k的一对i, j (i <= j),有子序列a[i + 1] ... a[j]之和为k的倍数,我们只需统计每个sum[i] % k的数值,最后进行计数即可;代码:#include<bits/stdc++.h>using names...

2020-02-08 17:46:38 227

原创 蓝桥杯 PREV-52 小数第n位(快速幂)

题目链接:PREV-52 小数第n位思路:根据题意可知答案为int(a∗10n−1%b∗1000/b)int(a*10^{n-1}\%b*1000/b)int(a∗10n−1%b∗1000/b)由于n较大,可用快速幂求取代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;l...

2020-02-08 17:09:02 160

原创 团体程序设计天梯赛 L3-013 非常弹的球 (30分)

题目链接:L3-013 非常弹的球 (30分)思路:我们由动能公式可以求得速度v=2Emv=\sqrt{\frac{2E}{m}}v=m2E​​设ang为θ\thetaθ,则水平速度为vx=cos⁡θ2Emv_{x}=\cos\theta\sqrt{\frac{2E}{m}}vx​=cosθm2E​​,竖直速度为vy=sin⁡θ2Emv_{y}=\sin\theta\sqrt{\fr...

2020-02-05 22:15:37 283

原创 蓝桥杯 PREV-5 错误票据

题目链接:PREV-5 错误票据思路:等差数列求和再相减即可得到缺失的;重复的用map记录下即可;代码:#include<bits/stdc++.h>using namespace std;typedef map<int, int>::iterator IT;int main() {#ifdef MyTest freopen("Sakur...

2020-02-05 18:37:49 265

原创 2020牛客寒假算法基础集训营1

题目链接:https://ac.nowcoder.com/acm/contest/3002A题思路:既然三角形面积为1且有一条边平行于坐标轴,那么这条边为1或者2,我们枚举1平行于x/y轴的情况,加上2平行于x/y轴的情况,再减去(重复的)1、2都平行于坐标轴的情况即是答案;注意计算的过程中每一步都需要取余;代码:#include<bits/stdc++.h>...

2020-02-04 19:29:34 1424 2

原创 团体程序设计天梯赛 L3-017 森森快递 (30分)(线段树区间更新)

题目链接:L3-017 森森快递 (30分)思路:题意可以理解为按一定顺序选取这些线段,每选取一个线段,求出该区间最小值,然后区间内都减去这个最小值,依次取下一个线段,我们需要求减去值的总和的最大值;想象一下,每次选取完一段有效线段后,总区间内将会出现1或多个0值,这将导致其它覆盖这些端点的且未选取线段会失效(即选取了区间最小值为0,即不能运输货物);我们采用贪心的思想,使这些0值...

2020-02-03 21:35:53 696

原创 蓝桥杯 PREV-7 连号区间数

题目链接:PREV-7 连号区间数思路:5w的数据用O(n2)O(n^2)O(n2)算法能过,测试数据也太水了吧…至于并查集,没研究出来和并查集有啥关系…代码:#include<bits/stdc++.h>using namespace std;int main() { int n, ans = 0; scanf("%d", &n); vect...

2020-02-03 16:29:58 241

原创 蓝桥杯 PREV-3 带分数(dfs)

题目链接:PREV-3 带分数思路:根据题意我们需要找到满足(n−x)=z/y(n - x) = z / y(n−x)=z/y的(x,y,z)(x, y, z)(x,y,z)三元组解的个数,且x,y,zx,y,zx,y,z中所有数字不相同且刚好是111到999的一个排列;1.我们需要知道xxx的位数不能超过nnn(一个数xxx的位数可以用lg(x)+1lg(x)+1lg(x)+1计...

2020-02-03 14:52:59 209

原创 蓝桥杯 PREV-2 打印十字图

题目链接:PREV-2 打印十字图思路:我们注意到我们只需要求出整张图的1/4个矩形,即可通过对称求出整张图;以整张图的中心为坐标原点, 我们以右上角的1/4矩形为例,层数i从0开始一直到n,第i层的轨迹就是从(0,2∗i+2)(0, 2 * i + 2)(0,2∗i+2)开始往右打印2∗i+12 * i +12∗i+1个$,然后依次往下、往下、往右打印三个$,然后往右挪一格,从该格...

2020-02-02 14:54:45 229

空空如也

空空如也

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

TA关注的人

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