引言

好像博客好久没更新了 哈哈哈哈哈
趁现在有空更新一波
不知道还有没有人看
确实该记录一下每天做了什么了
不然感觉有些浑浑噩噩了

比赛介绍

全称: 蓝桥杯全国软件和信息技术专业人才大赛
蓝桥杯 实话 省赛就是花钱拿奖
去年啥都不懂 刚进大学还是个大一小萌新
C还没用熟就混了个省二回来
确实感受到了比赛比较水
不愧是暴力杯
不过因为学校比较low的原因
没有组织ACM等比赛
所以蓝桥是我们能参加的可以说比较高的赛事了吧
毕竟一流的二本 二流的一本名不虚传 hhhh
今年准备再打一下试试
看看能不能进国赛
说实话 大一以来做这么多硬件的东西
对算法这一块还真的没做多少

题目

填空题

1. 计算机存储中 15.125GB是多少MB

这题好像根本没挖坑
如果挖坑可以把大写的B(Byte字节)改成小写的b(bit比特)
估计跳进去的人才会有吧
没啥好说的

题解: 15.125 * 1024
打开计算器敲一下就有了

2. 两个二进制数11110011101和1111101001的和是多少?请用二进制表示

没啥好说的
打开计算器
点开程序员模式-二进制
手敲一遍即得到答案

题解: 自己算去吧

3. 在2019个有区别的球中选3个球放在一个盘子里,请问有多少种选法?

蓝桥杯果然是高中生刚来大学来虐大学生的
哈哈哈哈哈
组合数公式不用问了吧
好多你们的学长学姐都忘了

题解: C(2019, 3)

4. 一个包含有2019个结点的无向连通图,最少包含多少条边?

自己想一下
当然是一条链最少了
此时这个图退化成一个树了

题解: n - 1 = 2018

程序题

5. 递增三元组

问题描述
在数列 a[1], a[2], ..., a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a[i], a[j], a[k] 为一组递增三元组,a[j]为递增三元组的中心。
给定一个数列,请问数列中有多少个元素可能是递增三元组的中心。
输入格式
输入的第一行包含一个整数 n。
第二行包含 n 个整数 a[1], a[2], ..., a[n],相邻的整数间用空格分隔,表示给定的数列。
输出格式
输出一行包含一个整数,表示答案。
样例输入
5
1 2 5 3 5
样例输出
2
样例说明
a[2] 和 a[4] 可能是三元组的中心。
评测用例规模与约定
对于 50% 的评测用例,2 <= n <= 100,0 <= 数列中的数 <= 1000。
对于所有评测用例,2 <= n <= 1000,0 <= 数列中的数 <= 10000。

很容易理解的是
一个数 只要左边有比它小的
右边有比它大的 即符合
所以暴力解法就是直接暴力 没啥好说的
dp解法: 维护两个数组
分别是最长上升子序列的长度
和最长下降子序列的长度(倒序搜索)
转移方程: dp[i] = max(dp[i], dp[j] + 1)

题解: 代码略

6. 逆序对

问题描述
在数列 a_1, a_2, ..., a_n中,如果 a_i 和 a_j 满足 i < j 且 a_i > a_j,则称为一个逆序数对。
给定一个数列,请问数列中总共有多少个逆序数对。
输入格式
输入的第一行包含一个整数 n。
第二行包含 n 个整数 a_1, a_2, ..., a_n,相邻的整数间用空格分隔,表示给定的数列。
输出格式
输出一行包含一个整数,表示答案。
样例输入
6
3 1 5 2 3 5
样例输出
4
评测用例规模与约定
对于 50% 的评测用例,1 <= n <= 100,0 <= 数列中的数 <= 1000。
对于所有评测用例,1 <= n <= 1000,0 <= 数列中的数 <= 10000。

这题比较有意思
据学长说是字节跳动的一面题 hhhh
学长说写暴力的直接滚蛋
一般可以想到归并排序
不过能想到树状数组的估计也很少了吧
哪天专门写一篇介绍树状数组 (二叉索引树)
用暴力这题绝对超时 (比如菜鸡的我)

题解: 1. 归并排序
边归并边统计逆序数对的数量
统计完整个数组也有序了 挺方便的方法
题解: 2. 树状数组
学长居然说
“树状数组我校估计不超过十五个人听说过”
“(虽然现在高中竞赛生册那已经开始学树链剖分了”
(贴学长原话不会被打吧 hhhh)

7. 反倍数

问题描述
给定三个整数 a, b, c,如果一个整数既不是 a 的整数倍也不是 b 的整数倍还不是 c 的整数倍,则这个数称为反倍数。
请问在 1 至 n 中有多少个反倍数。
输入格式
输入的第一行包含一个整数 n。
第二行包含三个整数 a, b, c,相邻两个数之间用一个空格分隔。
输出格式
输出一行包含一个整数,表示答案。
样例输入
30
2 3 6
样例输出
10
样例说明
以下这些数满足要求:1, 5, 7, 11, 13, 17, 19, 23, 25, 29。
评测用例规模与约定
对于 40% 的评测用例,1 <= n <= 10000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000,1 <= a <= n,1 <= b <= n,1 <= c <= n。

这题没啥好说的 就是写个check函数 然后把值扔进去
不过我做了个超简单的dp(其实总觉得dp就是空间换时间)
筛了一些数 刚开始想了gcd 好像没什么特殊发现就没写上去

题解: 确定入门题还需要题解?

8. 前序距离

问题描述
给定一个序列 a_1, a_2, ..., a_n。其中 a_1 是最大的数,没有其他数与 a_1 相等。
对于从第二个数开始的每个数 a_i,请找到位置在 a_i 之前且比 a_i 大的,位置上距离 a_i 最近的数 a_j。称 i-j 为 a_i 的前向距离。
对于给定的序列,请求出所有数的前向距离之和。
输入格式
输入的第一行包含一个整数 n,表示序列的长度。
第二行包含 n 个正整数,为给定的序列。
输出格式
输出一个整数,表示序列中所有数的前向距离之和。
样例输入
8
9 1 3 5 2 7 6 3
样例输出
14
样例说明
序列中从第二项开始的前向距离依次为:
1, 2, 3, 1, 5, 1, 1
和为14。
数据规模和约定
对于70%的评测用例,1 <= n <= 1000;
对于所有评测用例,1 <= n <= 100000,a_1 <= 1000000。
请注意答案可能很大,可能需要使用 long long 来保存。

答案可能很大 emm 还是用了long 总觉得Java打这种一般用不上大整数类
除非一些题明确写了高精度计算 不过这样的题一般我也做不出来 太菜了
这题也需要优化 暴力肯定超时
学长说像“合唱队形”
还是需要维护一个跳转表
避免n!(话说阶乘复杂度的代码真的能跑完吗)的匹配情况
感觉这样的匹配表很像kmp 但是更像并查集
虽然还没手撕过并查集

题解: 1. 并查集
一个数组prev表示前一个比当前数大的索引
然后后面的数比到这个数的时候如果相等就不用一路比回去了
极端情况下还是会超时 比如已知升序且无重复
[9999999, 1, 2, ..., 9999998]
优化一下:
···
prev[j]表示j之前离j最近比a[j]大的索引
那么a[j]肯定比从prev[j] + 1 到j - 1都大
所以当a[i] > a[j]时 [j, i - 1]范围内的元素都比a[i]小
[prev[j], j - 1]范围内的元素都比a[j]小
所以也一定比a[i]小
所以从prev[j]到j - 1可以直接跳
j直接跳到prev[j]即可接着查
···

9. V型坐标

问题描述
当夜深人静时,小明喜欢独自凝望着天空。
这一天,小明看着满天的繁星,突发奇思妙想,他发现可以通过用直线连接天空中的星星来组成美丽的图案。
小明想到一个非常简单的图案:大写的V,如果连接三颗星星,中间一颗最靠下方,这样的形状就是一个大V了。
小明越想越着迷,他想知道,天空中最亮的 n 颗星星,可以有多少种方式组成大V。
为了更严谨的看待问题,小明把自己所见范围的天空映射到了一个平面直角坐标系中,他看到的最亮的 n 颗星星在这个坐标系中都有自己的坐标。
如果三颗星星的坐标分别为 (x_i, y_i), (x_j, y_j), (x_k, y_k),当 x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k 时,这三颗星星就组成了一个大 V。
输入格式
输入的第一行包含一个整数 n 。
接下来 n 行,每行两个整数,每一行表示一颗星星的 x 坐标和 y 坐标。
输出格式
输出一行包含一个整数,表示有多少种方式组成大V。
样例输入
5
4 5
2 3
1 4
3 3
5 8
样例输出
4
评测用例规模与约定
对于 30% 的评测用例,2 <= n <= 50,星星的坐标为不超过 1000 的非负整数。
对于 50% 的评测用例,2 <= n <= 100,星星的坐标为不超过 1000 的非负整数。
对于 80% 的评测用例,2 <= n <= 1000,星星的坐标为不超过 10000 的非负整数。
对于所有评测用例,2 <= n <= 5000,星星的坐标为不超过 100000 的非负整数。

小明脑子不太对系列
可以去知乎回答问题了
这题没啥好讲的
写个check函数 然后就了事了
一开始忘了排序 傻傻的连样例都没过 还愣了我半分钟
这题排序是对x排序 顺带改变y 别排错了
不过还是要注意时间
感觉和第五题差不多 也是
维护两个数组
分别是最长上升子序列的长度
和最长下降子序列的长度(倒序搜索)

题解: 略 和第五题一样

10. 选节目

问题描述
小明要组织一台晚会,总共准备了 n 个节目。然后晚会的时间有限,他只能最终选择其中的 m 个节目。
这 n 个节目是按照小明设想的顺序给定的,顺序不能改变。
小明发现,观众对于晚上的喜欢程度与前几个节目的好看程度有非常大的关系,他希望选出的第一个节目尽可能好看,在此前提下希望第二个节目尽可能好看,依次类推。
小明给每个节目定义了一个好看值,请你帮助小明选择出 m 个节目,满足他的要求。
输入格式
输入的第一行包含两个整数 n, m ,表示节目的数量和要选择的数量。
第二行包含 n 个整数,依次为每个节目的好看值。
输出格式
输出一行包含 m 个整数,为选出的节目的好看值。
样例输入
5 3
3 1 2 5 4
样例输出
3 5 4
样例说明
选择了第1, 4, 5个节目。
评测用例规模与约定
对于 30% 的评测用例,1 <= n <= 20;
对于 60% 的评测用例,1 <= n <= 100;
对于所有评测用例,1 <= n <= 100000,0 <= 节目的好看值 <= 100000。

这题. 不知道是出题人的问题还是我的问题
没看懂想要干什么
于是乎直接写了排序之后输出最大的m个(按原来次序)
出来问了学长 学长跟我写的一样 .. 看来都没看懂出题人想干啥

题解: 就排个序 没了 注意边界处理

总结

因为校赛什么都不计入 加上还有点事情要处理
所以看了看题 写了点东西 明白自己还有哪点不会就溜了
去年模拟我好像是全校倒数第一吧 hhhh 菜的真实
这次发现平时看一些题还是有用的
比如树状数组 虽然该用上的时候自己一时半会也撕不出来 (
归并排序 并查集 各种dp
总之 加油!

记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结的更多相关文章

  1. 记 2020蓝桥杯校内预选赛(JAVA组) 赛后总结

    目录 引言 结果填空 1. 签到题 2. 概念题 3. 签到题 4. 签到题 程序题 5. 递增三元组[遍历] 6. 小明的hello[循环] 7. 数位递增[数位dp] 8. 小明家的草地[bfs] ...

  2. 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)

    一.标题:正则表示     正则表达式表示了串的某种规则或规律.恰当地使用正则表达式,可以使得代码简洁.事半功倍.java的很多API都支持正则表达式作为参数.其中的String.split就是这样. ...

  3. 2019 蓝桥杯省赛 A 组模拟赛(一)-修建公路

    题目: 蒜头国有 nn 座城市,编号分别为 0,1,2,3,...,n-1.编号为 x 和 y 的两座城市之间如果要修高速公路,必须花费 x|y 个金币,其中|表示二进制按位或. 吝啬的国王想要花最少 ...

  4. 蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)

    样例输入: 3 1 -2 1 样例输出: 2 方法一: 将环形数组拆分成为普通数组,(通过搬运复制数据到尾部),再求前缀和,找出最大前缀和.因为枚举了每一个起点,所以最大连续和也一定出现在前缀和中.. ...

  5. 2019 蓝桥杯省赛 A 组模拟赛(一)-忽明忽暗

    走廊里有 nn 盏灯,编号依次为 1,2,3,...,n,由学校电路控制中心管理.初始时,所有灯都是关闭的.某黑客入侵了学校电路控制中心,黑客想让灯忽明忽暗,进行了 n 轮操作.第 i 轮操作,会让所 ...

  6. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)一笔画

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...

  7. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(三)数字拆分

    #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> us ...

  8. 计蒜客 2019 蓝桥杯省赛 B 组模拟赛(一)

    D题:马的管辖 二进制枚举方案.判断该方案是否全部能被覆盖,将最优方案存下来并进行剪枝. #include<iostream> #include<cstring> #inclu ...

  9. 抠图|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)

    样例输入: 3 4 5 1 0 0 0 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 5 6 1 1 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 ...

随机推荐

  1. 前端 web mime类型引起的 常见404错误

    mime 类型设置参考https://www.w3school.com.cn/media/media_mimeref.asp

  2. java之位运算符

    整型转二进制:Integer.toBInaryString(6) <<:左移,3<<2 = 3*2*2 = 12 >>:右移,3>>1 = 3/2 = ...

  3. Tkinter最佳实践(半小时)

    概述: 简介 Tkinter模块("Tk 接口")是Python的标准Tk GUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和 ...

  4. WPF 使用XML作为绑定源时Xaml注意事项

    直接在xaml定义时xml时应该注意的! xml数据 <?xml version="1.0" encoding="utf-8"?> <Stri ...

  5. this泛指函数的上下文

    this泛指函数的上下文 当前函数运行的类型上下文.

  6. RabbitMQ的安装与使用(Centos7,linux版本)

    1.主流的消息中间件简单介绍哦. 1).ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它一个完全支持jms(java message service)规范的消息中间件.其丰 ...

  7. MySQL学习——操作表里的数据

    MySQL学习——操作表里的数据 摘要:本文主要学习了使用DML语句操作表里数据的方法. 插入数据 语法 通过传入数据插入: insert into 表名 [(列名1, …, 列名n)] values ...

  8. vuepress1.x入门使用

    要点: 1.用npm操作会有各种问题,用yarn取代之; 2.yarn可以用npm全局安装,而npm是node环境自带,node环境去官网下载安装; 3.没有必要全局安装vuepress 操作: 1. ...

  9. linux上文件挂载的案例

    cat /etc/fstab 将172.20.20.117上的172.20.20.117:/data/nfs/zichan/目录挂载到172.20.20.112机器上,其实类似目录共享 在需要挂载的机 ...

  10. SAP MM 采购信息记录中价格单位转换因子的修改

    SAP MM 采购信息记录中价格单位转换因子的修改 如下采购信息记录, Order unit 跟 base UoM 一致,都是 PC. 采购价格是8849.56 CNY / 10000W, 由于业务人 ...