CSP模拟58联测20 牵着她的手
题目大意
考虑所有 n n n行 m m m列的矩阵,矩阵中每个元素的值都在 1 1 1到 k k k之间。对于这样的矩阵 A A A,按照下面规则构造序列 x 1 , x 2 , ⋯ , x n + m x_1,x_2,\cdots,x_{n+m} x1,x2,⋯,xn+m:
- 对于 1 ≤ i ≤ n 1\leq i\leq n 1≤i≤n, x i x_i xi为 A A A中第 i i i行的最大值
- 对于 1 ≤ i ≤ m 1\leq i\leq m 1≤i≤m, x n + i x_{n+i} xn+i为 A A A中第 i i i列的最大值
求能构造出多少种不同的序列。
输出答案模 1 0 9 + 7 10^9+7 109+7后的值。
有 T T T组数据。
1 ≤ T ≤ 1000 , ∑ n , ∑ m ≤ 1 0 5 , k ≤ 1 0 9 1\leq T\leq 1000,\sum n,\sum m\leq 10^5,k\leq 10^9 1≤T≤1000,∑n,∑m≤105,k≤109
时间限制 3000 m s 3000ms 3000ms,空间限制 512 M B 512MB 512MB。
题解
首先,我们可以发现, x 1 x_1 x1到 x n x_n xn的最大值要等于 x n + 1 x_{n+1} xn+1到 x n + m x_{n+m} xn+m的最大值。
然而,当 x 1 x_1 x1到 x n x_n xn的最大值和 x n + 1 x_{n+1} xn+1到 x n + m x_{n+m} xn+m的最大值相等时,这个序列一定合法。
为什么呢?我们可以把最大值的列和最大值的行相交的位置填上最大值,在这一行的其他位置填上其他数来满足列的要求,在这一列的其他位置填上其他数来满足行的要求,并在其他位置填 1 1 1,即可构造出这个序列。
我们可以枚举最大值来计算答案。
a n s = ∑ i = 1 k [ i n − ( i − 1 ) n ] × [ i m − ( i − 1 ) m ] ans=\sum\limits_{i=1}^k[i^n-(i-1)^n]\times [i^m-(i-1)^m] ans=i=1∑k[in−(i−1)n]×[im−(i−1)m]
这样做是 O ( k log n ) O(k\log n) O(klogn)的,我们考虑优化。
我们可以发现,这是一个关于 k k k的 n + m n+m n+m次多项式,那么整个和式就是一个关于 k k k的 n + m + 1 n+m+1 n+m+1次多项式。那么,我们计算出前 n + m + 2 n+m+2 n+m+2项之后,用拉格朗日差值法,就可以优化到 O ( n 2 ) O(n^2) O(n2)。
因为差值的时候, i i i的取值是连续的,那么差值的式子为
f ( x ) = ∑ i = 1 N y i ∏ j = 1 , j ≠ i N x − j i − j = ∑ i = 1 N y i × ∏ j = 1 , j ≠ i N x − j ∏ j = 1 , j ≠ i N i − j f(x)=\sum\limits_{i=1}^Ny_i\prod\limits_{j=1,j\neq i}^N\dfrac{x-j}{i-j}=\sum\limits_{i=1}^Ny_i\times \dfrac{\prod\limits_{j=1,j\neq i}^Nx-j}{\prod\limits_{j=1,j\neq i}^Ni-j} f(x)=i=1∑Nyij=1,j=i∏Ni−jx−j=i=1∑Nyi×j=1,j=i∏Ni−jj=1,j=i∏Nx−j
其中 N = n + m + 2 N=n+m+2 N=n+m+2。
对后面的式子,我们考虑如何快速来求。
∏ j = 1 , j ≠ i N i − j = ( ∏ j = 1 i − 1 i − j ) × ( ∏ j = i + 1 N i − j ) = ( i − 1 ) ! × ( N − i ) ! × ( − 1 ) N − i \prod\limits_{j=1,j\neq i}^Ni-j=(\prod_{j=1}^{i-1}i-j)\times (\prod\limits_{j=i+1}^Ni-j)=(i-1)!\times (N-i)!\times (-1)^{N-i} j=1,j=i∏Ni−j=(j=1∏i−1i−j)×(j=i+1∏Ni−j)=(i−1)!×(N−i)!×(−1)N−i
预处理出每个数的阶乘,这部分就可以 O ( 1 ) O(1) O(1)求出。
当 x > N x>N x>N时, ∏ j = 1 , j ≠ i N x − j = ( ∏ j = 1 N x − j ) × 1 x − i \prod\limits_{j=1,j\neq i}^Nx-j=(\prod\limits_{j=1}^Nx-j)\times \dfrac{1}{x-i} j=1,j=i∏Nx−j=(j=1∏Nx−j)×x−i1,其中 ∏ j = 1 N x − j \prod\limits_{j=1}^Nx-j j=1∏Nx−j可以在插值之前 O ( n ) O(n) O(n)求出, 1 x − i \dfrac{1}{x-i} x−i1可以用逆元来求。
当 x ≤ N x\leq N x≤N时,我们一开始已经计算出来了,这部分可以直接输出。
那么,分子就可以 O ( log n ) O(\log n) O(logn)求出。
这样,我们就可以把拉格朗日插值的时间复杂度降到 O ( n log n ) O(n\log n) O(nlogn)。
总时间复杂度为 O ( ∑ n log n ) O(\sum n\log n) O(∑nlogn)。
code
#include<bits/stdc++.h>
using namespace std;
const int N=200005;
const long long mod=1e9+7;
int T;
long long n,m,k;
long long ans,x[N+5],y[N+5],jc[N+5];
long long mi(long long t,long long v){if(!v) return 1;long long re=mi(t,v/2);re=re*re%mod;if(v&1) re=re*t%mod;return re;
}
void init(){jc[0]=1;for(int i=1;i<=N;i++) jc[i]=jc[i-1]*i%mod;
}
long long gt(long long vx){long long re=0,wt=1;for(int i=1;i<=n+m+2;i++){wt=wt*((vx-x[i]+mod)%mod)%mod;}for(int i=1;i<=n+m+2;i++){long long p,q;p=y[i]*wt%mod*mi((vx-x[i]+mod)%mod,mod-2)%mod;if(n+m+2-i&1) q=(mod-jc[i-1]*jc[n+m+2-i]%mod)%mod;else q=jc[i-1]*jc[n+m+2-i]%mod;re=(re+p*mi(q,mod-2)%mod)%mod;}return re;
}
int main()
{init();scanf("%d",&T);while(T--){scanf("%lld%lld%lld",&n,&m,&k);ans=0;for(int i=1;i<=n+m+2;i++){x[i]=i;y[i]=(y[i-1]+(mi(i,n)-mi(i-1,n))*(mi(i,m)-mi(i-1,m))%mod+mod)%mod;}if(k<=n+m+2) printf("%lld\n",y[k]);else printf("%lld\n",gt(k));}return 0;
}
相关文章:
CSP模拟58联测20 牵着她的手
题目大意 考虑所有 n n n行 m m m列的矩阵,矩阵中每个元素的值都在 1 1 1到 k k k之间。对于这样的矩阵 A A A,按照下面规则构造序列 x 1 , x 2 , ⋯ , x n m x_1,x_2,\cdots,x_{nm} x1,x2,⋯,xnm: 对于 1 ≤ i ≤ n 1\leq i\leq n …...

电脑版便签软件下载用哪个?
在面对每天繁忙的工作日程,电脑是许多上班族不可或缺的工作助手,而一款得心应手的电脑便签软件,更是可以帮助大家记录、提醒、督促各项任务按时完成的得力助手。那么,究竟在众多的电脑便签软。件中,哪一位能够真正成为…...

别再卷组件库了,Vue 拖拽库都断代了!
前言 最近在测试 Tailwind CSS 和 Uno CSS 这两种原子化 CSS 工具是否能够有效减少打包后的文件体积时,先开始分析这些工具的优缺点,然后再直接上数据,最后做了一款经典的 TodoList 来进行测试,文章都写好了就差最后的数据了。 …...
利用服务器打造创新的在线社区
在这个数字化时代,服务器是实现创意项目的关键工具之一。虽然有许多用途,但其中最引人注目的是将服务器用于构建创新的在线社区。 为什么选择在线社区? 在线社区是连接人们、促进互动和分享知识的强大工具。它们可以围绕共同的兴趣、目标或…...
CSS动画实现节流
目录 介绍: 实现代码: 介绍: 节流指的避免过于频繁的执行一个函数,例如:一个保存按钮,为了避免重复提交或者服务器考虑,往往需要对点击行为做一定的限制,不然会频繁的请求接口,之前基本上是通过js去控制节…...

Apache Log4j Server (CVE-2017-5645) 反序列化命令执行漏洞
文章目录 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)1.1 漏洞描述1.2 漏洞复现1.2.1 环境启动1.2.2 漏洞验证1.2.3 漏洞利用 1.3 加固建议 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645) 1.1 漏洞描述…...
视口 css
视口是浏览器上显示网页的一块区域,大小并不局限于浏览器可视区域范围。PC端和移动端视口差别很大。PC端中视口宽度始终与浏览器窗口宽度一致,移动端视口与浏览器窗口宽度完全独立。 PC端 PC端视口大小等于浏览器窗口可视区域大小,无论浏览…...

Puppeteer记录操作过程及优秀的开源插件(五)
Puppeteer记录操作过程及优秀的开源插件(五) Puppeteer记录操作过程及优秀的开源插件(五)一、简介二、自动生成测试代码三、优秀的开源插件四、参考案例 一、简介 本节我们将介绍通过浏览器工具记录用户的实际操作,并…...
联邦学习+梯度+梯度剪枝
联邦学习需要参与者在每一次的本地训练后,上传所更新的模型参数并与其他参与者共享,而参数更新中仍有可能包含所有者的敏感信息 解决方案: 加密方法(安全多方计算、同态加密)通过将明文编码为密文的方式,…...

提高研发效率还得看Apipost
随着数字化转型的加速,API(应用程序接口)已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中,API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台,旨在解决这些问题…...

Elasticsearch使用——结合MybatisPlus使用ES es和MySQL数据一致性 结合RabbitMQ实现解耦
前言 本篇博客是一篇elasticsearch的使用案例,包括结合MybatisPlus使用ES,如何保证MySQL和es的数据一致性,另外使用了RabbitMQ进行解耦,自定义了发消息的方法。 其他相关的Elasticsearch的文章列表如下: Elasticsear…...

什么是CSGO大行动,2023年CSGO大行动时间预测
什么是CSGO大行动,2023年CSGO大行动时间预测 什么是CSGO大行动,2023年CSGO大行动时间预测 那天群里在提大行动,不明所以的新同学在问,什么是大行动,是不是官方红锁大行动要来了?当然不是,别自己…...

Pycharm中终端不显示虚拟环境名解决方法
文章目录 一、问题说明:二、解决方法:三、重启Pycharm 一、问题说明: Pycharm中打开项目配置完需要的虚拟环境后,在Terminal(终端)中无法切换及显示当前需要运行代码的虚拟环境。 比如以下一种情况&#…...

某翻译网站webpack 全扣js逆向法
持续创作文章,只是为了更好的思考 如下内容,如果有写的不清楚,不对的地方,也请大家提醒我一下,谢谢! 本次的目标是某道翻译网站,相信各位爷应该明白,这次逆向的整体做法还是把webpac…...

【C++】C++11 ——— 可变参数模板
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C学习 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C】STL…...

ros2 UR10仿真包运行
前言 一个月前安装了一下这个包,但是有报错。现在换了一个强劲的电脑,内存64G ,显存39G ,终于跑起来了,没有报错。网页控制器可以控制RVIZ中的机器人旋转。 vituralBOX中3D加速要勾选,这样才能发挥独立显…...
flutter开发实战-安卓apk安装、卸载、启动实现
flutter开发实战-安卓apk安装、卸载、启动实现 在之前的文章中,实现了应用更新apk下载等操作,具体文档看下 这里记录一下使用shell来操作apk的安装、卸载、启动的操作。用到了库shell,Shell用于在Dart中或在代表其他用户执行系统管理任务的…...

AI绘画使用Stable Diffusion(SDXL)绘制玉雕风格的龙
一、引言 灵感来源于在逛 LibLib 时,看到的 Lib 原创者「熊叁gaikan」发布的「翠玉白菜 sdxl|玉雕风格」 的 Lora 模型。简直太好看了,一下子就被吸引了! 科普下「翠玉白菜」: 翠玉白菜是由翠玉所琢碾出白菜形状的清…...

上位机在自动化中有何作用和优势?
今日话题 上位机在自动化中有何作用和优势? 自动化控制编程领域包括单片机、PLC、机器视觉和运动控制等方向。输入“777”,即刻获取关于上位机开发和数据可视化的专业学习资料,近年来,上位机编程逐渐兴起,正在逐步替…...

centos7 部署oracle完整教程(命令行)
centos7 部署oracle完整教程(命令行) 一. centos7安装oracle1.查看Swap分区空间(不能小于2G)2.修改CentOS系统标识 (由于Oracle默认不支持CentOS)2.1.删除CentOS Linux release 7.9.2009 (Core)(快捷键dd)&…...

地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...