当前位置: 首页 > article >正文

python 一个组合问题:


有一个函数 f(X)=X2f(X)=X2。你还将获得KK个列表,每个列表包含NN个元素。 你需要从每个列表中选择一个元素,使下面的等式结果最大

S=(f(X1X1​)+f(X2X2​)+...+f(XkXk​))%M

XiXi​表示第ii个列表的某个元素。求出获得的最大值SS。%表示模运算符。

输入格式

第一行包含两个空格分隔的整数KK和MM。 接下来的KK行,每行包含一个整数NN,表示列表中的元素数量,后面跟着NN个空格分隔的整数,表示列表中的元素。

限制条件

  • 1≤K≤71≤K≤7
  • 1≤M≤10001≤M≤1000
  • 1<=元素大小<=1091<=元素大小<=109

输出格式

输出一个整数,即最大值SS。




#在此处编写你的代码。

mm = 0

def get_combinations(lists, m,index=0, current_combination=[]):
    # 如果当前索引已经超出所有子列表的范围,添加当前组合到结果列表    
    global mm
    
    if index == len(lists):
        mm=max(mm, sum([a*a for a in current_combination])%m)
        return         
    
    # 遍历当前子列表中的每个元素
    for element in lists[index]:
        # 递归选择下一个子列表的元素
        get_combinations(lists,m, index + 1, current_combination + [element])

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

lst=[]
for i in range(n):
    tmp=(list(map(int,input().split())))[1:]
    lst.append(tmp)


get_combinations(lst,m)
print(mm)




解释: 从第一个列表中选取5,从第二个列表中选择9,从第三个列表中挑选10,得到的最大S值等于(5252+9292+102102)%1000=206。

  • 需要从每个列表中只取一个元素,但不一定是最大的元素。
  • 将所选元素的平方相加,然后执行模运算%M,从而获得可能的最大值。

http://www.kler.cn/a/522691.html

相关文章:

  • go gin配置air
  • 【云安全】云原生-K8S-搭建/安装/部署
  • 【redis】redis操作set类型的key发生了什么?
  • Java坦克大战
  • 【PySide6快速入门】QLineEdit 输入框
  • OpenCV:形态学操作总结
  • LeetCode100之全排列(46)--Java
  • 无公网IP外网访问开源笔记 Logseq
  • 使用EVE-NG-锐捷实现OSPF
  • ZooKeeper-3.8.3-会话
  • HTML5+Canvas实现“飞蛇拜年”炫酷动画效果
  • es数据同步
  • char 和 varchar
  • 初阶2 类与对象
  • 详细介绍 React Native 的动画系统。主要包括 Animated 组件的各种用法:
  • Java 大视界 -- Java 大数据与碳中和:能源数据管理与碳排放分析(66)
  • mysql索引 a
  • 本地Harbor仓库搭建流程
  • A7. Jenkins Pipeline自动化构建过程,可灵活配置多项目、多模块服务实战
  • 数据存储容量不足,查询性能下降的解决方法
  • 前端性能优化:HMR热更新和预获取加载
  • xxl-job面试题
  • 蓝桥杯:大小写转换(异或转换)
  • MoE的学习
  • hive:数据导入,数据导出,加载数据到Hive,复制表结构
  • DevEco Studio 4.1中如何创建OpenHarmony的Native C++ (NAPI)程序