题面

大力统计题

考虑把和的平方拆开,最终就是许多对位置乘起来求和。所以考虑每对位置的贡献,对于$a_{i,j}$和$a_{k,h}(1<=i<=k<=n,1<=j<=h<=m)$,它们的贡献就是在$a_{i,j}$左上角和$a_{k,h}$右下角选两个点构成一个矩形把两个位置框起来的方案数再乘上对应系数,所以一般来说其贡献为

$2*a_{i,j}*a_{k,h}*i*j*(n-k-1)*(m-h-1)$

用前缀和维护二维乘积的和$sum[i][j]$,就可以更新答案了:

$sum[i][j]=a[i][j]*i*j-sum[i-1][j-1]+sum[i-1][j]+sum[i][j-1]$

$ans+=2*a[i][j]*sum[i][j]*(n-i+1)*(m-j+1)$

但是平方项的系数都是1,所以对于每个位置$i,j$还要扣掉一个$a[i][j]*i*j*(n-i+1)*(m-i+1)$

还没完......我们上面为了好写默认$1<=i<=k<=n,1<=j<=h<=m$,然后就成功地把$i<=k,j>h$和$i>j,j<=h$的情况给漏掉了,所以还要把每行翻过来再算一次,注意这次没有等于号了

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,mod=;
long long n,m,ans,seed,a[N][N],sum[N][N];
long long get()
{
seed=(seed*+)%;
return seed%;
}
int main()
{
scanf("%lld%lld%lld",&n,&m,&seed);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
a[i][j]=get();
sum[i][j]=(a[i][j]*i*j%mod+mod-sum[i-][j-]+sum[i-][j]+sum[i][j-])%mod;
ans+=*a[i][j]*sum[i][j]%mod*(n-i+)*(m-j+)%mod; ans%=mod;
ans+=mod-a[i][j]*a[i][j]%mod*i*j%mod*(n-i+)*(m-j+)%mod;
}
for(int i=;i<=n;i++)
for(int j=;j<=m/;j++)
swap(a[i][j],a[i][m-j+]);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
{
sum[i][j]=(a[i][j]*i*j%mod+mod-sum[i-][j-]+sum[i-][j]+sum[i][j-])%mod;
ans+=*a[i][j]*sum[i-][j-]%mod*(n-i+)*(m-j+)%mod; ans%=mod;
}
printf("%lld",ans);
return ;
}

解题:EXNR #1 金拱门的更多相关文章

  1. 为什么叫金拱门- golden arch

    不要再纠结为什么叫这么难理解的名字了.因为从golden arch直译过来的撒.金色的拱门.就叫金拱门咯. 关于M的商标的历史来源如下: "McDonald's logo" red ...

  2. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

  3. 一入OI深似海 3 —— 纪念我最后一次PJ(上)

    其实在比赛前一天中午上车前, 我还在机房打 I wanna, 感觉就是去杭州旅游的. 诶,还真是这样! 我和jwj在绍兴服务区买了金拱门, 拎着吃的回到车上的时候, 迎面而来羡慕的小眼神. 下午很早就 ...

  4. Python的基础语法(二)

    0. 前言 接着上一篇博客的内容,我将继续介绍Python相关的语法.部分篇章可能不只是简单的语法,但是对初学者很有帮助,也建议读懂. 1. 表达式 由数字.符号.括号.变量等组成的组合. 算术表达式 ...

  5. CCPC-2017-秦皇岛站

    10月25日 听说信用卡到了好兴奋,然而没有额度是啥情况啊qwq. 晚上坐飞机出发,成都-鄂尔多斯-石家庄-秦皇岛,队友吐槽鄂尔多斯到石家庄好近啊,然后过了一会儿我们因为石家庄大雾迫降在了济南.嘤嘤嘤 ...

  6. SDOI2019Round1游记

    SDOI2019Round1游记 Day 0 报道日,早晨五点睡的觉,一觉醒来已经一点半了,收拾收拾东西报道去了.因为没吃饭,坐着出租车晕车了,我让师傅把我放到历下大润发,我去金拱门吃了点饭才去的23 ...

  7. NOIP 2018 兔纸旅游记

    今年是第一次参加tg呢... Day0    早上出发去中旅坐大巴,走有 lz 特色的OI比赛道路. 车上谈笑风生,看 jw 的 GDOI 的小本本. 到动车站取票入站,看 lmh 和 zn 的爱恨情 ...

  8. 2018GDKOI游记

    我很后悔DAY1考完就写了小结.没人看题解,却这么多人来揭我伤疤.既然明摆着摆出来就是刷访问量,下面的就别看了吧. --------------------分割线------------------- ...

  9. IUSEP研修报告

    目录 Introduction Alberta - Edmonton University of Alberta IUSEP Schoolwork and Project Principle of F ...

随机推荐

  1. PySide图形界面开发(一)

    一.为什么要使用PySide? PySide由Qt的官方团队--Nokia Qt进行维护,集成了Qt和Python的优势.一个PySide程序员只需要使用简单的Python语言就能够发挥Qt的所有功能 ...

  2. Android开发——Fragment知识整理(二)

    0.  前言 Android开发中的Fragment的应用非常广泛,在Android开发--Fragment知识整理(一)中简单介绍了关于Fragment的生命周期,常用API,回退栈的应用等知识.这 ...

  3. Jmeter(十九)_ForEach控制器实现网页爬虫

    一直以来,爬虫似乎都是写代码去实现的,今天像大家介绍一下Jmeter如何实现一个网页爬虫! 龙渊阁测试开发家园 317765580 Jmeter的爬虫原理其实很简单,就是对网页提交一个请求,然后把返回 ...

  4. OpenGL:使用顶点数组法绘制正六面体

    在今天的opengl的课程以及实验中,我们学习了如何使用顶点数组的方法来绘制图形,但相信还有很多同学对它的实际使用方法不太了解,我们就用我们今天实验课上的实例来简单讲解一下 题目及要求 绘制一个正六面 ...

  5. PAT甲题题解-1063. Set Similarity (25)-set的使用

    题意:两个整数集合,它们的相似度定义为:nc/nt*100%nc为两个集合都有的整数nt为两个集合一共有的整数注意这里的整数都是各不相同的,即重复的不考虑在内.给出n个整数集合,和k个询问,让你输出每 ...

  6. 20135234mqy-——信息安全系统设计基础第十四周学习总结

    第九章 虚拟存储器 主要作用: 将主存看作是一个存储在磁盘上的地址空间的高速缓存,在主存中只保护活动的区域,并根据需要在磁盘和主存之间来回传送数据: 为每个进程提供了一致的地址空间,从而简化了存储器管 ...

  7. 20135337朱荟潼 Linux第五周学习总结——扒开系统调用的三层皮(下)

    朱荟潼 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课http://mooc.study.163.com/course/USTC 1000029000 一.学习内容 (一 ...

  8. Fibbing以让虚结点的设置更简单为目的优化网络需求

  9. Game over 作业

    终于有一篇不拼代码拼码字的作业了,哈哈哈..... 从寒假到这次结束,经历的博客及编码作业的过程 前面七次作业做个分类: 通往博客园和C++的第一步. 知识点:让我们对C++做一个预习,在学C++前有 ...

  10. 关于增强的for循环

    增强的for循环例子:public static<AnyType> void print(Collection<AnyType> coll){ for(AnyType item ...