【技术向】麦哲伦的阴谋解题报告

一、  题目描述

內容 :

在禁忌的貝殼城裡存在著一座監獄

有N個犯人被關在裡頭

我們只知道 .....

"他們都帶著帽子"

這是一頂神奇的帽子

稱作 "廬山帽"

是貝殼城裡的特產

分為紅色及白色兩種

凡是帶上 "廬山帽" 的人 .....

就會 "不識廬山真面目" !!!!

而監獄內的所有犯人都被配帶了這一頂可怕的帽子 0.0

而邪惡的所長麥哲倫想到了一個邪惡又沒有良心的鬼計畫:

" 猜帽子 "

只要能猜出自己的帽子顏色即可立即出獄

但猜錯者須以死謝罪 

而你可以假設監獄裡的犯人都跟羅賓一樣絕頂聰明

不會有想要以死謝罪的白癡行為

因此,在N個犯人的監獄中,麥哲倫所長將M頂紅帽配給其中的犯人

請問最少需要幾天,監獄內的所有犯人均可以確定自己的帽子顏色後出獄

PS. 犯人並不知道共有幾頂紅帽,只知道紅帽至少有一頂,而且不可互相討論 = =

輸入說明 : 

輸入兩數N,M (1 < M <= N < 231

代表N個犯人,M頂紅帽

輸出說明 : 

輸出最少幾天所有犯人均可以確定自己的帽子顏色後出獄

二、  解题思路

看到这道题,有许多冗杂的部分,于是我决定先把不必要的

部分删去,题目就变成了下面这个样子

“在N個犯人的監獄中,麥哲倫所長將M頂紅帽配給其中的犯人,請問最少需要幾天,監獄內的所有犯人均可以確定自己的帽子顏色後出獄”

人数其实不是问题,重点是红帽有几顶。

假设人数十人,如果一人红帽的话,除了红帽本人,其他人只能看到一顶红帽子。

所以第一天的时候戴红帽的就可以很确定只有他是红帽(因其视角只有白帽),所以开心地走了,第二天大家发现红帽不见了(太棒了!),聪明如罗宾的人自然明白红帽肯定是他,然后其他人就发现自己都是白帽

如果是两个白帽呢?

第一天因为戴红帽的有看到另一顶红帽所以没人会轻举妄动,到了第二天那个红帽发现另一个红帽没有走,他就推断出自己头上的是红帽,所以第二天两红帽都走了,第三天大家也都走了

故红帽的全部走完需要m天,剩下所有白帽子加一天。

注意,这里还有一个陷阱。

如果m==n?所有人都是红帽子,还要加一吗?于是我写出了这样的代码。

#include <iostream>

using namespace std;

int main(){

    int a,b;

    while(cin >> a >> b){

        if (a==b)

            cout << b;

        else

            cout << b + 1;

        cout << endl;

    }

    return 0;

}
时间: 2024-10-28 21:48:03

【技术向】麦哲伦的阴谋解题报告的相关文章

leetCode解题报告5道题(七)

先送上亚马逊传送门:<黑客与画家>:硅谷创业之父 Paul Graham 文集 再送上一个思维导图: 最好的办法就是自己创业或者加入创业公司 一个命题 命题 创业是一个压缩的过程,所有工作压缩成短短几年. 你不再是低强度的工作四十年,而是以极限强度工作四年 举例解释 一个优秀的黑客去除各种障碍,工作效率可以是在公司时的36倍. 假设他年薪8万美元,那么一个勤奋工作,摆脱杂事干扰的聪明黑客, 他的工作相当于年薪200万美元的价值 这里说的是极限情况,休闲时间为0,工作强度足以危害到健康. 守恒定

NOIP 2003解题报告

第一题(神经网络): 题目大意,给出一些点,每个点都有2个值,c和u,给出一些有向边,权值为w.入度为0的点的c已知,其它点的c未知,每个入度不为0的点node的c等于sum(c[k]*w[k][node]),k为与它相连(有向边指向node)的点.求所有出度为0且c>0的点. 解题过程: 此题的方法应该很多,比如拓扑排序,BFS等:我直接写了个递归,要求某个点的c,就先访问所有与它相连的点,递归下去直到 碰到入度为0的点.. 较麻烦的送分题,30分钟AC 第二题(侦探推理): 明明同学最近迷上

人生第一场CTF的解题报告(部分)

解题报告 濮元杰部分: 王者归来: 120 场景 小王入职了一段时间,最近有点无聊.Web安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人.想到这,小王一眼看到了隔壁的小丽,哎,IT界小丽绝对算得上是一位美女啦,于是小王凑了过去对小丽说:小丽,看你眉头紧锁的,需要本大侠帮忙吗?小丽转头看着小王,愣了足足有10秒,突然说:那,那好吧,如果你帮我搞定这三个问题,嗯~我请你吃晚饭,就我们两个.天哪,这,这,小王已经按耐不住突如其来的喜悦,战斗力倍

解题报告 之 POJ3057 Evacuation

解题报告 之 POJ3057 Evacuation Description Fires can be disastrous, especially when a fire breaks out in a room that is completely filled with people. Rooms usually have a couple of exits and emergency exits, but with everyone rushing out at the same time

hdu 1541 Stars 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1541 题目意思:有 N 颗星星,每颗星星都有各自的等级.给出每颗星星的坐标(x, y),它的等级由所有比它低层(或者同层)的或者在它左手边的星星数决定.计算出每个等级(0 ~ n-1)的星星各有多少颗. 我只能说,题目换了一下就不会变通了,泪~~~~ 星星的分布是不是很像树状数组呢~~~没错,就是树状数组题来滴! 按照题目输入,当前星星与后面的星星没有关系.所以只要把 x 之前的横坐标加起来就可以了

【百度之星2014~初赛(第二轮)解题报告】Chess

声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站,因此,笔者添加此条声明. 郑重声明:这篇记录<[百度之星2014~初赛(第二轮)解题报告]Chess>转载自 http://tiankonguse.com/ 的这条记录:http://tiankonguse.com/record/record.php?id=667 前言 最近要毕业了,有半年没做

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

[noip2011]铺地毯(carpet)解题报告

最近在写noip2011的题,备战noip,先给自己加个油! 下面是noip2011的试题和自己的解题报告,希望对大家有帮助,题目1如下 1.铺地毯(carpet.cpp/c/pas) [问题描述]为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有n 张地毯,编号从1 到n.现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上.地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的

ACdream 1203 - KIDx&#39;s Triangle(解题报告)

KIDx's Triangle Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit Statistic Next Problem Problem Description One day, KIDx solved a math problem for middle students in seconds! And than he created this problem. N