蓝桥杯刷题冲刺 | 倒计时23天
创始人
2025-05-29 08:49:49
0

作者:指针不指南吗
专栏:蓝桥杯倒计时冲刺

🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾

文章目录

  • 1.有向图的拓扑序列
  • 2.纸张尺寸
  • 3.数位排序

1.有向图的拓扑序列

  • 题目

    链接: 848. 有向图的拓扑序列 - AcWing题库

    给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。

    请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。

    若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y) , x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。

    输入格式

    第一行包含两个整数 n 和 m。

    接下来 m 行,每行包含两个整数 x 和 y,表示存在一条从点 x 到点 y 的有向边 。

    输出格式

    共一行,如果存在拓扑序列,则输出任意一个合法的拓扑序列即可。

    否则输出 −1。

    数据范围

    1≤n,m≤10510^5105

    输入样例:

    3 3
    1 2
    2 3
    1 3
    

    输出样例:

    1 2 3
    
  • 题里面的对拓扑图的定义,虽然很简洁,但我通过网上搜索资料,找到更加易懂的定义

    • 一个有向图,如果图中有入度为 0 的点,就把这个点删掉,同时也删掉这个点所连的边。

    • 一直进行上面出处理,如果所有点都能被删掉,则这个图可以进行拓扑排序。


    如下图图转自acwing


    1.PNG

    开始时,图是这样的状态,发现A的入度为 0,所以删除A和A上所连的边,结果如下图:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-al1XMdM3-1678978409789)(C:/Users/lixue/Pictures/Saved%20Pictures/%E5%9B%BE%E5%9B%BE/55289_fe8bb6ddaa-2.png)]

    这时发现B的入度为 0,C的入度为 0,所以删除B和B上所连的边、C和C上所连的边,结果如下图:

    在这里插入图片描述

    这时发现发现D的入度为 0,所以删除D和D上所连的边(如果有就删),结果如下图:
    在这里插入图片描述

    这时整个图被删除干净,所有能进行拓扑排序。

  • 思路

    queue q;
    q.push(入度=0);//把所有入度=0的点,放进队列里面
    while(q.empty())
    {t=对头枚举所有t的出边 t->j删掉 t->j 这个边,d[j]--  //入度--if(d[j]==0)q.push(j); //入队
    }
    
  • 题解

    #include
    using namespace std;const int N=1e5+10;int h[N],e[N*2],ne[N*2],idx;
    int d[N];  //d表示入度
    int q[N],tt=-1,hh=0;int n,m;void add(int a,int b)  //定义一个边
    {e[idx]=b,ne[idx]=h[a],h[a]=idx++;
    }void topsort()  //拓扑排序函数
    {for(int i=1;i<=n;i++)  //遍历所有顶点,将入度=0的顶点,放进队列里面if(d[i]==0) q[++tt]=i;  //使用 ++tt的好处是,最后tt就是我们想要的数,没有多加1;while(hh<=tt)  //队列不空{int a=q[hh++];  //取出 队头for(int i=h[a];i!=-1;i=ne[i])  //删除以a为起点的边{int b=e[i];  //有一边是 a 指向 b;d[b]--; //删除a->b 的边,b的入度--if(d[b]==0)  //入度=0,入队q[++tt]=b; }}if(tt==n-1) //如果所有顶点都进入过 队列,则说明 这个图 有拓扑序列{for(int i=0;iscanf("%d%d",&n,&m);memset(h,-1,sizeof h);  while(m--){int a,b;scanf("%d%d",&a,&b);add(a,b);  //模板 默写一遍d[b]++;  //被指向的顶点的入度++}topsort();  //进行拓扑排序return 0;
    }
    
  • 补充

    • 有向无环图才会有拓扑序列,所以有向无环图又称为拓扑图,无向图没有,环也没有
    • 入度:有几条边进入某个顶点;出度:有几条边从某个顶点出去

2.纸张尺寸

  • 题目

    链接: 纸张尺寸 - 蓝桥云课 (lanqiao.cn)

    在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm ×× 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm ×× 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。

    输入纸张的名称, 请输出纸张的大小。

    输入格式

    输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。

    输出格式

    输出两行,每行包含一个整数,依次表示长边和短边的长度。

    样例输入1

    A0
    

    样例输出1

    1189
    841
    

    样例输入 2

    A1
    

    样例输出 2

    841
    594
    
  • 我的题解

    #include
    using namespace std;int l[10],w[10];  //用两个数组分别表示10种纸张的长、宽int main()
    {int a=1189,b=841;  //初始化l[0]=a,w[0]=b;for(int i=1;i<10;i++){l[i]=w[i-1];  //规律w[i]=l[i-1]/2;}char c;int x;scanf("%c%d",&c,&x);  //用 c 吃掉 A,没啥用printf("%d\n%d",l[x],w[x]);  //输出return 0;
    }
    
  • 反思

    没有认真审题,以为每一次都是对半剪,还好调式了一遍

    注意最后的输出格式,别最后好不容易算对了,结果格式错了,太冤了

    2022年 C 组的题,还是很简单的

3.数位排序

  • 题目

    链接: 数位排序 - 蓝桥云课 (lanqiao.cn)

    小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。

    例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。

    又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。

    给定正整数 n*,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?

    输入格式

    输入第一行包含一个正整数 n

    第二行包含一个正整数 m

    输出格式

    输出一行包含一个整数, 表示答案。

    样例输入

    13
    5
    

    样例输出

    3
    

    样例说明

    1 到 13 的排序为: 1,10,2,11,3,12,4,13,5,6,7,8,9。第 5 个数为 3 。

    评测用例规模与约定

    对于 30% 的评测用例, 1≤mn≤300 。

    对于 50% 的评测用例, 1≤mn≤1000 。

    对于所有评测用例, 1≤mn≤10610^6106 。

  • 我的题解

    #include
    using namespace std;const int N=1e6+10;struct node  //定义一个结构体,来放 每个数的原数和 各位和
    {int x;  //原数int y;  //各位数和
    }num[N]; int sum(int x)  //求x各位数 的和
    {int sum=0;while(x>0){sum+=x%10;x/=10;}return sum;
    }bool cmp(node a,node b) //结构体,重载
    {if(a.y!=b.y)  return a.yint n,m;cin>>n>>m;for(int i=1;i<=n;i++)  //初始化{num[i].x=i;num[i].y=sum(i);}sort(num+1,num+1+n,cmp); //进行排序  sort函数的重载cout<
  • 反思

    第一次做的时候,想到了 set 和 map ,但是有忘记怎么写了,就直接看了题解

    • 原来还可以使用结构体,确实简单了不少

    • sort函数的重载,这个还挺重要的,之前没有认真学习过,学完图论后,再系统地学习一个符号的重载

Alt

相关内容

热门资讯

藕遇骨香:一锅慢炖出的荆楚岁月... 在中华美食的星河中,排骨藕汤宛如一盏温润的明灯,以醇厚浓郁的汤头、粉糯清甜的莲藕和鲜嫩多汁的排骨,在...
白酒如何构筑品牌美学?国窖15... 文 | 李霞 过去几年,大众对非遗的关注与讨论呈现爆发式增长趋势。 《2025抖音非遗数据报告》显示...
啤酒之光!燕京啤酒获评2025... 5月25日,2025(第九届)中国品牌博鳌峰会在海南隆重召开,本次峰会以“献礼510中国品牌日 共筑...
辽宁特色椒盐皮皮虾,简单几步就... 在辽宁的海鲜江湖里,椒盐皮皮虾可是响当当的“明星选手”。它外壳酥脆、虾肉鲜嫩,带着浓郁的椒盐香气,让...
新疆烤包子逆袭!内馅加芝士,酥... 在新疆的街头巷尾,总能看到烤包子的身影。那一个个整齐地贴在馕坑内壁的烤包子,金黄酥脆的外皮,散发着诱...
香菜自由汉堡:加多少都不心疼,... 在美食的世界里,总有一些食材如同个性鲜明的主角,一出场就能牢牢抓住特定人群的味蕾,香菜便是其中之一。...
大山劳模开出的“早班车” 邓兰舟驾驶的公交车被挂牌“民主早班车”。 帮村民义务带货17年。本组图片由受访者提供 “艾常全:磷...
五毒月九毒日即将来临!这些养生... 内容来源:中国中医药报(有删改) 作者:王碧辉 山东省济宁市中医院 传统 阴历五月俗称毒月,其中有九...
酱王府 | 为什么要选择在端午... 当夏日的微风轻拂过大地,端午的脚步悄然临近。端午可不只是吃粽子、赛龙舟的热闹节日,对于酱香型白酒的酿...
猪蹄别拿来炖了!学这道酸酸辣辣... 天气只要是一热起来,就没有什么食欲,感觉什么都吃不下。 前几天做了一次鲜椒猪蹄,吃起来鲜香爽口,还特...
酒水免费畅饮!啤酒龙虾全城嗨吃... 异域风情小镇首届啤酒龙虾节 月畔湾潮玩夜生活开启 龙虾+啤酒+锅仔+卤味 最强啤酒龙虾节逛吃攻略已...
湛江甜蜜密码:薯粉嗦与薯粉粒的... 在中国大陆最南端的雷州半岛,湛江这座海滨城市被大海温柔环抱。这里的夏天,阳光热烈,海风咸湿,除了琳琅...
YOLOv5源码逐行超详细注释... 前言  本篇文章主要是对YOLOv5项目的验证部分。这个文件之前是叫test.py,后...
Vue3安装配置、开发环境搭建... Vue3安装配置、开发环境搭建(组件安装卸载)(图文详细) 本文目录&...
安徽省文化和旅游厅端午假期温馨... 端午假期 温馨提示 端午假期来临之际,安徽省文化和旅游厅温馨提示广大游客: 一、合理规划行程 出...
结对编程——一路忘川 结对编程——一路忘川 一、项目信息 项目内容这个作业属于哪个课程2023 年北航软件工程这个作业的要...
代码随想录之回溯(力扣题号) 77 组合 改了非常非常非常久!!不知道为什么用set去重就是没成功。...
“侨连五洲·七彩云南”——第2... 在全球化浪潮奔涌不息、区域合作日益紧密的当下,各国之间的经济交流与文化互鉴正以前所未有的深度和广度展...