用Python3在牛客网acm模式刷题怎么输入输出

本文主要为了解决之前的一个困扰-----------牛客网的acm模式刷题时到底应该怎么处理输入输出的问题。由于目前各大公司笔试大多都是需要自己调试输入输出,这就可能会让很多习惯力扣核心代码模式的朋友感到不适,遂作此文以解困惑。
(本文使用的语言是Python3)

在线练习

牛客网acm模式刷题重复输入时while True用法

try :可能抛出异常的语句。
except :捕获异常,处理异常。

while True:
    try:
        #代码部分
    except:
        break

找出给定字符串中大写字符(即’A’-‘Z’)的个数。

while True:
    try:
        a = 0
        s = input()
        for i in s:
            if i.isupper():
                a += 1
        print(a)
    except:
        break

牛客网acm模式刷题怎么输入输出?

只有一行输入

输入:3 abc bca cab abc 1

ss=input().split()
print(ss)#['3', 'abc', 'bca', 'cab', 'abc', '1']

输入 3 4

m, n = map(int, input().split())

输入一维数组:5 1 2 3 4 5(第一个5为数组长度)
方式1:

s = list(map(int, input().split()))

方式2:

n = input()
s = [0]*n
s = [int(i) for i in input().strip().split( )]

有多行输入

输入二维数组:
3
1 3 1
1 5 1
4 2 1
(3为数组行数)

n = input()
data = []
for _ in range(n):
    data.append(list(map(int, input().split())))

输入多行数字:
3
2
2
1
(3为数字行数)

line_num,num=int(input()),set()
for i in range(line_num):
    num.add(int(input()))

以空格分隔,输出数组元素

输出1 2 3 4 1 :

a=[1,2,3,4,1]
#方式1:
print(*a)#1 2 3 4 1
#方式2:
for i in range(len(a)):
    print(a[i],end=' ')#1 2 3 4 1 

注意方式2结尾还有个空格。解决方法:

for i in range(len(a)-1):
    print(a[i],end=' ')
print(a[-1])
#1 2 3 4 1

*二维数组

grid = [[1,2,5],[6,7,8],[3,9,4]]
print(grid)#[[1, 2, 5], [6, 7, 8], [3, 9, 4]]
print(*grid)#[1, 2, 5] [6, 7, 8] [3, 9, 4]

一道例题理清acm模式的输入输出

meituan-003. 小美的跑腿代购
小美的一个兼职是美团的一名跑腿代购员,她有 n 个订单可以接,订单编号是 1~n ,但是因为订单的时效性,他只能选择其中 m 个订单接取,精明的小美当然希望自己总的获利是最大的,已知,一份订单会提供以下信息,跑腿价格 v ,商品重量 w kg,商品每重 1kg ,代购费用要加 2 元,而一份订单可以赚到的钱是跑腿价格和重量加价之和。小美可是开兰博基尼送货的人,所以自然不会在意自己会累这种事情。请问小美应该选择哪些订单,使得自己获得的钱最多。
请你按照选择的订单编号的从小到大顺序,如果存在多种方案,输出订单编号字典序较小的方案。

格式:

输入:

  • 输入第一行包含两个正整数 n,m,表示订单的数量和小美可以接的订单数量。
  • 接下来有 n 行,第 i 行表示 i-1 号订单的信息。每行有两个正整数 v 和 w ,表示一个订单的跑腿价格和商品重量。

输出:

  • 输出包含 m 个 1~n 之间的正整数,中间用空格隔开,表示选择的订单编号。
输入:
     5 3
     5 10
     8 9
     1 4
     7 9
     6 10
输出:3 5

解法:

n, m = map(int, input().split( ))#5 2
res = []
for i in range(n):
    v, w = map(int, input().split( ))
    res.append((v+w*2, i+1))#[(25, 1), (26, 2), (9, 3), (25, 4), (26, 5)]
res.sort(key=lambda x: (-x[0],x[1]))#[(26, 2), (26, 5), (25, 1), (25, 4), (9, 3)]
res1 = sorted([i for _, i in res[:m]])#[1, 2, 5]
print(*res1)#1 2 5

巩固加深1
巩固加深2

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

若年封尘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值