我还在小学的时候以现在初中名义我大五十牛逼参加了这次,然后身败名裂死磕这道题不会,现在觉得自己好傻啊 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. Qt网络编程-书接上文,浅谈TCP文件收发,以及心跳包

    qt网络编程-书接上文,浅谈文件收发 上文Qt网络编程-从0到多线程编程中谈到 在qt中的qtcpsocket通讯的用法,接下来浅谈一下关于tcp通讯的实际应用,当然了由于是浅谈,也不能保证其功能的完 ...

  2. week_10

    Andrew Ng 机器学习笔记 ---By Orangestar Week_10 (大数据处理) 1. Learning With Large Datasets 机器学习很多时候都要处理非常多的数据 ...

  3. python之路24之 面向对象动静态方法、继承、派生

    昨日内容回顾 人狗大战 1.直接使用字典表示人和狗 p1 = {} p2 = {} p3 = {} p4 = {} 2.封装产生人和狗的函数 def crreate_person():pass def ...

  4. [cocos2d-x]关于坐标系

    本文从cocos2dx官网看到,搬运过来学习一下. cocos2d-x3.X的坐标系 Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系. 笛卡尔坐标系中定义右手系原点在左下角, ...

  5. Ubuntu desktop 文件的书写格式

    首先切换到存放 desktop 文件的目录下,编辑好就可以保存了 cd /usr/share/applications/ vim name.desktop [Desktop Entry] Name=显 ...

  6. Dubbo 中 Zookeeper 注册中心原理分析

    vivo 互联网服务器团队- Li Wanghong 本文通过分析Dubbo中ZooKeeper注册中心的实现ZooKeeperResitry的继承体系结构,自顶向下分析了AbstractRegist ...

  7. Grafana 系列文章(五):Grafana Explore 查询管理

    ️URL: https://grafana.com/docs/grafana/latest/explore/query-management/ Description: Explore 中的查询管理 ...

  8. 10月27日内容总结——hashlib加密模块和logging、subprocess模块

    目录 一.hashlib加密模块 1.何为加密 2.为什么加密 3.如何判断数据是否以加密 4.密文的长短有什么意义 5.加密算法的基本操作 二.加密补充说明 三.subprocess模块 1.sub ...

  9. 【LeetCode】三数之和+四数之和(双指针)

    之所以放在一起是因为,"四数之和"的解题方法基本与"三数之和"一致 由此我们可以推出n数之和的解法 本质上,我们只是使用双指针的方法降低此类问题的时间复杂度 当 ...

  10. 【Rust学习】内存安全探秘:变量的所有权、引用与借用

    作者:京东零售 周凯 一.前言 Rust 语言由 Mozilla 开发,最早发布于 2014 年 9 月,是一种高效.可靠的通用高级语言.其高效不仅限于开发效率,它的执行效率也是令人称赞的,是一种少有 ...