题目是这样的,游戏规则,每个人轮流将二维空间上的皇后往下,往左或者往斜下45度的方向移动。

谁第一个移动到0,0的位置就获胜。

题目给定你若干个矩形,求矩形中任取一点且该点必胜的概率有概率。

其实是这样的,我们需要把所有的必败点的坐标都求出来。发现在10^6以内的必败点的数量只有70多万个,这样我们可以全部存下来。

其实必败点是这样求得,第一个点为(0,0),接下来第i个点的坐标为(x,y),其中x为第一个没有在前面的坐标中间出现过的数字,y=x+i。

这样就把所有的必败的点都求出来了呢,同时由于对称性,我们要把另外一边的点也全部求出来。

这样相当于是存到了两个数组里面。

接下来的就是询问了。对于每个矩形,由于点的坐标是递增的,所以我们可以二分求出边界的满足矩形条件的点,然后就可以瞬间知道有多少个点在矩形里面了。

嗯,题目大概就是这样的。  好好理解吧,很好的一个博弈题目。

#include <iostream>
#include <cstdio>
#include <cstring>
#define maxn 1000100
#define ll long long
using namespace std; bool b[maxn];
int x[][maxn],y[][maxn],cur,n,tot,l,r,mid,T,x1,x2,y1,y2,cas=;
int pos1,pos2;
ll ans,sum,G; ll gcd(ll A,ll B) { return B==?A:gcd(B,A%B); } ll find(int k)
{
l=,r=tot;
while (l<r)
{
mid=(l+r)>>;
if (x1<=x[k][mid] && y1<=y[k][mid]) r=mid;
else l=mid+;
}
pos1=l;
l=,r=tot;
while (l<r)
{
mid=(l+r)>>;
if (x[k][mid]<=x2 && y[k][mid]<=y2) l=mid+;
else r=mid;
}
pos2=l;
return max(,pos2-pos1);
} int main()
{
memset(b,false,sizeof b);
cur=n=x[][]=y[][]=tot=;
b[]=true;
while (cur<maxn)
{
n++;cur++;
while (n<maxn && b[n]) n++;
if (n>=maxn) break;
x[][++tot]=n,y[][tot]=n+cur;
x[][tot]=y[][tot],y[][tot]=x[][tot];
b[n]=true;
if (n+tot>maxn) break;
b[n+tot]=true;
}
scanf("%d",&T);
while (T--)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
ans=find()+find();
if (x1== && y1==) ans--;
sum=(ll)(x2-x1+)*(y2-y1+);
ans=sum-ans;
printf("Board %d: ",++cas);
if (ans==)
{
printf("0 / 1\n");
continue;
}
G=gcd(ans,sum);
ans/=G,sum/=G;
printf("%lld / %lld\n",ans,sum);
}
}

UVA11735_Corner the Queens的更多相关文章

  1. Jeff Somers's N Queens Solutions 最快的n皇后算法

    /* Jeff Somers * * Copyright (c) 2002 * * jsomers@alumni.williams.edu * or * allagash98@yahoo.com * ...

  2. [CareerCup] 9.9 Eight Queens 八皇后问题

    9.9 Write an algorithm to print all ways of arranging eight queens on an 8x8 chess board so that non ...

  3. lintcode 中等题:N Queens II N皇后问题 II

    题目: N皇后问题 II 根据n皇后问题,现在返回n皇后不同的解决方案的数量而不是具体的放置布局. 样例 比如n=4,存在2种解决方案 解题: 和上一题差不多,这里只是求数量,这个题目定义全局变量,递 ...

  4. lintcode 中等题:N Queens N皇后问题

    题目: N皇后问题 n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击.<不同行,不同列,不同对角线> 给定一个整数n,返回所有不同的n皇后问题的解决方案. 每个解决方案 ...

  5. Codeforces Gym 100650D Queens, Knights and Pawns 暴力

    Problem D: Queens, Knights and PawnsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu ...

  6. Poj 3239 Solution to the n Queens Puzzle

    1.Link: http://poj.org/problem?id=3239 2.Content: Solution to the n Queens Puzzle Time Limit: 1000MS ...

  7. Pat1128:N Queens Puzzle

    1128. N Queens Puzzle (20) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue The & ...

  8. PAT 1128 N Queens Puzzle

    1128 N Queens Puzzle (20 分)   The "eight queens puzzle" is the problem of placing eight ch ...

  9. kolla queens on centos7.5 -all in one

    目录 环境准备 开始配置 快照,快照,快照 pull镜像并部署 登录配置OpenStack 环境准备 我这里用workstation创建了一个虚拟机,安装centos7.5 mini系统,这台虚拟机上 ...

随机推荐

  1. 20155236 《信息安全概论》实验二(Windows系统口令破解)实验报告

    20155236 <信息安全概论>实验二(Windows系统口令破解)实验报告 北京电子科技学院(BESTI) 实验报告 课程:信息安全概论 班级:1552 姓名:范晨歌 学号:20155 ...

  2. 20155307 《Java程序设计》课堂实践项目数据库

    老师我上课没有在规定时间内完成,这是我补交的截图

  3. 20155307 2016-2017-2《Java程序设计》课程总结

    预备作业1 预备作业1 预备作业1 第1周作业 第2周作业 第3周作业 第4周作业 第5周作业 第6周作业 第7周作业 第8周作业 第9周作业 第10周作业 自认为写得最好一篇博客是?为什么? 是这篇 ...

  4. 2016-2017-2 20155322 实验四 Android 开发基础

    2016-2017-2 20155322 实验四 Android 开发基础 实验内容 下载和安装Android Studio 学会使用Android Studio进行简单的Android开发 实验知识 ...

  5. slqite3练习

    连接 import sqlite3 con = sqlite3.connect(":memory:") c = con.cursor() # Create table c.exec ...

  6. 使用Python进行分布式系统协调 (ZooKeeper/Consul/etcd)

    来源:naughty 链接:my.oschina.net/taogang/blog/410864 笔者之前的博文提到过,随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式 ...

  7. HIVE简介及安装

    一.简介 百度百科HIVE定义: hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运 ...

  8. Windows操作系统C盘占用空间过多

    Windows操作系统C盘占用空间过多 大部分的windows电脑用户在长时间使用PC时都会遇到一个问题,就是C盘占用的空间会越来越多,乃至占满整个C盘. 后来在百度了一波,发现各种方法都试过了,也不 ...

  9. mongodb4简明笔记

    就一数据库,掌握基本用法,其他的现学现卖就行了. 所以要把握基本套路. 创建数据库=>使用数据库=>创建集合=>使用集合=>创建文档=>使用文档 1.数据库 mongod ...

  10. Visual Studio 调试时无法命中断点

    1.查看代码优化是否勾选,如有去掉勾选 2.确保是在Debug模式下设置的断点 3.确保在启动时未修改代码即“要求源文件和原始版本完全匹配” 4.DLL的引用问题