传送门

#1154 : Spring Outing

时间限制:20000ms

单点时限:1000ms

内存限制:256MB

描述

You class are planning for a spring outing. $N$ people are voting for a destination out of $K$ candidate places.

The voting progress is below:

First the class vote for the first candidate place. If more than half of the class agreed on the place, the place is selected. The voting ends.

Otherwise they vote for the second candidate place. If more than half of the class agreed on the place, the place is selected. The voting ends.

Otherwise they vote for the third candidate place in the same way and go on.

If no place is selected at last there will be no spring outing and everybody stays at home.

Before the voting, the Chief Entertainment Officer did a survey, found out every one's preference which can be represented as a permutation of $0, 1, ... K$. ($0$ is for staying at home.) For example, when $K=3$, preference "$1, 0, 2, 3$" means that the first place is his first choice, staying at home is the second choice, the second place is the third choice and the third place is the last choice.

The Chief Entertainment Officer sends the survey results to the class. So everybody knows the others' preferences. Everybody wants his more prefered place to be selected. And they are very smart, they always choose the optimal strategy in the voting progress to achieve his goal.

Can you predict which place will be selected?

输入

The first line contains two integers, $N$ and $K$, the number of people in your class and the number of candidate places.

The next $N$ lines each contain a permutation of $0$ ~$ K$, representing someone's preference.

For 40% of the data, $1 \le N, K \le 10$

For 100% of the data, $1 \le N, K \le 1000$

输出

Output the selected place. Or "otaku" without quotes if no place is selected.

样例提示

In the sample case, if the second peoson vote against the first place, no place would be selected finally because the first person must vote against the second place for his own interest. Considering staying at home is a worse choice than the first place, the second person's optimal strategy is voting for the first place. So the first place will be selected.

样例输入
2 2 1 0 2 2 1 0
样例输出
1

Analysis:

这道题出自微软2016校园招聘在线笔试第二场首先要明确题意。这道题像是一道博弈论问题(有“纳什均衡的即视感”--某君语),并且确是一道博弈论问题。但没有博弈论的知识也可以入手分析。


我最初的思路也不是正解,赛后讨论区有人询问思路,答曰“倒推”。我想了一周左右,中间还和同学讨论了一次,才明白如何倒推(愚钝如我者)。


假设投票进行到了最后一轮(表决第K个也是最后一个地点)。此轮投票前,众人都知道(每个人都足够聪明)结果只有两种:去第K个地点 or 呆在家。此时,显然地,每个人都将投更想去的地方。将要进行第K轮投票时,大家已经知道最后结果了。因此事实上第K轮投票是没必要的。


假设第K轮投票结果是R(K),R(K)=0或K,那么第K-1轮投票的结果是K-1或R(K),或者说第K-1轮投票实际上是众人在第K-1和R(K)之间选择,因而结果R(K-1)也是预先知道的,第K-1轮投票也没必要。

按此思路可推知R(1),这就是答案。


我们看到在本题中,无需投票众人就知到最后结果了,当然这是由于投票前preference list已成为common knowledge,在实际中这往往是不可能的。


Impelementation:

代码不难写,复杂度是O(N*K),已是读入复杂度了,也没有优化的必要。


#include<bits/stdc++.h>
#define X first
#define Y second
#define MP make_pair
using namespace std;
const int MAX_N=1e3+, MAX_K=1e3+;
int pref[MAX_N][MAX_K];
typedef pair<int, int> pii;
int N, K;
bool cmp(const int &x, const int &y){
int a=x%(K+), b=y%(K+);
int cnt1=, cnt2=;
for(int i=; i<N; i++){
pref[i][a]<pref[i][b]?cnt1++:cnt2++;
}
return cnt1==cnt2?x>y:cnt1>cnt2;
}
int main(){
//freopen("in", "r", stdin);
int place;
scanf("%d%d", &N, &K);
for(int i=; i<N; i++){
for(int j=; j<=K; j++){
scanf("%d", &place);
pref[i][place]=j;
}
}
int last=K+, pre=K;
while(pre){
if(cmp(last, pre)) --pre;
else last=pre, --pre;
//printf("%d %d\n", pre, last);
}
last==K+?puts("otaku"):printf("%d\n", last);
return ;
}
												

hihocoder 1154 Spring Outing的更多相关文章

  1. 题目3 : Spring Outing 微软2016校园招聘在线笔试第二场

    题目3 : Spring Outing 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 You class are planning for a spring outin ...

  2. BNUOJ-29358 Come to a spring outing 搜索,DP

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=29358 状态虽然很多,但是非常稀疏,dfs搜索然后剪下枝.. 或者DP,f[i][j][k ...

  3. Meeloun教你如何正式切入Essay写作话题

    很多同学在Essay写作过程中会发现:如果题目问到解决办法,写来写去,都是政府要颁布政策,人们要提高意识,感觉一点新意也没有.怎么样更好地切合不同的话题,想到最合适的解决办法呢?今天小编为你奉上更多处 ...

  4. 2018 Spring Single Training B (uva 572,HihoCoder 1632,POJ 2387,POJ 2236,UVA 10054,HDU 2141)

    这场比赛可以说是灰常的水了,涨信心场?? 今下午义务劳动,去拿着锄头发了将近一小时呆,发现自己实在是干不了什么,就跑到实验室打比赛了~ 之前的比赛补题补了这么久连一场完整的都没补完,结果这场比完后一小 ...

  5. spring如何解决单例循环依赖问题?

    更多文章点击--spring源码分析系列 1.spring循环依赖场景2.循环依赖解决方式: 三级缓存 1.spring循环引用场景 循环依赖的产生可能有很多种情况,例如: A的构造方法中依赖了B的实 ...

  6. Spring filter和拦截器(Interceptor)的区别和执行顺序

    转载自:http://listenup.iteye.com/blog/1559553 1.Filter过滤器只过滤jsp文件不过滤action请求解决方案 解决办法:在web.xml中将filter的 ...

  7. Spring框架中文件目录遍历漏洞 Directory traversal in Spring framework

    官方给出的描述是Spring框架中报告了一个与静态资源处理相关的目录遍历漏洞.某些URL在使用前未正确加密,使得攻击者能够获取文件系统上的任何文件,这些文件也可用于运行SpringWeb应用程序的进程 ...

  8. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  9. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

随机推荐

  1. linux系统终端命令提示符设置(PS1)记录

    PS(Prompt Sign)指的是命令提示符,在日常运维工作中为了方面操作管理,有时会设定PS1环境变量.废话不多说,下面开始记录下Linux中PS1设置 在/etc/.bashrc中,找到PS1变 ...

  2. MySQL数据备份小结

    一 MySQL备份恢复总结: 1,备份所有库 2,分库备份 3,备份某库中的某表 4,备份某库中的多个表 5,分表备份 6,只备份表结构 7,只备份数据 二 MySQL备份恢复参数总结: -A 备份所 ...

  3. Oracle数据库,数字强制显示2位小数(转)

    Oracle数据库,数字强制显示2位小数 在银行.财务等对数字要求敏感的系统中,数字的显示一般有着严格的要求.今遇到一个需求,如题,要求将数字以两位小数的格式显示,如果没有小数,则强制显示为0.例如: ...

  4. Jquery 将表单序列化为Json对象

    大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法.不过,我们可以写一个插件实现. 我在网上看到有人用替换的方法,先用 ...

  5. WebAPI请求

    里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquer ...

  6. Ubuntu下类似于Total Commander的两个工具

    Total Commander for linux Is there a Linux version? Unfortunately not. Because of problems with port ...

  7. 转 Windows server 2008 搭建VPN服务

    VPN英文全称是“Virtual Private Network”,就是“虚拟专用网络”.   虚拟专用网络就是一种虚拟出来的企业内部专用线路.这条隧道可以对数据进行几倍加密达到安全使用互联网的目的. ...

  8. on 在ios下 父对象是body的时候会 不调用

    on 用委托的形式绑定事件 在ios下 父对象是body 获取 docment的时候会 不调用 解决方案  在这些元素上加 cursor: pointer;

  9. iOS简易柱状图(带动画)--新手入门篇

    叨逼叨 好久没更新博客了,才几个月,发生了好多事情,处理了好多事情.不变的是写代码依然在继续. 做点啥子 看看objective-c的书,学着写了个柱状图,只是练习的demo而已,iOS上的图表控件已 ...

  10. [vijos1264]神秘的咒语(LCIS)

    描述身为拜月教的高级间谍,你的任务总是逼迫你出生入死.比如这一次,拜月教主就派你跟踪赵灵儿一行,潜入试炼窟底.据说试炼窟底藏着五行法术的最高法术:风神,雷神,雪妖,火神,山神的咒语.为了习得这些法术, ...