思路:  根据矩阵乘法的定义,G中的第i行第j列的元素 ai,j ,对答案的贡献为 ai,j∗ T中第j行的所有元素之和。

    因此我们可以将T中根据每行的和进行排序。第i行的和可以通过公式 (ai^n−1)/(ai−1)直接得出。
    注意考虑 ai=1,ai=0 以及 ai>MOD 的特殊情况即可。还有就是对于除法取模需要用到逆元(费马小定理)

    一开始没注意除法取模 狂WA 12遍也是心累。。。。。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstring>
 4 #include<cmath>
 5
 6 using namespace std;
 7 typedef long long LL;
 8 const LL mod = 1e9 + 7;
 9 const int maxn = 1e5 + 10;
10 LL b[maxn], ans, a[maxn];
11 LL n, m;
12 LL Pow(LL a, LL b)//快速幂
13 {
14     LL ans = 1;
15     while (b) {
16         if (b & 1) {
17             ans *= a;ans %= mod;
18         }
19         a *= a;a %= mod;
20         b >>= 1;
21     }
22     return ans;
23 }
24 int main()
25 {
26     ios::sync_with_stdio(false);
27     while (cin >> n >> m) {
28         for (int i = 1; i <= m; i++) {
29             cin >> a[i];
30         }
31         sort(a + 1, a + m + 1);
32         for (int i = 1; i <= m; i++) {
33             a[i] = (a[i] % mod + mod) % mod;
34             if (a[i] == 0)b[i] = 1;
35             else if (a[i] == 1)b[i] = n;
36             else {                            //费马小定理对除法取模
37                 b[i] = (Pow(a[i], n) - 1 + mod) % mod;
38                 b[i] = b[i] * Pow(a[i] - 1, mod - 2) % mod;
39             }
40         }
41         //以下是求解
42         ans = 0;
43         LL num = (n*(n + 1) / 2) % mod;
44         for (int i = 1; i <= m; i++) {
45             ans = (ans + (num*b[i]) % mod) % mod;
46             num = (num + n * n) % mod;
47         }
48         cout << ans << endl;
49     }
50     return 0;
51 }

转载于:https://www.cnblogs.com/wangrunhu/p/9451812.html

51nod 范德蒙矩阵相关推荐

  1. 1960 范德蒙矩阵(数学贪心)

    1960 范德蒙矩阵 LYK最近在研究范德蒙矩阵与矩阵乘法,一个范德蒙矩阵的形式如下: 它想通过构造一个含有1~nm的n*m的矩阵G,使得G*V得到的n*n的矩阵T中所有位置上的元素之和最大.其中n, ...

  2. matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列...

    2019独角兽企业重金招聘Python工程师标准>>>      matlab : R2018a 64bit       OS : Windows 10 x64 typesettin ...

  3. 拉格朗日插值与范德蒙矩阵

    ******************************** 鉴于在博客中写公式略显难看,有碍观瞻,博客中的内容我都事先用latex写了一个pdf的文档,可以在下链接下载 http://downl ...

  4. 范德蒙德矩阵在MATLAB中怎么表示,Python 之 Python与MATLAB 矩阵操作总结

    Python 之 Python与MATLAB 矩阵操作小结 一.线形代数理论基础 线形代数(linear algebra)是数学的一个分支,研究矩阵理论.向量空间.线性变换和有限维线形方程组等内容. ...

  5. 半正定Toeplitz矩阵的范德蒙德分解

    半正定Toeplitz矩阵的范德蒙德分解 Toeplitz矩阵的定义:Matrices whose entries are constant along each diagonal are calle ...

  6. MATLAB编程实现范德蒙德型矩阵

    编程实现范德蒙德型矩阵: 代码如下: x=[-1 0 1 2 3]'; %定义5维列向量x for i=1:1:5 %行控制变量i从1~5,步长为1 for j=1:1:5 %列控制变量j从1~5,步 ...

  7. 范德蒙德和Teoplitz方程组的解法

    范德蒙德和Teoplitz方程组的解法 简单介绍 工程中的很多实际问题的处理,比如说图像处理的某些情况,最后往往归结为比较容易处理的Vandermonde方程组和Teoplitz方程组的求解问题,因此 ...

  8. C语言二维数组范德蒙,浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  9. 浅谈范德蒙德(Vandermonde)方阵的逆矩阵的求法以及快速傅里叶变换(FFT)中IDFT的原理...

    浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理 标签: 行列式 矩阵 线性代数 FFT 拉格朗日插值 只要稍微看 ...

  10. 【Codeforces 785D】范德蒙恒等式

    1.题目链接.题目大意:一个由括号构成的序列,让你找到这个序列中有多少个好的子序列.一个好的子序列的定义是这样的: 2.分析:这个题是一个组合数学问题.对于每一个'(',我们统计它的左边有多少个和它相 ...

最新文章

  1. 程序员为什么会有职业瓶颈?
  2. Grafana Worldmap外网用户request地图监控
  3. 三面求对称二叉树_字节跳动后端实习面经,一面+二面+三面(已收到offer)
  4. [bash] 打包某目录(可以是绝对路径)下的指定扩展名的文件
  5. 看完这些干货帖,大数据产品从入门到精通
  6. 【小技巧】桌面图标出现蓝色问号的怎么办?
  7. 全球最大域名注册商 GoDaddy 的托管账户凭证遭泄露
  8. qtcreator下拉列表怎么制作_如何用WPS制作月度记账表
  9. 【20181031T2】几串字符【数位DP思想+组合数】
  10. 过拟合和欠拟合_TensorFlow教程-过拟合和欠拟合
  11. mac打开airplay(隔空播放)
  12. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什qq登录
  13. apm软件仿真+QGC地面站 环境搭建
  14. 苹果手机上的python编程软件-Python编程软件有哪些?
  15. 在linux系统中使用WoeUSB工具制作U盘启动盘
  16. ios android 手柄,升级至iOS 13系统iPhone现已支持Xbox手柄
  17. python--format
  18. 条形码生成器:TBarCode SDK 11.X
  19. 远程桌面工具栏无法唤出-退出办法 远程桌面关机
  20. 单片微型计算机原理及应用ppt,(精品完整版)单片微型计算机原理及应用.ppt...

热门文章

  1. 单片机仿真软件Proteus Pro 8.9版本License过期
  2. Webmax简易入门操作手册(一)
  3. 北斗卫星导航系统基础篇之(一)
  4. 计算机晶体管怎么工作原理,晶体管的工作原理和实际作用
  5. 高中计算机基础知识课件,高中信息技术基础教案
  6. Egert实现五点连线(创意参考:网易爱的不同定义)[附源码]
  7. 《麦肯锡·卓越工作方法》
  8. 遍地是钱,为什么捡不到?
  9. Java 流行的工作流引擎
  10. oracle学习札记72