c++ - 具有 k 个断开顶点的三元组的总和
问题描述
考虑这些组件的大小是 a1, a2, a3,.... , ak。所以我们必须从给定的 k 个断开的组件中选择三个顶点,这可以通过多种方式完成。
S = 0;
for(i=1 ; i<= k ; i++)
for(j=i+1 ; j<= k; j++)
for(t=j+1 ; t<= k ; t++)
S += a[i]*a[j]*a[t];
return S%(10^9+7)
所以你必须在 O(N) 时间内计算 S 的值。这可以通过一些观察来计算。
B[n-1] = count1[n];
for(i=n-2;i>=0;i--)
B[i] = (B[i+1] + count1[i+1])%MOD;
for(i=1;i<n-1;i++)
C[i] = (count1[i+1]*B[i+1])%MOD;
D[n-2] = C[n-2];
for(i=n-3;i>=1;i--)
D[i] = (D[i+1] + C[i])%MOD;
for(i=0;i<n-2;i++)
sum = (sum + count1[i+1]*D[i+1])%MOD;
在这里使用 O(n) 没有找到三元组。我没有得到逻辑任何人都可以在这里解释 O(n) 方法。供参考 http://gauamgraph.blogspot.com/2015/09/kundu-and-tree.html?m=1
解决方案
推荐阅读
- node.js - 将 node_modules 文件夹放在单独的文件夹中
- apache - 无法从 apache solr 获取记录
- php - stdClass 无法转换为字符串
- firebase - 如何将验证码发送到电子邮件 ID
- python-3.x - RPLY - 具有多行代码的意外令牌解析源代码
- python - 用 Python Click 编写的 CLI 响应慢
- javascript - 试图从javascript中的django获取列表列表作为csv的数据,但引号显示在html编号中
- database - 在 oracle 上创建和刷新物化视图
- c# - 如何使用 C# 获取 User-Agent 标头以访问 GitHub API
- php - 计数在 Laravel 查询生成器中无法按预期工作