小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为 。 这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。 他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为 ,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。 (我们假设所有旧账号的粉丝们没有重叠,并且如果在第 个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 下取整个,而如果小苯选择在第 个旧账号中多次推荐新账号,那么新账号就可以直接涨粉 。)
区块链毕设网qklbishe.com为您提供问题的解答
小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为
。
这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。
他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为
,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。
(我们假设所有旧账号的粉丝们没有重叠,并且如果在第
个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉
下取整个,而如果小苯选择在第
个旧账号中多次推荐新账号,那么新账号就可以直接涨粉
。)
# -*- coding: utf-8 -*-
import sys
from functools import lru_cache
def main():
sys.setrecursionlimit(1 << 25)
n = int(sys.stdin.readline())
a = list(map(int, sys.stdin.readline().split()))
x = int(sys.stdin.readline())
b = [num // 2 for num in a]
b_sorted = sorted(b, reverse=True)
total_b = sum(b)
min_case1 = float(‘inf’)
# 处理情况1:不使用多次推荐
def dfs_case1(pos, current_sum, count):
nonlocal min_case1
if current_sum == x:
if count < min_case1:
min_case1 = count
return
if pos >= len(b_sorted) or current_sum > x:
return
remaining_sum = sum(b_sorted[pos:])
if current_sum + remaining_sum < x:
return
# 剪枝:如果当前已经不可能更优
if count >= min_case1:
return
# 选当前元素
dfs_case1(pos + 1, current_sum + b_sorted[pos], count + 1)
# 不选当前元素
dfs_case1(pos + 1, current_sum, count)
dfs_case1(0, 0, 0)
# 处理情况2:使用一次多次推荐
min_case2 = float(‘inf’)
for k in range(n):
ak = a[k]
if ak > x:
continue
s = x – ak
if s < 0:
continue
# 构造其他元素的b数组,排除k
other_b = [b[i] for i in range(n) if i != k]
other_sorted = sorted(other_b, reverse=True)
# 提前剪枝:总和不足
if sum(other_sorted) < s:
continue
# 使用DFS找最少数目
min_m = float(‘inf’)
def dfs_case2(pos, curr, cnt):
nonlocal min_m
if curr == s:
if cnt < min_m:
min_m = cnt
return
if pos >= len(other_sorted) or curr > s:
return
remaining = sum(other_sorted[pos:])
if curr + remaining < s:
return
if cnt >= min_m:
return
# 选当前元素
dfs_case2(pos + 1, curr + other_sorted[pos], cnt + 1)
# 不选
dfs_case2(pos + 1, curr, cnt)
dfs_case2(0, 0, 0)
if min_m != float(‘inf’):
total = 1 + min_m
if total < min_case2:
min_case2 = total
# 确定最终结果
res = float(‘inf’)
if min_case1 != float(‘inf’):
res = min_case1
if min_case2 != float(‘inf’):
res = min(res, min_case2)
print(res if res != float(‘inf’) else –1)
if __name__ == "__main__":
main()
43:59
以上就是关于问题小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为 。
这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。
他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为 ,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。 (我们假设所有旧账号的粉丝们没有重叠,并且如果在第 个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 下取整个,而如果小苯选择在第 个旧账号中多次推荐新账号,那么新账号就可以直接涨粉 。)的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为 。
这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。
他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为 ,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。 (我们假设所有旧账号的粉丝们没有重叠,并且如果在第 个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 下取整个,而如果小苯选择在第 个旧账号中多次推荐新账号,那么新账号就可以直接涨粉 。)
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为 。
这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。
他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为 ,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。 (我们假设所有旧账号的粉丝们没有重叠,并且如果在第 个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 下取整个,而如果小苯选择在第 个旧账号中多次推荐新账号,那么新账号就可以直接涨粉 。)
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为 。
这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。
他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为 ,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。 (我们假设所有旧账号的粉丝们没有重叠,并且如果在第 个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 下取整个,而如果小苯选择在第 个旧账号中多次推荐新账号,那么新账号就可以直接涨粉 。)
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » 小苯是“小红书app”的忠实用户,他有 个账号,每个账号粉丝数为 。 这天他又创建了一个新账号,他希望新账号的粉丝数恰好等于 。为此他可以向自己已有账号的粉丝们推荐自己的新账号,这样以来新账号就得到了之前粉丝的关注。 他想知道,他最少需要在几个旧账号发“推荐新账号”的文章,可以使得他的新账号粉丝数恰好为 ,除此以外,他可以最多从中选择一个账号多次发“推荐新账号”的文章。 (我们假设所有旧账号的粉丝们没有重叠,并且如果在第 个旧账号的粉丝们推荐了新账号,则新账号会直接涨粉 下取整个,而如果小苯选择在第 个旧账号中多次推荐新账号,那么新账号就可以直接涨粉 。)