我还在小学的时候以现在初中名义我大五十牛逼参加了这次,然后身败名裂死磕这道题不会,现在觉得自己好傻啊 233333

显然这是要统计每个区间的贡献,所以我们可以打出来这个暴力,统计每个区间的次数,对于 \(n = 5\) 的情况可得

[1,1] 24  [1,2] 24  [1,3] 24  [1,4] 24  [1,5] 24
[2,2] 30 [2,3] 30 [2,4] 30 [2,5] 30
[3,3] 40 [3,4] 40 [3,5] 40
[4,4] 60 [4,5] 60

\([l, r]\) 代表区间,后面的代表贡献次数。

然后下面的操作比较人类智慧,我当时也是突发奇想才想到的规律。

首先我们发现每一行的次数都是一样的,我们把它写成一个数列 \(24,30,40,60,120\)。然后我们就丢到 OIES 上找但是找不到我们不难发现 \(24 = 4! = 4 \times 3 \times 2\times 1\)。

下一个数字是 \(30\),我们写成类似形式。

\(30 = 3\times 10 = 5\times 3 \times 2 = 5\times 3 \times 2\times 1\)。

再下一个是 \(40\),类似形式 \(40 = 5 \times 4\times 2 \times 1\)。同理 \(60 = 5\times 4\times 3 \times 1, 120 = 5\times 4\times 3\times 2\)。

列一张表

n = 5
24=4*3*2*1
30=5*3*2*1
40=5*4*2*1
60=5*4*3*1

发现了什么?对于第一行,是 \((n - 1)!\)。第二行是 \(\dfrac{(n - 1)!}{n - 1}\times n\),第三行是 \(\dfrac{(n - 1)!}{n - 2}\times n\)。

总而言之,第 \(k\) 行,次数是 \(\dfrac{(n - 1)!}{n - k + 1}\times n = \dfrac{n!}{n - k +1}\)。

然后就是非常简单的东西了,统计每行的和,然后按照上面的次数乘一下就行了。

//SIXIANG
#include <iostream>
#define MAXN 500
#define LL long long
#define QWQ cout << "QWQ" << endl;
using namespace std;
const LL Mod = 998244353;
LL w[MAXN + 10][MAXN + 10], frac[MAXN + 10], sum[MAXN + 10];
LL qmul(LL n, LL m) {
LL res = 0;
while(m) {
if(m & 1) res = (res + n) % Mod;
n = (n + n) % Mod, m >>= 1;
}
return res;
}
LL qpow(LL n, LL m) {
LL res = 1;
while(m) {
if(m & 1) res = qmul(res, n) % Mod;
n = qmul(n, n) % Mod, m >>= 1;
}
return res;
}
int main() {
int n; cin >> n;
frac[0] = 1;
for(int p = 1; p <= n; p++)
frac[p] = (frac[p - 1] * p) % Mod;
for(int p = 1; p < n; p++)
for(int i = p; i <= n; i++)
cin >> w[p][i], sum[p] = (sum[p] + w[p][i]) % Mod; LL ans = 0;
for(int p = 1; p < n; p++)
ans = (ans + qmul(sum[p], qmul(frac[n], qpow((n - p + 1), Mod - 2)))) % Mod;
cout << ans << endl;
}

题解 P7623 [AHOI2021初中组] 收衣服的更多相关文章

  1. test20230111考试总结 -2023寒图论专题

    前言 赛时得分情况: A B C D E F G H I \(\texttt{Total}\) \(\texttt{Rank}\) \(100\) \(100\) \(10\) \(58\) \(54 ...

  2. html5 canvas雨点打到窗玻璃动画

    html5 canvas雨点打到窗玻璃动画 HTML5下雨效果 效果预览:http://hovertree.com/texiao/html5/4.htm 以下是代码: <!doctype htm ...

  3. 用Editplus开发Java

    ☆ 准备工作 ①,已安装好jdk,同时配置系统变量(3个,JAVA_HOME,PATH,CLASSPATH) ②,电脑已安装Editplus,并做好设置. ☆ Editplus配置java开发环境 对 ...

  4. Linux-理解ARP、网关、路由

    假设你叫小不点(本地主机),住在一个大院子(本地局域网)里,有很多邻居(网络邻居),门口传达室有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个伙伴玩,只要你在院子里大喊一声他的名字(pin ...

  5. IP地址,子网掩码,默认网关,路由,形象生动阐述

    自己的Linux虚拟机已经分配了固定的IP地址(使用无线路由,用的是192.168.1.XX网段),公司的无线网络分配的IP地址是(10.51.174.XX网段) 所以当自己的电脑拿到公司,还想使用桥 ...

  6. 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...

    计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...

  7. 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)

    观察者模式 Observer 意图 定义对象一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新. 别名:依赖(Dependents),发布订阅(Publish-Su ...

  8. Python-JS (JS介绍~JS的基础数据类型)

    目录一.JS语言介绍: 1.JS概念 2.JS组成 二.JS的三种存在位置(引入方式): 1.行间式: 2.内联式: 3.外联式: 三.JS出现的具体位置: 四.JS语法规范 五.JS中变量的定义 E ...

  9. day50

    JS基础 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMAScript.主要版本ES5和ES6 DOM:文档对 ...

  10. [经典]网关,DNS,DHCP三者关系详解

    什么叫网关的精解 Sample Text转自(协议分析论坛)计算机主机网关的作用是什么?假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的 ...

随机推荐

  1. Dev-Cpp下载与安装

    目录 一.介绍 Dev-Cpp 二.下载 Dev-Cpp 1.通过百度网盘下载 2.通过 SourceForge 官网下载 三.安装 Dev-Cpp 写在结尾的话 免责声明 大家好,这里是 main工 ...

  2. CentOS Linux 的安装

    CentOS Linux 的安装 作者:Grey 原文地址: 博客园:CentOS Linux 的安装 CSDN:CentOS Linux 的安装 说明 本安装说明是基于 Windows 10 下 V ...

  3. go操作Kfaka

    目录 1. Kafka介绍 1.1.1. Kafka是什么 1.1.2. Kafka的特点 1.1.3. 常用的场景 1.1.4. Kafka中包含以下基础概念 1.1.5. 消息 1.1.6. 消息 ...

  4. .NET技术与企业级解决方案研究应用

    分布式缓存框架 Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的KV ...

  5. MySQL主从配置(Django实现主从配置读写分离)

    目录 一 MySQL主从配置原理(主从分离,主从同步) 二 操作步骤 2.1我们准备两台装好mysql的服务器(我在此用docker模拟了两台机器) 2.2 远程连接入主库和从库 远程连接主库 远程连 ...

  6. 可视化编排的数据集成和分发开源框架Nifi轻松入门-上

    @ 目录 概述 定义 dataflow面临挑战 特性 核心概念 架构 高级概述 安装 部署 常见处理器 入门示例 概述 定义 Nifi 官网地址 https://nifi.apache.org/ Ni ...

  7. SQLMap入门——获取当前网站数据库的用户名称

    列出当前网站使用的数据库用户 python sqlmap.py -u http://localhost/sqli-labs-master/Less-1/?id=1 --current-user

  8. Spring之Bean注入Spring容器中的方式

    向spring容器中加入bean有以下方式: 通过<Bean>标签 @Configuration + @Bean @Component + 组件扫描 @Import导入[见 Spring注 ...

  9. sstream中的stringstream怎么用

    sstream中的stringstream怎么用 1.cin cin是从缓冲区读入,会把空格.回车等不可见的字符当做是分割,跳过.并且最后读入之后,后面会有剩余的部分,比如空格.回车等. 2.getl ...

  10. 最最最常用的Git提交规范以及常用命令总结

    提交规范 为什么要制定提交规范? 便于对提交历史进行追溯,以及快速定位 代码改动的历史更加清晰 格式化的 Commit Message 才可以用于自动化输出 Change log 如何制定提交规范? ...