CCF练习——09.02

题目链接

#! /usr/bin/env python
# #coding:utf-8

my_map = matrix = [[0 for i in range(101)] for i in range(101)]
n = int(input())
maxi = 0
maxj = 0
for i in range(n):
    data = input().split() ##刚开始用的是这种输入,还不知道使用map来辅助输入
    x1 = int(data[0])
    y1 = int(data[1])
    x2 = int(data[2])
    y2 = int(data[3])
    if maxi < x2:
        maxi = x2
    if maxj < y2:
        maxj = y2
    for j in range(x1, x2 + 1):
        for k in range(y1, y2 + 1):
            my_map[j][k] = 1
ans = 0
for i in range(maxi):
    for j in range(maxj):
        if my_map[i][j] == 1 and my_map[i][j + 1] == 1 and my_map[i + 1][j] == 1:
            ans += 1
print(ans)



题目链接

import numpy as np

def judge(theta0, theta1, theta2, x, y):
    if theta2 != 0: ##这是普通的情况,还有theta2 == 0的情况需要考虑
        pre = -1 * (theta0 + theta1 * x) / theta2
        if y > pre:
            return True
        else:
            return False
    else:
        pre = -1 * theta0 / theta1
        if x < pre:
            return True
        else:
            return False



n, m = map(int, input().split()) ##表示要输入的点的个数和要输入的查询的个数
list_n = [] ##将来存储点的序列
for i in range(n):
    x, y, type = map(str, input().split())
    x = int(x)
    y = int(y) ##获得输入的点的坐标和类型信息
    list_temp = (x, y, type)
    list_n.append(list_temp) ##将现在输入的点作为元组存储进序列中
list_m = [] ##存储查询的序列
for i in range(m):
    theta0, theta1, theta2 = map(int, input().split()) ##获得输入的直线的三个参数
    res_A = -1 ##存储上一个A类型点的结果
    res_B = -1 ##存储上一个B类型点的结果
    flag = True ##同样类型的点的分类中是否有不一致的情况
    for dot in list_n:
        res = judge(theta0, theta1, theta2, dot[0], dot[1])
        ##下面来判断这个点和之前同类型的点分类是否已相同
        if dot[2] == 'A':
            if res_A != -1 and res_A != res:
                flag = False
                break
            res_A = res ##运行到这里表明标签是A并且是第一次赋值或者是运行结果和上一次是一样的
        elif dot[2] == 'B':
            if res_B != -1 and res_B != res:
                flag = False
                break
            res_B = res
    if flag and res_A != res_B:
        print('Yes')
    else:
        print('No')


题目链接

n, a, b = map(int, input().split())
##分别表示输入的向量维数, 第一个向量中非零分量的个数,第二个向量中非零分量的个数
list_a = {} ##用来存储u向量的各分量
for i in range(a):
    index, value = map(int, input().split()) #表示输入的向量的分量的下标和相对应的值
    list_a[index] = value
list_b = {}
for i in range(b):
    index, value = map(int, input().split())
    list_b[index] = value
ans = 0
for index in list_a.keys():
    if list_b.get(index):
        ans += list_a[index] * list_b[index]
print(ans)

最后这个题,是60分,看了一些博客也没看出来要怎么修正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值