题解 P7623 [AHOI2021初中组] 收衣服
我还在小学的时候以现在初中名义我大五十牛逼参加了这次,然后身败名裂死磕这道题不会,现在觉得自己好傻啊 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初中组] 收衣服的更多相关文章
- test20230111考试总结 -2023寒图论专题
前言 赛时得分情况: A B C D E F G H I \(\texttt{Total}\) \(\texttt{Rank}\) \(100\) \(100\) \(10\) \(58\) \(54 ...
- html5 canvas雨点打到窗玻璃动画
html5 canvas雨点打到窗玻璃动画 HTML5下雨效果 效果预览:http://hovertree.com/texiao/html5/4.htm 以下是代码: <!doctype htm ...
- 用Editplus开发Java
☆ 准备工作 ①,已安装好jdk,同时配置系统变量(3个,JAVA_HOME,PATH,CLASSPATH) ②,电脑已安装Editplus,并做好设置. ☆ Editplus配置java开发环境 对 ...
- Linux-理解ARP、网关、路由
假设你叫小不点(本地主机),住在一个大院子(本地局域网)里,有很多邻居(网络邻居),门口传达室有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个伙伴玩,只要你在院子里大喊一声他的名字(pin ...
- IP地址,子网掩码,默认网关,路由,形象生动阐述
自己的Linux虚拟机已经分配了固定的IP地址(使用无线路由,用的是192.168.1.XX网段),公司的无线网络分配的IP地址是(10.51.174.XX网段) 所以当自己的电脑拿到公司,还想使用桥 ...
- 一篇故事讲述了计算机网络里的基本概念:网关,DHCP,IP寻址,ARP欺骗,路由,DDOS等...
计算机主机网关的作用是什么? 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的网关.当你想跟院子里的某个小伙伴玩,只要你在院子里大喊一声 ...
- 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)
观察者模式 Observer 意图 定义对象一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新. 别名:依赖(Dependents),发布订阅(Publish-Su ...
- Python-JS (JS介绍~JS的基础数据类型)
目录一.JS语言介绍: 1.JS概念 2.JS组成 二.JS的三种存在位置(引入方式): 1.行间式: 2.内联式: 3.外联式: 三.JS出现的具体位置: 四.JS语法规范 五.JS中变量的定义 E ...
- day50
JS基础 一.JS语言介绍 1.概念 浏览器脚本语言 可以编写运行在浏览器上的代码程序 属于解释性.弱语言类型编程语言 2.组成 ES语法:ECMAScript.主要版本ES5和ES6 DOM:文档对 ...
- [经典]网关,DNS,DHCP三者关系详解
什么叫网关的精解 Sample Text转自(协议分析论坛)计算机主机网关的作用是什么?假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大爷就是你的 ...
随机推荐
- 第五章:matplotlib水印和桑基图
1.Matplotlib水印 1 import matplotlib.pyplot as plt 2 import numpy as np 3 4 x = np.linspace(0.0,10,40) ...
- 【CDH数仓】Day01:概念、环境搭建、CDH数仓搭建、用户行为数仓搭建
一.数仓之Cloudera Manager 1.CM简介 拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具 快速安装,快速运维,提高集群的效率 CM架构 2.阿里云服务器准备 注册账号 购 ...
- JavaScript入门⑥-WEB浏览器API
JavaScript入门系列目录 JavaScript入门①-基础知识筑基 JavaScript入门②-函数(1)基础{浅出} JavaScript入门③-函数(2)原理{深入}执行上下文 JavaS ...
- TypeScript 之 Type
Type 描述:全称叫做 '类型别名',为类型字面量提供名称.比 Interface 支持更丰富的类型系统特性. Type 与 Interface 区别 Interface 只能描述对象的形状,Typ ...
- 基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口
前言 最近电脑坏了,开源项目的进度也受到一些影响 这篇酝酿很久了,作为本系列第二部分(API接口开发)的第一篇,得想一个好的开头,想着想着就鸽了好久,索性不扯那么多了,直接开写吧~ 关于RESTFul ...
- 【转载】C#使用Dotfuscator混淆代码以及加密
C#编写的代码如果不进行一定程度的混淆和加密,那么是非常容易被反编译进行破解的,特别是对于一些商业用途的C#软件来说,因为盯着的人多,更是极易被攻破.使用Dotfuscator可以实现混淆代码.变量名 ...
- Hello 2023 A-D
比赛链接 A 题意 给一个字符串每个物品对应的灯的照明方向,L/R 能照亮它左侧/右侧的所有物品(不包括自己对应的物品),现在能交换相邻两个灯一次(不改变照明方向),问能否找亮所有物品. 题解 知识点 ...
- 【SpringBoot实战专题】「开发实战系列」从零开始教你舒服的使用RedisTemplate操作Redis数据
SpringBoot快速操作Redis数据 在SpringBoot框架中提供了spring-boot-starter-data-redis的依赖组件进行操作Redis服务,当引入了该组件之后,只需要配 ...
- python之路34 MySQL 2 配置文件 字段类型
字符编码与配置文件 1.\s查看MySQL相关信息 当前用户.版本.编码.端口号 MySQL5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一 如果想要永久修改编码配置 需要操作配置文件 ...
- 如何用 30s 给面试官讲清楚什么是 Token
引言 前文介绍了 Session-Cookie 的认证过程,简单回顾下基本步骤: 客户端(浏览器)向服务器发送用户名和密码 服务器验证通过后,创建 Session 对象,在 Session 中保存该用 ...