当前位置: 首页 > news >正文

放课后的约定

【题目描述】

“十年。十年前。天空的蔚蓝,云彩的舒软。我,怎么会认识你。洁白的,洁白的,十年前。我无法忘却。终究是小时候的约定。记忆被困在冻土里,有时我不认识那天的我。难道一切,都锁在心里面了吗?”

学校草坪为一块N×M的地图,一条从左上角(1,1)、千棘从右下角(n,m)开始寻找。

每个时刻,一条会选择一个他自己没有找过的某块草坪开始找,千棘也这么做,但是,同一时刻,一条和千棘不能在同一个格子里,不然他们会发生口角。

现询问有多少合法的搜寻方案。

【输入描述】

第一行输入两个整数N、M,表示草坪的长和宽。

【输出描述】

一行输出一个正整数Ans,表示方案数 mod 23333的值。

【输入样例】

2 2

【输出样例】

18

【数据范围及提示】

样例解释:

一条:(1,1)-(1,2)-(2,1)-(2,2)  千棘:(2,2)-(1,1)-(1,2)-(2,1)

一条:(1,1)-(1,2)-(2,1)-(2,2)  千棘:(2,2)-(2,1)-(1,1)-(1,2)

一条:(1,1)-(1,2)-(2,1)-(2,2)  千棘:(2,2)-(2,1)-(1,2)-(1,1)

一条:(1,1)-(1,2)-(2,2)-(2,1)  千棘:(2,2)-(1,1)-(2,1)-(1,2)

一条:(1,1)-(1,2)-(2,2)-(2,1)  千棘:(2,2)-(2,1)-(1,1)-(1,2)

一条:(1,1)-(1,2)-(2,2)-(2,1)  千棘:(2,2)-(2,1)-(1,2)-(1,1)

一条:(1,1)-(2,1)-(1,2)-(2,2)  千棘:(2,2)-(1,1)-(2,1)-(1,2)

一条:(1,1)-(2,1)-(1,2)-(2,2)  千棘:(2,2)-(1,2)-(1,1)-(2,1)

一条:(1,1)-(2,1)-(1,2)-(2,2)  千棘:(2,2)-(1,2)-(2,1)-(1,1)

一条:(1,1)-(2,1)-(2,2)-(1,2)  千棘:(2,2)-(1,1)-(1,2)-(2,1)

一条:(1,1)-(2,1)-(2,2)-(1,2)  千棘:(2,2)-(1,2)-(1,1)-(2,1)

一条:(1,1)-(2,1)-(2,2)-(1,2)  千棘:(2,2)-(1,2)-(2,1)-(1,1)

一条:(1,1)-(2,2)-(1,2)-(2,1)  千棘:(2,2)-(1,1)-(2,1)-(1,2)

一条:(1,1)-(2,2)-(1,2)-(2,1)  千棘:(2,2)-(1,2)-(2,1)-(1,1)

一条:(1,1)-(2,2)-(1,2)-(2,1)  千棘:(2,2)-(2,1)-(1,1)-(1,2)

一条:(1,1)-(2,2)-(2,1)-(1,2)  千棘:(2,2)-(1,1)-(1,2)-(2,1)

一条:(1,1)-(2,2)-(2,1)-(1,2)  千棘:(2,2)-(1,2)-(1,1)-(2,1)

一条:(1,1)-(2,2)-(2,1)-(1,2)  千棘:(2,2)-(2,1)-(1,2)-(1,1)

共计18种方案。

对于30%的数据,n ≤ 2011,m ≤ 1000;

对于100%的数据,1 ≤ n ≤ 20114820163637,1 ≤ m ≤ 201205201610。

源代码:

#include<cstdio>
#define INF 23333
#define LL long long
LL n,m,Sum=1,i[24000];
int main()
{
    scanf("%I64d%I64d",&n,&m);
    if (n>INF||m>INF||n*m>INF||n*m==1) //一模没。
    {
        printf("0");
        return 0;
    }
    if (m*n==2) //都是特判。
    {
        printf("1");
        return 0;
    }
    i[2]=1;
    for (LL a=1;a<=n*m-2;a++)
      Sum=Sum*a%INF;
    for (LL a=3;a<=n*m;a++)
      i[a]=(i[a-1]+i[a-2])%INF*(a-1)%INF;
    printf("%I64d",Sum*i[n*m]%INF);
    return 0;
}

/*
    排列组合还是弱。
    n*m个格子可以看做S(n*m)个信封(⑨要写信)。
    若第1个格子不作要求,则第1个格子有n*(n-1)种可能,那么一条的方案数就是错排公式:
        (S-1)*(f[S-1]+f[S-2])
    同时,千棘(其实我是小野寺党)的方案数为全排列:
        S!
    若第1个格子为定值,则最终结果为:
        (S-2)!*f[S]
    还是要冷静仔细地分析问题。
*/

转载于:https://www.cnblogs.com/Ackermann/p/6055571.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Matlab Tricks(二十)—— Hilbert matrix 的创建
  • php面向对象
  • require.js与sea.js的区别
  • 11-13
  • Discuz! 6.x/7.x 全局变量防御绕过导致命令执行
  • 各类应用的简称
  • java的反射
  • Spring+AOP+Log4j 用注解的方式记录指定某个方法的日志
  • 使用Apache的Base64类实现Base64加解密
  • 【ARM-Linux开发】在win下开发的eclipse+yougatoo+jlink环境搭建
  • Python 绘图利器 —— ggplot
  • Linux下多网卡同网段多IP网络分流设定方法
  • 跟庄
  • SQL连接查询
  • 算法导论笔记之红黑树
  • [译]CSS 居中(Center)方法大合集
  • 10个确保微服务与容器安全的最佳实践
  • Apache Pulsar 2.1 重磅发布
  • css属性的继承、初识值、计算值、当前值、应用值
  • express如何解决request entity too large问题
  • Go 语言编译器的 //go: 详解
  • go语言学习初探(一)
  • Gradle 5.0 正式版发布
  • Redis的resp协议
  • redis学习笔记(三):列表、集合、有序集合
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 测试开发系类之接口自动化测试
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 消息队列系列二(IOT中消息队列的应用)
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 中文输入法与React文本输入框的问题与解决方案
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • #if #elif #endif
  • (1)Android开发优化---------UI优化
  • (4)事件处理——(7)简单事件(Simple events)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (六)激光线扫描-三维重建
  • (算法)大数的进制转换
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .DFS.
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .Net 基于MiniExcel的导入功能接口示例
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)
  • .net6使用Sejil可视化日志
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .NET技术成长路线架构图
  • .net解析传过来的xml_DOM4J解析XML文件