陪审团的人选(Python)
描述:
在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选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)相关推荐
- NOI 4.5 动态规划 1980: 陪审团的人选
题目来源:http://noi.openjudge.cn/ch0405/1980/ 1980: 陪审团的人选 总时间限制: 1000ms 内存限制: 65536kB 描述 在遥远的国家佛罗布尼亚 ...
- 数据用压缩 bcd 码 java_IT职场新人选python,go还是java?用数据来说话
最近有读者在后台问,刚参加工作,想选一个职业方法,问我现在python很火,但是貌似就业机会不是很多,所以比较纠结现在到底是学python,go还是java. 所以我就想我们能不能用数据说话,看看py ...
- 陪审团(算法竞赛进阶指南)
详见AcWing 280. 陪审团 - AcWing 在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先随机挑选 N 个人(编号 1,2-,N)作为陪审团 ...
- 陪审团(01背包, 难)
在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先随机挑选N个人(编号1,2-,N)作为陪审团的候选人,然后再从这N个人中按照下列方法选出M人组成陪审团. ...
- 陪审团(01背包问题倒推具体方案)
在一个遥远的国家,一名嫌疑犯是否有罪需要由陪审团来决定. 陪审团是由法官从公民中挑选的. 法官先随机挑选N个人(编号1,2-,N)作为陪审团的候选人,然后再从这N个人中按照下列方法选出M人组成陪审团. ...
- c语言变量名s_i使其随i变化,动态规划I(含细c语言代码).ppt
动态规划I(含细c语言代码) 数字三角形 问题描述 问题描述 2.解题思路 3.参考程序 I 3.参考程序 I 程序I分析 程序分析 4.参考程序 II 4.参考程序 II 程序II分析 5.参考程序 ...
- 编程能力差,学不好Python、AI、Java等技术,90%是输在了这点上!
据了解,超90%的人在学习Python.Java.AI等技术时,都是在网上随便找个入门的教程就开始学起来. 然而多数人在看了不少教程后,还是很难独立完成项目,甚至反思自己为什么学了这么久编程能力还是这 ...
- Java帝国对Python的渗透能成功吗?
作者 | 刘欣 转载自码农翻身(公众号 ID:coderising) 引子 Java 帝国已经成立 20 多年,经过历代国王的励精图治,可以说是地大物博,码农众多. 可是国王依然不满足,整天想着如何继 ...
- python拼写检查_拼写检查 -
Python文本处理教程™
检查拼写是任何文本处理或分析的基本要求. python中的pyspellchecker包提供了这个功能,可以找到可能错误拼写的单词,并建议可能的更正. 首先,我们需要在python环境中使用以下命令安 ...
最新文章
- 解决AttributeError: module ‘cv2.cv2‘ has no attribute ‘estimateRigidTransform‘
- logback的简单使用
- 大工20秋计算机组成原理在线作业2,大工20秋《计算机组成原理》在线作业3
- 打开黑色_表哥出差带回来一箱苹果,打开后发现是黑色的,大家表示都没见过...
- windows 建立wifi热点
- PHP中extract()函数的定义和用法
- php rsa加密乱码_php RSA加解密
- Coinbase在上市前选择在Reddit线上路演
- wince 开发_正运动技术运动控制卡应用开发教程之Python
- 用 Open Live Writer 来写 cnblog.com 博客
- 将读书笔记自动生成思维导图(Markdown)
- 人类为什么不会被人工智能取代?
- Typora设置图片上传服务
- 计算机五笔是什么时候学的吗,现在学习五笔打字,还有必要吗?
- 独立主机配置FTP,解析域名经历
- DualVD:借鉴认知双向编码理论,提出视觉对话新框架 | AAAI 2020
- linux(centos7)测试带宽
- 笔记本安装Archlinux笔记
- 3行代码实现自动刷抖音
- 【1024】用Python画CSDN的默认头像
热门文章
- php中json字符串值,如何使用PHP从JSON中提取数据?
- 【翻译】西川善司「实验做出的游戏图形」「GUILTY GEAR Xrd -SIGN-」中实现的「纯卡通动画的实时3D图形」的秘密,前篇(1)...
- DataFrame 数据筛选
- 百度云服务器ping不通,云主机ping的通三节点,但是ping不通百度
- 辽宁大学计算机测控技术专业排名,测控技术与仪器专业大学排名
- C3P0,Proxool等连接池的断开自动重联功能
- Android实例开发中登录注册界面的框架实现(android studio)
- linux飞秋查看共享文件,Ubuntu下的iptux和Windows下的飞秋互传文件
- 深入理解Android之Gradle
- 微信小程序全栈开发实践 第二章 微信小程序组件介绍及使用 -- 2.9 页面链接组件,如何自定义一个导航栏?