【题目链接】 http://poj.org/problem?id=2315

【题目大意】

  两名球员轮流从N个球中挑出不多于M个射门,每个球半径都是R,离球门S。
  每次只能踢出L以内的距离。进最后一个球者胜,求谁有必胜策略?

【题解】

  我们发现对数据进行处理之后,题目等价于给出n堆石子,
  每堆石子中每次最多取k个石子,每次最多选取m个石子堆做操作的博弈问题
  首先我们将每堆石子堆对k+1取模简化运算,
  对于只能取一堆石子上的石子的做法我们是对所有的石子堆的sg值进行xor运算得到sg值
  xor又称为半加运算,只进行加法而不进位,
  对于选取m堆石子的博弈我们的xor则是对于m+1进制下的半加运算,
  所以我们按位计算这个sg值,模拟m+1进制下的半加运算即可得到答案。

【代码】

#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const int N=30;
const double PI=acos(-1.0);
int n,m,l,r,a[N],sg[N];
int dis(int s){return (int)(s/(2*PI*r))+1;}
bool solve(){memset(sg,0,sizeof(sg));int k=dis(l);for(int i=0;i<n;i++)for(int j=0,g=dis(a[i])%k;sg[j]+=g&1,g;j++,g>>=1);for(int i=0;i<30;i++)if(sg[i]%(m+1))return 1;return 0;
}
int main(){while(~scanf("%d%d%d%d",&n,&m,&l,&r)){for(int i=0;i<n;i++)scanf("%d",&a[i]);puts(solve()?"Alice":"Bob");}return 0;
}

转载于:https://www.cnblogs.com/forever97/p/poj2315.html

POJ 2315:Football Game(博弈论)相关推荐

  1. poj 3071 Football(概率dp)

    http://poj.org/problem? id=3071 大致题意:有2^n个足球队分成n组打比赛.给出一个矩阵a[][],a[i][j]表示i队赢得j队的概率.n次比赛的流程像这样France ...

  2. poj 3071 Football

    http://poj.org/problem?id=3071 2^n 支足球队比赛,共比n场,第一场1号与2号比,3号与4号比-- 每场胜出者进入下一场,输者淘汰 每一场都是相邻的两个队伍比拼 已知任 ...

  3. POJ 2975 Nim(博弈论)

    [题目链接] http://poj.org/problem?id=2975 [题目大意] 问在传统的nim游戏中先手必胜策略的数量 [题解] 设sg=a1^a1^a3^a4^---^an,当sg为0时 ...

  4. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...

  5. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  6. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  7. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  8. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

  9. 备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)

    挑战程序设计竞赛(第2版)练习题 tips:难度(个人主观判断): 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的"动态规划" ...

最新文章

  1. linux insight 使用教程,Insight API开源项目分析
  2. MySQL INNODB Plugin 测试(二)
  3. Canvas实用库Fabric.js使用手册
  4. c语言编写服务器的优点,用C语言编写的服务器中记录效率最高的文件是什么?...
  5. influxdb介绍,安装,使用等(转载:http://www.jianshu.com/p/d2935e99006e)
  6. JSR 303从I18N属性文件加载消息
  7. html5视频播放器隐藏控制,HTML5 video标签(播放器)学习笔记(二):播放控制
  8. MyEclipse 10的使用技巧
  9. Webpack使用教程五(Babel)
  10. html 字体思源_CSS3嵌入字体@font-face调用字体(思源宋体regula/PingFang SC/ttf/woff)...
  11. Unity 工具 之 常用的音乐/音频/语音类插件整理(音乐节拍/可视化/语音聊天/文字转语音等)
  12. 轨迹跟踪—线性 MPC 控制算法
  13. 计算机没有无线网卡驱动程序,电脑上没有光驱怎么安装无线网卡驱动 - 驱动管家...
  14. Feburary——1438. 绝对差不超过限制的最长连续子数组(滑动窗口)
  15. 数据导入与预处理-第4章-数据获取python读取pdf文档
  16. 武大博士后应聘社区社工引热议,内卷还是人各有志?
  17. 甘肃省全国计算机等级考试(NCRE)报名
  18. 局域网语音对讲系统_IP广播对讲系统停车场解决方案
  19. openflow协议之meter表简单实现
  20. [裴礼文数学分析中的典型问题与方法习题参考解答]5.1.28

热门文章

  1. 易语言https服务器,E2EE应用服务器套件 - 文档 - [基础教程] 使用HTTPS(SSL) - E2EE易语言网站敏捷开发框架...
  2. vs2013 matlab 教程,Matlab 2016a和VS2013混合Dll编程步骤总结
  3. python概念英文版_python重要概念
  4. lottie动画_Lottie内存泄漏问题的定位与分析
  5. oracle 列级外键,Oracle 中的外键与锁
  6. 使用git克隆GitHub仓库时报错解决方案
  7. java基本类型的包装类型_有了基本数据类型,为什么还需要包装类型
  8. python摄像头人脸识别代码_python 实现摄像头人脸识别
  9. 世界科学技术通史_全球科技通史
  10. php tiff,在PHP中将tiff转换为jpg?