P6475 [NOI Online #2 入门组] 建设城市 题解

P6475 [NOI Online #2 入门组] 建设城市

传送门

分类讨论:
\(f(x, y)\)\(C^{j-1}_{i +j -1}\)

  1. \(x,y\)在同一旁
    \(x, y\)之间的看成一个高楼
    公式\(f(n,m)\times f(n+x-y,m)\)
  2. \(x, y\)在异侧
    枚举\(x,y\)高楼的高度\(h\)
    \(\displaystyle \sum^{n}_{i=1}f(x-1,i)*f(n-x,m-i+1)*f(y-n-1,m-i+1)* f(2*n-y,i)\)

接着我们要处理的是\(f(x,y)\)

\[f(x,y)=C^{y-1}_{i +j-1}\\ C^n_m=\frac{m!}{n!(m-n)!} \]

如何\(O(1)\)查询呢?
我们用\(O(n)\)时间预处理出阶乘逆元

fac[0] = inv[0] = 1;
for (int i = 1; i <= M; ++i) fac[i]= (fac[i - 1] * i) % MOD;
inv[M] = Qpow(inv[M], MOD - 2);
for (int i = M - 1; i >= 1; --i) inv[i] = inv[i + 1] * (i + 1) % MOD;

查询:

int C(int n, int m)
{ return fac[m] * inv[n] % MOD * inv[m - n] % MOD; }
int f(int n, int m)
{ return C(y - 1, i + j - 1); }

code :

#include <bits/stdc++.h>#define int long long
using namespace std;
const int inf = 0x3f3f3f3f;
const int MOD = 998244353, N = 2e5 + 5, M = 2e5;
int fac[N], inv[N], ans;int Qpow(int x, int y)
{int res = 1;for (; y; y /= 2, (x *= x) %= MOD)if (y & 1) (res *= x) %= MOD;return res;
}int C(int n, int m)
{ return fac[m] * inv[n] % MOD * inv[m - n] % MOD; }
int f(int i, int j)
{ return C(j - 1, i + j - 1); }signed main()
{fac[0] = inv[0] = 1;for (int i = 1; i <= M; ++i) fac[i]= (fac[i - 1] * i) % MOD;inv[M] = Qpow(fac[M], MOD - 2);for (int i = M - 1; i >= 1; --i) inv[i] = inv[i + 1] * (i + 1) % MOD;int m, n, x, y;scanf("%lld%lld%lld%lld", &m, &n, &x, &y);if (x <= n && y > n)for (int i = 1; i <= m; i++)ans = (ans + f(x - 1, i) * f(n - x, m - i + 1) % MOD * f(2 * n - y, i) % MOD * f(y - n - 1, m - i + 1) % MOD) % MOD;else ans = f(n, m) * f(n + x - y, m) % MOD;printf("%lld", ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/772485.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态内存分配的策略研究

使用Carnegie Mellon University提供的C语言模拟代码为测试,验证多种分配策略的特性,为设计新的更高效的算法进行探路,工程文件附于文章末尾。 基本宏定义 阅读C语言测试模型,得到基本分配块的结构约定。#define ALIGNMENT 8 //校准字长,4或8 #define ALIGN(size…

Naplespu微体系结构内多个插件融合分析(草稿)

Naplespu微体系结构内多个插件融合分析(草稿) http://www.naplespu.com/doc/index.php?title=Detailed_studies 介绍 打算展示替换链是如何相对于L2缓存发生的,观察目录控制器是如何演变以管理此类情况的发生的。主要目的是测试发生L2替换的所有情况,如图所示:目录控制器…

python-if elif嵌套结构

if 条件:if语句块 elif 条件:elif语句块 else:else语句块 示例:

python-换行

a=10+\20+\30 #\是换行符print(a)b=(10+20+30) #括号换行 print(b)

浅谈 I/O 与 I/O 多路复用

1.基础知识网络编程里常听到阻塞IO、非阻塞IO、同步IO、异步IO等概念,总听别人聊不如自己下来钻研一下。不过,搞清楚这些概念之前,还得先回顾一些基础的概念。下面说的都是Linux环境下,跟Windows环境不一样哈☺。1.1 用户空间和内核空间现在操作系统都采用虚拟寻址,处理器…

服务器性能监控系统安装与配置手册

服务器性能监控系统安装与配置手册 1. 前言 本手册旨在指导用户安装与配置服务器性能监控系统,并介绍系统的主要功能及使用方式。 2. 系统概述 本系统采用 [系统名称] 作为核心监控组件,并结合 [其他组件] 实现服务器性能的实时监控、告警和数据分析。 3. 系统架构监控节点: …

Java学习Day3_上 总结

1.算术运算符: %运算: a % b = a - a / b * b 2.关系运算符: 返回值是boolean类型. 3.逻辑运算符: PASS 4.三元运算符: 条件表达式 ? : 表达式1:表达式2; public class ThreeEye {public static void main(String arg[]) {int a = 1, b = 2;int c = a > b ? a : b;System…

太卷了,阿里云免费1个月大模型算力额度,玩转Llama3.1/Qwen2等训练推理

阿里云百炼平台发布推文,提供30天免费算力额度,助力玩转 Llama3.1 训练推理。老牛同学首当其冲,去体验一把,本文详细记录了整个过程,同时给出了老牛同学的一些想法,欢迎交流学习……早上收到朋友转发的阿里云公众号推文,阿里云为用户免费提供 1 个月的训练推理等算力额度…

【待做】【攻防技术系列+免杀】从零学习Webshell免杀

项目简介 这是一本能让你从零开始学习PHP的WebShell免杀的手册 博客地址: https://blog.zgsec.cn/index.php/archives/197/项目描述 一、PHP相关资料 PHP官方手册: https://www.php.net/manual/zh/PHP函数参考: https://www.php.net/manual/zh/funcref.php菜鸟教程: https:…

如何配置 pglogical | PostgreSQL 的流复制

pglogical 扩展为 PostgreSQL 提供逻辑流复制 我们使用以下术语来描述节点之间的数据流,有意重复使用早期的 Slony 技术: • 节点 - PostgreSQL 数据库实例 • 提供者和订阅者 - 节点承担的角色 • 复制集- 表的集合 建筑细节: • pglogical在每个数据库级别上工作,而不是像…

Go语言结构体(struct)面向对象编程基础篇

作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 目录一.面向对象的引入1.Golang语言面向对象编程2.结构体的引入3.结构体定义4.结构体五种初始化方式5.结构体的互相转换6.匿名结构体二.结构体方法定义1.方法概述2.方法是值拷贝传递方式3.指针类型的接收者4.…

Linux的权限控制

本章将和大家分享Linux中的权限控制。本章将和大家分享Linux中的权限控制。废话不多说,下面我们直接进入主题。 一、基础知识 Linux作为一种多用户的操作系统(服务器系统),允许多个用户同时登陆到系统上,并响应每个用户的请求。 任何需要使用操作系统的用户,都需要一个系统…