AtCoder Regular Contest 071 D - 井井井 / ###
题目:http://arc071.contest.atcoder.jp/tasks/arc071_b
题意:
有一个二维的平面,给你xn根竖线和ym根横线,问这些线围成的长方形(正方形)的面积和(要求mod)。
例子:
3 3
1 3 4
1 3 6

构成了9个长方体。

可以算出ans = 60;
题解:
很容易就可以想到暴击枚举 i,j,k,l,对应的每个值然后求面积。

但是毫无疑问n4是会TLE的。
同样的答案等价于

但是很不好意思,这样还是会TLE。
所以我们就可以把它化简为

————————————证明————————————
展开 ∑(xj-xi)为
(x2-x1)+(x3-x1)+····+(xn-x1)
(x3-x2)+(x4-x2)+···+(xn-x1)
···
不难发现当为第k个x的时候,在它前面有(k-1)个x要选择它,所以是 +(k-1)*xk 。而在k的后面有(n-k)个x。xk 要选它们,所以是 -(n-k)*xk 。
就可以化简成∑((k-1)xk-(n-k)xk)。把复杂度从n2降到n。
同理y也是这样。
总的复杂度为O(n+m)。
——————————————————————————
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <sstream>
#include <algorithm>
using namespace std;
#define pb push_back
#define mp make_pair
#define ms(a, b) memset((a), (b), sizeof(a))
//#define LOCAL
typedef long long LL;
const int inf = 0x3f3f3f3f;
const int maxn = +;
const int mod = 1e9+;
LL x[maxn];
LL y[maxn];
int main()
{
#ifdef LOCAL
freopen("input.txt" , "r", stdin);
#endif // LOCAL
int n, m;
scanf("%d%d", &n, &m);
for(int i=;i<=n;i++) scanf("%lld", &x[i]);
for(int i=;i<=m;i++) scanf("%lld", &y[i]);
LL ans =;
LL sumx = , sumy=;
for(int i=;i<=n;i++)
sumx =(sumx+ ( (i-)*x[i] - (n-i)*x[i] )%mod)%mod;
for(int i=;i<=m;i++)
sumy =(sumy+ ( (i-)*y[i] - (m-i)*y[i] )%mod)%mod;
// printf("%lld %lld\n", sumx, sumy);
printf("%lld\n", (sumx * sumy) %mod);
return ;
}
AtCoder Regular Contest 071 D - 井井井 / ###的更多相关文章
- AtCoder Regular Contest 071
C - 怪文書 / Dubious Document 题意:定义一种无序的子序列:在原串中随意地取字符并随意打乱顺序.求多个字符串的最长公共无序子序列. #include<cstdio> ...
- [Atcoder Regular Contest 071 F & JZOJ5450]Neutral
题目大意 一个无限长的序列\(a\), 需要满足 1.数列中的每一个数在\(1\)到\(n\)之间. 2.对于\(i>=n, j>=n\), \(a_i=a_j\). 3.对于\(i< ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
随机推荐
- 最长k可重线段集问题【费用流】【优先队列Dijkstra费用流】
题目链接 与最长K可重区间问题一样的解法,但是这道题却有很多需要注意的地方,譬如就是精度问题,一开始没考虑到sprt()里面的乘会爆了精度,然后交上去竟然是TLE,然后找的原因方向也没对,最后TLE了 ...
- Docker command line 学习笔记
deprecated ! 以后直接对这个更新 http://wangzhezhe.github.io/blog/2015/08/10/docker-operations/ 之前整理了好久,每次用到一点 ...
- Mac入门--Apache/Php/Mysql的开启关闭
注意:mac自带apache环境和PHP环境 一 php服务的启动和关闭 php-fpm 启动 sudo php-fpm php-fpm 关闭 1 查看php-fpm端口是否在被php-fpm进程 n ...
- Linux 文件创建、插入、替换
创建文件 touch newfile.txt 插入字符串 echo "aaa" >>/newfile.txt 替换字符串 sed -i "s/aaa/ccc/ ...
- C++学习笔记(七)--共用体、枚举、typedef
1.共用体 union其定义与结构体类似:union 类型名{ 成员表列;};声明变量的方法也类似: a. union 类型名{ b. union { c.类型名 变量名; 成员 ...
- Bootstrap selectpicker 强制向下
selectpicker的方向是自适应的,但是有些界面,我们需要强制向下,可以使用属性data-dropup-auto data-dropup-auto="false" 官网上的o ...
- (4.23)SQL Server中的加密
转自:https://www.cnblogs.com/CareySon/archive/2012/04/01/SQL-SERVER-Encryption.html 简介 加密是指通过使用密钥或密码对数 ...
- CSS浏览器兼容性
答题技巧:因为这个问题主要是看你经验,一般有了开发经验的都会遇到这样的坑,你只要说出几个来大致就可以了. 1.对齐文本和文本输入框 问题: 当input元素在设置了高时,在IE7.IE8.IE9下会出 ...
- 什么是 Python?
Python 是一种编程语言,它有对象.模块.线程.异常处理和自动内存管理,可以加入其他语言的对比. Python 是一种解释型语言,Python 在代码运行之前不需要解释. Python 是动 ...
- Latex--入门系列一
Latex 专业的参考 tex对于论文写作或者其他的一些需要排版的写作来说,还是非常有意义的.我在网上看到这个对于Latex的入门介绍还是比较全面的,Arbitrary reference .所以将会 ...