CSDN周赛第62期

单选题一:

ACID是什么意思?

A、一种数据库管理系统

B、一种数据仓库

C、一种数据处理技术

D、一种数据库事务保证的特性

答案:

D、一种数据库事务保证的特性

单选题二: 

OLAP(在线分析处理)主要用于支持以下哪种类型的查询:

A、事务处理查询

B、聚合查询

C、实时查询

D、文本查询

答案:

B、聚合查询

单选题三: 

下列哪种技术可以用于大数据处理?

A、MapReduce

B、SQL

C、NoSQL

D、手写代码

答案:

A、MapReduce

单选题四:

大数据的“3V”指的是哪三个方面?

A、速度、体积、价值 

B、速度、体积、多样性 

C、速度、价值、多样性 

D、体积、价值、多样性

答案:

B、速度、体积、多样性

编程题一:

给你二维平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形,请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示:

第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。

参数限制: -10e4 <= ax1, ay1, ax2, ay2, bx1, by1, bx2, by2 <= 10e4

答案: 

def computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2):
    area1 = (ax2 - ax1) * (ay2 - ay1)
    area2 = (bx2 - bx1) * (by2 - by1)
    
    overlap_width = max(0, min(ax2, bx2) - max(ax1, bx1))
    overlap_height = max(0, min(ay2, by2) - max(ay1, by1))
    
    overlap_area = overlap_width * overlap_height
    
    total_area = area1 + area2 - overlap_area
    
    return total_area

# 输入示例
ax1 = int(input())
ay1 = int(input())
ax2 = int(input())
ay2 = int(input())
bx1 = int(input())
by1 = int(input())
bx2 = int(input())
by2 = int(input())

# 计算覆盖面积
result = computeArea(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2)

# 输出结果
print(result)

解析:

解题思路:
两个矩形的总面积等于两个矩形的面积之和减去它们重叠的部分的面积。

矩形的面积可以通过计算两个对角顶点的坐标差再相乘得到。

两个矩形的重叠部分的面积可以通过计算重叠部分的宽度和高度再相乘得到。

重叠部分的宽度为两个矩形在 x 轴上的投影的交集,即两个矩形在 x 轴上的最大左边界与最小右边界的差值,如果没有重叠则宽度为 0。

重叠部分的高度为两个矩形在 y 轴上的投影的交集,即两个矩形在 y 轴上的最大下边界与最小上边界的差值,如果没有重叠则高度为 0。

具体实现步骤如下:

1. 计算第一个矩形的面积,使用 (ax2 - ax1) * (ay2 - ay1)。
2. 计算第二个矩形的面积,使用 (bx2 - bx1) * (by2 - by1)。
3. 计算重叠部分的宽度,使用 max(0, min(ax2, bx2) - max(ax1, bx1))。
4. 计算重叠部分的高度,使用 max(0, min(ay2, by2) - max(ay1, by1))。
5. 计算重叠部分的面积,使用重叠部分的宽度乘以高度。
6. 计算总面积,使用第一个矩形的面积加上第二个矩形的面积减去重叠部分的面积。
7. 返回总面积作为结果。

编程题二:

小光买了一个可编程机器猫,机器猫初始位置在原点(0, 0)。 小伙伴事先给机器猫输入一串指令command,机器猫就会 无限循环这条指令的步骤进行移动。指令有两种:

U: 向y轴正方向移动一格 R: 向x轴正方向移动一格。 D: 向y轴负方向移动一格 L: 向x轴负方向移动一格。 不幸的是,在 xy 平面上还有一些遮挡物,他们的坐标用 barriers 表示。机器猫一旦碰到遮挡物就会被损毁。

限制: 2 <= command的长度 <= 1000 command由 U,R,D,L构成(个数不限制) 0 <= x <= 1e9 0 <= y <= 1e9 0 <= barriers 的长度 <= 1000 barriers[i]不为原点或者终点

答案:

def isCatReachable(command, barriers, x, y):
    cat_x = 0
    cat_y = 0
    
    barrier_set = set((bx, by) for bx, by in barriers)
    
    for move in command:
        if move == 'U':
            cat_y += 1
        elif move == 'R':
            cat_x += 1
        elif move == 'D':
            cat_y -= 1
        elif move == 'L':
            cat_x -= 1
        
        if (cat_x, cat_y) in barrier_set:
            return False
        
        if cat_x == x and cat_y == y:
            return True
    
    return False

# 输入示例
command = input("请输入指令command: ")
barriers = []
n = int(input("请输入遮挡物个数n: "))
for _ in range(n):
    barrier = list(map(int, input("请输入遮挡物坐标(x, y): ").split()))
    barriers.append(barrier)
x, y = map(int, input("请输入终点坐标(x, y): ").split())

# 判断机器猫是否能到达终点
result = isCatReachable(command, barriers, x, y)

# 输出结果
print(result)

解析:

解题思路:
我们可以模拟机器猫的移动过程,同时检查是否与遮挡物发生碰撞或到达终点。

1. 初始化机器猫的当前位置为(0, 0)。
2. 初始化一个集合用于存储遮挡物的坐标。
3. 在遮挡物坐标数组中,将遮挡物的坐标加入集合中。
4. 从左到右遍历指令command,根据指令更新机器猫的位置。
   - 如果指令是'U',将机器猫的y坐标增加1。
   - 如果指令是'R',将机器猫的x坐标增加1。
   - 如果指令是'D',将机器猫的y坐标减少1。
   - 如果指令是'L',将机器猫的x坐标减少1。
   - 检查机器猫的位置是否与遮挡物集合中的坐标重合,如果重合则返回false。
   - 检查机器猫的位置是否与终点坐标重合,如果重合则返回true。
5. 如果遍历完所有指令后,机器猫的位置不等于终点坐标,则返回false。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z.Mercury

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值