日常一道算法题。
翻译
铁锹和剑
Polycarp 玩一个很知名的游戏。游戏中,他有两种工具,木头和钻石。造一柄剑需要两颗钻石一块木头,造一个铁锹需要一块钻石两块木头,每种东西都值一块钱。
问他最多能赚多少钱。
输入格式
第一行输入整数 t,表示测试用例组数。
每个测试用例输入两个整数 a 和 b,分别表示两种材料的数量。
输出格式
每个测试用例输出一个整数,能赚的钱数。
分析
先判断是否最大的数量大于另一个数量的两倍,如果大于两倍,则少的有多少则赚多少钱。
否则,多了多少则先消耗多少,这是第一部分。剩余部分除以三,就能赚这个数量乘以二,然后如果还有剩余 2 2,则再加 1。
代码(Python3)
image.png# https://codeforces.com/problemset/problem/1366/A
import sys
import os
import heapq
import math
try:
path = "./file/input.txt"
if os.path.exists(path):
sys.stdin = open(path, 'r')
# sys.stdout = open(r"./file/output.txt", 'w')
except:
pass
t = int(input())
def printd(value):
# print(value)
pass
def case():
arr = list(map(int, input().split(" ")))
a, b = arr[0], arr[1]
if a < b:
a, b = b, a
if a - b > b:
print(b)
else:
c = a - b
d = b - c
count = (d // 3) * 2
count += c
if d % 3 == 2:
count += 1
print(count)
for _ in range(t):
case()
更多代码尽在 https://github.com/Tconan99/Codeforces
by 费城的二鹏 2020.06.22 长春
网友评论