描述:

在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团。选m人的办法是:

控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0到20。为了公平起见,法官选出陪审团的原则是:选出的m个人,必须满足辩方总分和控方总 分的差的绝对值最小。如果有多种选择方案的辩方总分和控方总分的之差的绝对值相同,那么选辩控双方总分之和最大的方案即可。最终选出的方案为陪审团方案。

#随机100个候选人,从中挑选10个陪审团
import randomp = [[]]
d = [[]]
for i in range(100): #在(20,110)范围内随机100个整数,将它们当作喜爱程度p.append(random.randint(0,20))
for i in range(100): #在(20,110)范围内随机100个整数,将它们当作喜爱程度d.append(random.randint(0,20))
print("prosecution:")
print(p)
print("defense:")
print(d)
result = []
f = []  #转移方程:f[i][j]=f[i-1][x]+d[k]+p[k];且x+p[k]-d[k]=j;{f[i-1][x]}满足条件的最大值
path = []  #记录i个人评审差为j,这种情况下的前一个人i-1是谁
n = 100
m = 10if __name__ == '__main__':for i in range(0, 30):result.append([])for i in range(0, 30):f += [[]]for j in range(0, 1000):f[i] += [-1]for i in range(0, 30):path += [[]]for j in range(0, 1000):path[i] += [0]minD = 20 * m   #避免下标为负,所以推广到零以上f[0][minD] = 0  #初始化条件for j in range(0, m):for k in range(0, minD*2 + 1):if f[j][k] >= 0:for i in range(1, n+1):if (f[j][k]+p[i]+d[i]) > (f[j+1][k+p[i]-d[i]]):temp1 = jtemp2 = kwhile (temp1 > 0) and (path[temp1][temp2] != i):temp2 = temp2 - p[path[temp1][temp2]] + d[path[temp1][temp2]]temp1 = temp1 - 1if temp1 == 0:f[j + 1][k + p[i] - d[i]] = f[j][k] + p[i] + d[i]path[j + 1][k + p[i] - d[i]] = ii = minDj = 0k = 0while (f[m][i + j] < 0) and (f[m][i - j] < 0):j = j+1if f[m][i + j] > f[m][i - j]:k = i + jelse:k = i - jprint("Best jury has value {} for prosecution and value {}for defence:".format((k - minD + f[m][k]) / 2, (minD - k + f[m][k]) / 2))for i in range(1, m+1):result[i] = path[m - i + 1][k]a = result[i]b = p[a] - d[a]k = k - bans = []for i in range(1, m+1):if result[i] != []:ans.append(result[i])#print("{} ".format(result[i]))ans = sorted(ans)print(ans)

陪审团的人选(Python)相关推荐

  1. NOI 4.5 动态规划 1980: 陪审团的人选

    题目来源:http://noi.openjudge.cn/ch0405/1980/ 1980: 陪审团的人选 总时间限制: 1000ms    内存限制: 65536kB 描述 在遥远的国家佛罗布尼亚 ...

  2. 数据用压缩 bcd 码 java_IT职场新人选python,go还是java?用数据来说话

    最近有读者在后台问,刚参加工作,想选一个职业方法,问我现在python很火,但是貌似就业机会不是很多,所以比较纠结现在到底是学python,go还是java. 所以我就想我们能不能用数据说话,看看py ...

  3. 陪审团(算法竞赛进阶指南)

    详见AcWing 280. 陪审团 - AcWing 在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先随机挑选 N 个人(编号 1,2-,N)作为陪审团 ...

  4. 陪审团(01背包, 难)

    在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先随机挑选N个人(编号1,2-,N)作为陪审团的候选人,然后再从这N个人中按照下列方法选出M人组成陪审团. ...

  5. 陪审团(01背包问题倒推具体方案)

    在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先随机挑选N个人(编号1,2-,N)作为陪审团的候选人,然后再从这N个人中按照下列方法选出M人组成陪审团. ...

  6. c语言变量名s_i使其随i变化,动态规划I(含细c语言代码).ppt

    动态规划I(含细c语言代码) 数字三角形 问题描述 问题描述 2.解题思路 3.参考程序 I 3.参考程序 I 程序I分析 程序分析 4.参考程序 II 4.参考程序 II 程序II分析 5.参考程序 ...

  7. 编程能力差,学不好Python、AI、Java等技术,90%是输在了这点上!

    据了解,超90%的人在学习Python.Java.AI等技术时,都是在网上随便找个入门的教程就开始学起来. 然而多数人在看了不少教程后,还是很难独立完成项目,甚至反思自己为什么学了这么久编程能力还是这 ...

  8. Java帝国对Python的渗透能成功吗?

    作者 | 刘欣 转载自码农翻身(公众号 ID:coderising) 引子 Java 帝国已经成立 20 多年,经过历代国王的励精图治,可以说是地大物博,码农众多. 可是国王依然不满足,整天想着如何继 ...

  9. python拼写检查_拼写检查 - Python文本处理教程™

    检查拼写是任何文本处理或分析的基本要求. python中的pyspellchecker包提供了这个功能,可以找到可能错误拼写的单词,并建议可能的更正. 首先,我们需要在python环境中使用以下命令安 ...

最新文章

  1. 解决AttributeError: module ‘cv2.cv2‘ has no attribute ‘estimateRigidTransform‘
  2. logback的简单使用
  3. 大工20秋计算机组成原理在线作业2,大工20秋《计算机组成原理》在线作业3
  4. 打开黑色_表哥出差带回来一箱苹果,打开后发现是黑色的,大家表示都没见过...
  5. windows 建立wifi热点
  6. PHP中extract()函数的定义和用法
  7. php rsa加密乱码_php RSA加解密
  8. Coinbase在上市前选择在Reddit线上路演
  9. wince 开发_正运动技术运动控制卡应用开发教程之Python
  10. 用 Open Live Writer 来写 cnblog.com 博客
  11. 将读书笔记自动生成思维导图(Markdown)
  12. 人类为什么不会被人工智能取代?
  13. Typora设置图片上传服务
  14. 计算机五笔是什么时候学的吗,现在学习五笔打字,还有必要吗?
  15. 独立主机配置FTP,解析域名经历
  16. DualVD:借鉴认知双向编码理论,提出视觉对话新框架 | AAAI 2020
  17. linux(centos7)测试带宽
  18. 笔记本安装Archlinux笔记
  19. 3行代码实现自动刷抖音
  20. 【1024】用Python画CSDN的默认头像

热门文章

  1. php中json字符串值,如何使用PHP从JSON中提取数据?
  2. 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(1)...
  3. DataFrame 数据筛选
  4. 百度云服务器ping不通,云主机ping的通三节点,但是ping不通百度
  5. 辽宁大学计算机测控技术专业排名,测控技术与仪器专业大学排名
  6. C3P0,Proxool等连接池的断开自动重联功能
  7. Android实例开发中登录注册界面的框架实现(android studio)
  8. linux飞秋查看共享文件,Ubuntu下的iptux和Windows下的飞秋互传文件
  9. 深入理解Android之Gradle
  10. 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.9 页面链接组件,如何自定义一个导航栏?