原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-250.html

SRM500 Div1 250

题意

(看题用了半个小时……)

有 n 个人(编号从 0 到 n-1)玩游戏,要通过投票的方式确定谁输。现在已知有一些人有明确的意见,认为谁输。具体地用一个 vector decision 来描述,vector decision 的大小可能不足 n 。

定义一个集合 S 包含一些人,初始的时候集合 S 包含所有人。他们会进行若干轮投票,每一轮中,一次进行下列三个过程:

  1. 对于所有 **意见明确 且 认为该输的人在 S 中 ** 的意见,进行投票。
  2. 对于剩下的所有的投票机会,每次随机选择一个在 S 中且当前票数最少的人进行投票。
  3. 将 S 更新为 S 中票数最多的人构成的集合。如果 |S| = 1 ,那么结束游戏,这个属于 S 的人输了。

给定 n, decision ,返回所有人输的概率 的最大值。

\(2\leq n\leq 500, 1\leq decision.size()\leq \min(n,50)\)

一直在想如何求解残局。

事实上,在第一轮中,就可以得到一些重要性质:

  1. 第一轮所有人都有且仅有一票。
  2. 否则,必然存在一些人的票数大于 1,那么下一轮剩下的人一定是票数最多的所有人的。于是,我们只需要判定是否有解,如果有,那么答案就是 \(\frac 1 {人数}\) ,否则答案就是 0 。
static const int N=505;
int n,t[N];
double probabilityToLose(int N, vector <int> d){
n=N;
memset(t,0,sizeof t);
for (auto v : d)
t[v]++;
int Max=0;
for (int i=0;i<n;i++)
Max=max(t[i],Max);
if (Max<=1)
return 0;
int tot=0;
for (int i=0;i<n;i++)
if (t[i]==Max)
tot++;
double res=1.0/tot;
while (1){
if (!tot)
return 0;
if (tot==1)
return res;
tot=n%tot;
}
}

TopCoder SRM500 Div1 250 其他的更多相关文章

  1. TopCoder SRM500 Div1 500 分治

    原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-500.html SRM500 Div1 500 没想到 double 的精度居然没有爆-- 考虑以 ...

  2. TopCoder SRM500 Div1 1000 其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/SRM500-1000.html SRM500 Div1 1000 设 \(v_1,v_2,\cdots ,v_9 ...

  3. Topcoder SRM 643 Div1 250<peter_pan>

    Topcoder SRM 643 Div1 250 Problem 给一个整数N,再给一个vector<long long>v; N可以表示成若干个素数的乘积,N=p0*p1*p2*... ...

  4. Topcoder SRM 698 Div1 250 RepeatString(dp)

    题意 [题目链接]这怎么发链接啊..... Sol 枚举一个断点,然后类似于LIS一样dp一波 这个边界条件有点迷啊..fst了两遍... #include<bits/stdc++.h> ...

  5. TopCoder 649 div1 & div2

    最近一场TC,做得是在是烂,不过最后challenge阶段用一个随机数据cha了一个明显错误的代码,最后免于暴跌rating,还涨了一点.TC题目质量还是很高的,非常锻炼思维,拓展做题的视野,老老实实 ...

  6. TopCoder SRM502 Div1 500 贪心 01背包

    原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-500.html SRM502 Div1 500 好题. 首先,如果已经确定了解决所有问题的优先级, ...

  7. TopCoder SRM502 Div1 1000 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-1000.html SRM502 Div1 1000 题意 从 [0,n-1] 中选择 k 个不同的 ...

  8. topcoder SRM712 Div1 LR

    题目: Problem Statement      We have a cyclic array A of length n. For each valid i, element i-1 the l ...

  9. SRM 595 DIV1 250

    挺简单的组合把. #include <cstdio> #include <cstring> #include <iostream> #include <vec ...

随机推荐

  1. java 11 ZGC(可伸缩,低延迟的gc)

    ZGC, A Scalable Low-Latency Garbage Collector(Experimental) 可伸缩,低延迟的gc ZGC, 这应该是JDK11最为瞩目的特性, 没有之一. ...

  2. 一条sql执行过长的时间,你如何优化,从哪些方面?

    1.查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2.涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合 3. ...

  3. Python终极coding

    作为一名程序员,除了需要具备解决问题的思路以外,代码的质量和简洁性也很关键.因为从一个人的代码可以直接看出你的基本功.对于Python而言,这就意味着你需要对Python的内置功能和库有很深入的了解. ...

  4. Hbase 元数据一致性检查(转)

    最近在学习HBase先关的知识,顺便做一下笔记,以加深知识的了解和掌握. Hbase常用工具 文件检测修复工具 hbase hbck -help 常用选项: -details 显示所有region检查 ...

  5. SpringCloud笔记三:Eureka服务注册与发现

    目录 什么是Eureka? Eureka注册的三大步 第一步,引用Maven 第二步,配置yml 第三步,开启Eureka注解 新建Eureka子项目 把provider子项目变成服务端 Eureka ...

  6. jQuery使用(十):jQuery实例方法之位置、坐标、图形(BOM)

    offset() position() scrollTop().scrollLeft width().height() innerWidth().outerWidth().innerHeight(). ...

  7. 页面加载过渡页 loading plugin css

    是前文 plugin 示例 loading 中需要用到的样式.现在样式扩充为 5类.loadtwo 使用到了bgimg /*loading animation loading one*/ /* loa ...

  8. oldboy s21day06

    #!/usr/bin/env python# -*- coding:utf-8 -*- # 1.列举你了解的字典中的功能(字典独有).'''dic.keys() 获取所有keydic.values() ...

  9. JavaScript 函数递归

    递归函数 递归函数是在一个函数通过名字调用自身的情况下构成的 项目中例如树状结构渲染,对象深复制,等很多方面都会使用到递归函数 function factorial(num){ if (num < ...

  10. 使用/dev/poll的str_cli函数

    void str_cli(FILE *fp, int sockfd) { int stdineof; char buf[MAXLINE]; int n; int wfd; ]; struct dvpo ...