正题


题目大意

有一个n×mn\times mn×m的网格,在上面填上[1,k][1,k][1,k]的数字,定义两个长度为nnn的序列ai,bia_i,b_iai​,bi​分别表示每一行/每一列的最大值。

求有多少种不同的合法a,ba,ba,b对。

1≤n,m≤106,1≤k≤1091\leq n,m\leq 10^6,1\leq k\leq 10^91≤n,m≤106,1≤k≤109


解题思路

不难发现合法的a,ba,ba,b对只需要满足它们的最大值相等。

那么枚举最大值iii,答案就是
∑i=1k(in−(i−1)n)(im−(i−1)m)\sum_{i=1}^k(i^n-(i-1)^n)(i^m-(i-1)^m)i=1∑k​(in−(i−1)n)(im−(i−1)m)

看到这个式子果断想到这是一个和kkk有关的n+m+1n+m+1n+m+1次多项式,又因为kkk很大而n,mn,mn,m很小直接上插值。

时间复杂度:O(nlog⁡n)O(n\log n)O(nlogn)(视n,mn,mn,m同级)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=3e6+10,P=998244353;
ll n,m,k,pwn[N],pwm[N],f[N],inv[N],pre[N],suf[N],ans;
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
signed main()
{freopen("grid.in","r",stdin);freopen("grid.out","w",stdout);scanf("%lld%lld%lld",&n,&m,&k);ll L=n+m+10;for(ll i=1;i<=L;i++){pwn[i]=power(i,n);pwm[i]=power(i,m);f[i]=(f[i-1]+(pwn[i]-pwn[i-1])*(pwm[i]-pwm[i-1])%P)%P;}inv[0]=inv[1]=1;for(ll i=2;i<N;i++)inv[i]=P-inv[P%i]*(P/i)%P;for(ll i=1;i<N;i++)inv[i]=inv[i-1]*inv[i]%P;pre[0]=k;suf[L]=k-L;suf[L+1]=1;for(ll i=1;i<=L;i++)pre[i]=pre[i-1]*(k-i)%P;for(ll i=L-1;i>=0;i--)suf[i]=suf[i+1]*(k-i)%P;for(ll i=0;i<=L;i++){ll w=f[i]*(i?pre[i-1]:1)%P*suf[i+1]%P;w=w*inv[i]%P*inv[L-i]%P*(((L-i)&1)?-1:1);ans=(ans+w)%P;}printf("%lld\n",(ans+P)%P);return 0;
}

YbOJ-网格序列【拉格朗日插值】相关推荐

  1. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  2. 【BZOJ】2655: calc 动态规划+拉格朗日插值

    [题意]一个序列$a_1,...,a_n$合法当且仅当它们都是[1,A]中的数字且互不相同,一个序列的价值定义为数字的乘积,求所有序列的价值和.n<=500,A<=10^9,n+1< ...

  3. 51nod1229-序列求和V2【数学,拉格朗日插值】

    正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1229 题目大意 给出n,k,rn,k,rn,k,r求 ∑i=1nikri ...

  4. YbtOJ#903-染色方案【拉格朗日插值,NTT,分治】

    正题 题目链接:https://www.ybtoj.com.cn/contest/115/problem/3 题目大意 两个长度为n+1n+1n+1的序列a,ba,ba,b aia_iai​表示涂了i ...

  5. Codeforce 622 F. The Sum of the k-th Powers(拉格朗日插值求k次幂之和,拉格朗日插值公式)

    题目大意:求 ∑i=1nik\displaystyle\sum_{i = 1}^ni^ki=1∑n​ik 求k次幂有多种求法,例如: 伯努利数求k次幂之和(待补) 斯特林数求k次幂之和 拉格朗日插值法 ...

  6. Matlab实现线性插值、抛物插值、牛顿插值、拉格朗日插值、分段抛物插值、分段线性插值

    目录 线性插值 原理 流程图 代码 抛物插值 原理 流程图 代码 拉格朗日插值 代码 牛顿插值 原理 代码 分段线性插值 代码 线性插值 原理 流程图 单个点的线性插值代码 X=[0.2 0.4]; ...

  7. [数值计算-14]:拉格朗日插值与Python代码实现

    作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...

  8. matlab自带拉格朗日插值,MATLAB实现拉格朗日插值

    <MATLAB实现拉格朗日插值>由会员分享,可在线阅读,更多相关<MATLAB实现拉格朗日插值(14页珍藏版)>请在人人文库网上搜索. 1.实用标准文档文案大全数值分析上机报告 ...

  9. 拉格朗日插值——基于scipy实现

    python 实现 from scipy.interpolate  import lagrange x = [3, 6, 9] y = [10, 8, 4] lagrange(x,y) #poly1d ...

  10. 某 SCOI 模拟赛 T3 s3mple【生成函数 拉格朗日插值】

    题意 对于序列 a a a,记 v i v_i vi​ 为位置距离 a i a_i ai​ 最近的.比 a i a_i ai​ 大的数与它的距离(假设 a 0 a_0 a0​ 和 a n + 1 a_ ...

最新文章

  1. C语言的单链表实现队列
  2. 从VMware ESX Server 4升级到ESXi 5
  3. android保持数据库,android – 保持Firebase实时数据库中的数据始终保持同步
  4. 正确的工作流程:我应该使用哪个OAuth 2.0流程?
  5. json请求 post vue_Spring Boot+Vueaxios异步请求数据的12种操作(上篇)
  6. 云原生数据库崛起,阿里云POLARDB当选世界互联网领先科技成果
  7. web前端的渐进增强式开发模型
  8. 灯三段调光原理_各种筒灯、射灯、斗胆灯最全的解释?用对地方,效果加倍
  9. 怎样加入社区项目Karbor的Review?
  10. 医学诊断报告生成论文综述
  11. c语言怎么用右移代替除法,除法和算术右移之间的巧妙取代
  12. 分享Python采集的77个PHP整站程序源码
  13. 【网页图标】favicon.ico文件的设置
  14. 全国计算机四级之网络工程师知识点(五)
  15. Oracle 中ORA-28000: the account is locked解决办法
  16. K8S中deployment和service案例
  17. 电路中滤波电容和退耦电容_怎么分清滤波电容、去耦电容、旁路电容
  18. bzoj4668: 冷战
  19. Leetcode PHP题解--D75 706. Design HashMap
  20. Google Adwords关键词即将告别完全精确匹配

热门文章

  1. mysql utf8 bin设置_[mysql]修改collation为utf8_bin
  2. mysql 导入文件夹_MySQL-导入与导出
  3. 闲鱼有微信小程序吗_微信小程序商品展示页面(仿咸鱼)
  4. python导包路径问题_python的导包问题
  5. ORACLE数据加载加本,使用oracle sqlldr加载数据
  6. get+php+mysql_Apache+PHP+MySql 的安装及配置
  7. # 睡眠3秒_【for fun】睡眠排序算法
  8. lighttpd mysql_lighttpd+mysql+php
  9. java实用教程——组件及事件处理——布局的一个小实例
  10. 循环遍历多层json_面试官:JSON.stringify() 实现深拷贝有什么问题