牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇
https://ac.nowcoder.com/acm/contest/218/B
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
「生命在各处成长。我的族人只是在寻找成长最旺的地方。」 ——妮沙瑞文
奥札奇军团降临!赞迪卡陷入危机!无尽轮回钨拉莫和真理屠夫寇基雷带领着这群庞大的掠食者在赞迪卡肆意破坏。旅法师妮莎瑞文必须要阻止这一切。
在赞迪卡时空的一角,有 n 个寇族的部落。为了抵御奥札奇的进攻,这些部落之间联系密切。在任意两个部落之间都有一条直接道路相连接。换句话说,这 n 个部落与若干条道路构成了一张完全图。
现在,奥札奇军团已经占领了 1 号寇族部落并停留在此处。而钨拉莫与寇基雷两王却开始了游戏(伊莫库大姐快来管管)。游戏的规则是这样的:钨拉莫与寇基雷两王轮流带领奥札奇军团移动一次。每次可以从一个寇族部落通过一条未被腐蚀的道路移动到另一个寇族部落。任何移动必须在这 n 个寇族部落及其道路中进行。由于奥札奇对法术力的吞噬,奥札奇军团行经的道路都会被腐蚀。最后,在规则的限制下,奥札奇军团将无路可走。此时,将带领军团进行下一步移动的奥札奇之王将输掉这个游戏。钨拉莫先手。
钨拉莫与寇基雷作为奥札奇三祖中的两者,自然拥有超高的智力。所以你可以认为,他们都将以最优决策进行游戏。
游戏的赢家将率领军队与妮莎作战,而妮莎还在赶来的路上。所以请你先观察这个游戏,到时便可以告诉妮莎谁会是她的对手。
输入描述:
本题有多组测试数据。
第一行一个正整数 T ,表示数据组数。
接下去 T 行,每行一个数 n ,表示寇族部落的个数。
输出描述:
输出共 T 行,每行一个字符串 "Ulamog, the Infinite Gyre" 或 "Kozilek, Butcher of Truth" 表示胜利者(去掉括号)。前者为无尽轮回钨拉莫,后者为真理屠夫寇基雷。
示例1
输入
2
1
3
输出
Kozilek, Butcher of Truth
Ulamog, the Infinite Gyre
说明
- 当 n=3 时,钨拉莫可以率领军团从 1 走到 2 ,之后 的边不能再走了。
- 下一步寇基雷只能带领军团移动至 3 ,之后 的边不能再走了。
- 最后钨拉莫只要将军团移回 1 ,寇基雷就无路可走了。
备注:
1 ≤ T ≤ 2000
1 ≤ n ≤ 2000
分析
首先看完题第一感觉,蜜汁题目,然后反应过来是博弈,从n=1开始算,123分别是KUU胜利,从4开始,在这里引入四面体来等效点,比如
从1到2的箭头用来表示此条边
然后此时轮到k走,可以发现k从2走到3和k从2走到4是一样的,所以假设k从2走到3,由于u是绝对聪明的,所以u的两个选择3->1和3->4,在做题的时候应该是分析两种情况,在这里只分析3->1,也就是必胜的情况,
当u从3->1时,k只有一种选择也就是1->4,在之后u就可以走4->2,让k无路可走,因为在这个过程中,k要么只有一种选择要么就走几个点都是等价的,所以u采取最佳策略的时候,k是没有机会胜利的,这也就是博弈的想法,当两个人都绝对聪明,全部采取最佳策略,最后的胜利者会是谁,分析此过程。
所以整个题目在n较大的时候同理只需要把k逼入一个死角里就可以了,而这个是很简单u可以实现的策略,所以只有当n=1时k胜利,其余时候都是u胜利。
AC代码:
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <time.h>
#include <queue>
#include <string.h>
#define sf scanf
#define pf printf
#define lf double
#define ll long long
#define p123 printf("123\n");
#define pn printf("\n");
#define pk printf(" ");
#define p(n) printf("%d",n);
#define pln(n) printf("%d\n",n);
#define s(n) scanf("%d",&n);
#define ss(n) scanf("%s",n);
#define ps(n) printf("%s",n);
#define sld(n) scanf("%lld",&n);
#define pld(n) printf("%lld",n);
#define slf(n) scanf("%lf",&n);
#define plf(n) printf("%lf",n);
#define sc(n) scanf("%c",&n);
#define pc(n) printf("%c",n);
#define gc getchar();
#define re(n,a) memset(n,a,sizeof(n));
#define len(a) strlen(a)
#define LL long long
#define eps 1e-6
using namespace std;
int main(){
int T = ;
s(T);
int n = ;
while(T --){
s(n);
if(n == ){
puts("Kozilek, Butcher of Truth");
}else{
puts("Ulamog, the Infinite Gyre");
}
}
}
感想:
这道题目主要考察逻辑思维能力,在我自己做的过程中也曾想过是否与完全图的边数的奇偶有关,然后算到n=4的时候意识到无法形成一个一笔画图的时候否定了这个猜想,又想到了七桥问题,每个点的奇偶性影响是否可以’一笔画,在n=5的时候我算错算是k胜利,所以走了一些弯路,总而言之还是一道好题。
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B的更多相关文章
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 牛客练习赛31 D神器大师泰兹瑞与威穆
双链表搞完了 #include<bits/stdc++.h> using namespace std; #define maxn 1000005 int tot,bac[maxn],fa[ ...
- 牛客练习赛31 D 最小相似度
最小相似度 链接 分析: 转化为求1的个数,这样两个串不同的位置的个数就是1的个数.那么对于一个二进制串x,它的贡献就是max{x与s[i]异或后0的个数}=>max{m-x与s[i]异或后1的 ...
- 牛客练习赛42 C 出题的诀窍 (贡献,卡常)
牛客练习赛42 C 出题的诀窍 链接:https://ac.nowcoder.com/acm/contest/393/C来源:牛客网 题目描述 给定m个长为n的序列a1,a2,-,ama_1 , a_ ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
- 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)
牛客练习赛48 A· 小w的a+b问题 链接:https://ac.nowcoder.com/acm/contest/923/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
随机推荐
- IDEA修改git账号及密码的方法 ----绝壁好使
就这个这个位置,之前的账号信息就保存在这里,直接编辑修改,修改成你现在的账号, idea提交的时候就能直接提交,或者提交的时候要输入账号密码,ok,我的微信 18550918581,不懂再找我
- 学习MeteoInfo二次开发教程(八)
总体没什么问题. 1.创建Projection菜单,Lambert,Geographic,ShowLatLon子菜单. 2.需要添加: using MeteoInfoC.Projections; 3. ...
- Resilience4j usage
1. pom 1) normal <dependency> <groupId>io.github.resilience4j</groupId> <artifa ...
- REST framwork之分页器,路由器,响应器
一 REST framwork分页器: from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination ...
- Python 多线程、进程
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- web监控,if 语句
对页面的测试 curl "] #if [`curl -I http://10.0.0.7 &>/dev/null|head -l|grep 200|wc -l` -eq 1] ...
- 【Noip模拟 20160929】树林
题目描述 现在有一片树林,小B很想知道,最少需要多少步能围绕树林走一圈,最后回到起点.他能上下左右走,也能走对角线格子. 土地被分成RR行CC列1≤R≤50,1≤C≤501≤R≤50,1≤C≤50,下 ...
- 使用jQuery+huandlebars遍历if判断不足引用helper
兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...
- es6之更优雅的条件语句
在使用JavaScript时,条件判断是经常会用到的,一些简单的判断条件还可以接受,当遇到比较复杂多重条件时就比较恶心了.这里使用es6的小技巧使判断更优雅. 1.使用 Arrary.includes ...
- Apache无法正常启动(配置多个监听端口)
Apache监测多个端口配置: 1.conf->extra->httpd-vhosts.conf 检查配置项是否写错 2.http.conf listen端口是否监听正确 3.环境变量中 ...