博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 1051 Simple Game on a Grid
阅读量:6107 次
发布时间:2019-06-21

本文共 937 字,大约阅读时间需要 3 分钟。

URAL_1051

    这个题目基本算是YY出来的,具体也没有去证明。

    由于N和M可能比较大,于是就想如何将其变成小一点矩阵去考虑,这时发现3*x(x>=2)的矩阵有一个特性,可以变成3*(x-1)的矩阵,利用这个特性,我们可以将N*M(N,M>=3)的矩阵变成3*3、3*4、3*5、4*4、4*5、5*5之中的一个(因为可以通过一定的手段让x*y的矩阵变成(x-3)*y的矩阵,有个前提就是y>=3,至于怎么搞还是留给大家做思考吧,就不多说了),这样只要考虑有限个矩阵的情况就可以得到最后的结果了(不过我没有证明变成这样会不会使结果更差)。

    画一下就可以得到3*3、3*4、3*5最后只能变成2个,而4*4、4*5、5*5最后可以变成1个。

    接下来还要讨论一下2*x和1*x的情况,对于2*x(x>=4)也可以得到一个特性,即可以变成2*(x-3)的矩阵。

#include
#include
void swap(int &x, int &y){ int t; t = x, x = y, y = t;}int main(){ int x, y; while(scanf("%d%d", &x, &y) == 2) { if(x > y) swap(x, y); if(x == 1) printf("%d\n", y / 2 + (y % 2 ? 1 : 0)); else if(x == 2) { y %= 3; printf("%d\n", y ? 1 : 2); } else { x = x % 3 + 3, y = y % 3 + 3; if(x > y) swap(x, y); printf("%d\n", x == 3 ? 2 : 1); } } return 0;}

转载地址:http://aueza.baihongyu.com/

你可能感兴趣的文章
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>