jzoj4819 算循环
2016-10-15 15:44
435 查看
首先那个程序是送给你的40分暴力.
先看一下他题意中的题意,我们发现答案其实等于这个式子
Ans=∑i∑jij(n−i+1)(m−j+1)
就相当于对于一个点(i,j),包括他的矩阵有(n-i+1)(m-j+1)种.然后我们做一下变形
Ans=(∑i(n−i+1)i)∗(∑jj(m−j+1))
发现这是两个形式完全相同的式子. 到了这一步我们就可以O(n)得到80分了.所以我们就可以考虑如何求
F(i)=∑i(n−i+1)i
将式子进行变形,得到F(i)=(n−1)∑ii−∑ii2
然后我们有平方和式子∑ii2=n(n+1)(2n+1)/6
别问我怎么证明的,我也不知道然后就可以O(1)求了.
#include <cstdio> #include <iostream> #define MO 1000000007 #define sg(x) ((1+(x))*(x)/2%MO) using namespace std; long long n,m,ans; long long sqrtSum(long long n) { return n*(n+1)%MO*(2*n+1)%MO*166666668%MO; } long long cnt(long long x) { return (MO+(x+1)*sg(x)%MO-sqrtSum(x))%MO; } int main() { freopen("loop.in","r",stdin); freopen("loop.out","w",stdout); cin>>n>>m; n%=MO; m%=MO; cout<<cnt(m)*cnt(n)%MO<<endl; }
相关文章推荐
- JZOJ 4819. 【NOIP2016提高A组模拟10.15】算循环
- 【JZOJ4819】【NOIP2016提高A组模拟10.15】算循环
- 【JZOJ4819】算循环
- JZOJ 4819 【NOIP2016提高A组模拟10.15】算循环
- 使用$i循环控制读取出来的数据库条数
- 循环查询 树形结构
- 循环-17. 简单计算器(20)
- Intel Threading Building Blocks 编程指南:简单循环的并行化
- iOSDay03C语言循环结构
- Python numpy 矩阵特殊加、乘法与循环优化
- php循环练习
- JZOJ 5068.树
- ocrale:循环插入数据
- AutoCAD LISP循环判断语句绘制多个圆内接正多边形
- hdu 1358(Period)next数组的运用 计算前i个字符的循环周期 /poj 2406 计算字符串的周期
- 12、实例 循环使用样式
- 我的Cocos2d-x学习笔记(九)游戏帧循环(游戏主循环)
- 解析XML的 循环节点
- 循环往list中放对象却总是一个对象的问题