AtCoder Regular Contest 071 D - 井井井 / ###
题目:http://arc071.contest.atcoder.jp/tasks/arc071_b
题意:
有一个二维的平面,给你xn根竖线和ym根横线,问这些线围成的长方形(正方形)的面积和(要求mod)。
例子:
3 31 3 41 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)。
——————————————————————————
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <string> 6 #include <vector> 7 #include <map> 8 #include <set> 9 #include <queue> 10 #include <sstream> 11 #include <algorithm> 12 using namespace std; 13 #define pb push_back 14 #define mp make_pair 15 #define ms(a, b) memset((a), (b), sizeof(a)) 16 //#define LOCAL 17 typedef long long LL; 18 const int inf = 0x3f3f3f3f; 19 const int maxn = 100000+10; 20 const int mod = 1e9+7; 21 LL x[maxn]; 22 LL y[maxn]; 23 int main() 24 { 25 #ifdef LOCAL 26 freopen("input.txt" , "r", stdin); 27 #endif // LOCAL 28 int n, m; 29 scanf("%d%d", &n, &m); 30 for(int i=1;i<=n;i++) scanf("%lld", &x[i]); 31 for(int i=1;i<=m;i++) scanf("%lld", &y[i]); 32 LL ans =0; 33 LL sumx = 0, sumy=0; 34 for(int i=1;i<=n;i++) 35 sumx =(sumx+ ( (i-1)*x[i] - (n-i)*x[i] )%mod)%mod; 36 for(int i=1;i<=m;i++) 37 sumy =(sumy+ ( (i-1)*y[i] - (m-i)*y[i] )%mod)%mod; 38 // printf("%lld %lld\n", sumx, sumy); 39 printf("%lld\n", (sumx * sumy) %mod); 40 return 0; 41 }
View Code
转载于:https://www.cnblogs.com/denghaiquan/p/6691591.html
AtCoder Regular Contest 071 D - 井井井 / ###相关推荐
- AtCoder Regular Contest 071
C - 怪文書 / Dubious Document 题意:定义一种无序的子序列:在原串中随意地取字符并随意打乱顺序.求多个字符串的最长公共无序子序列. #include<cstdio> ...
- AtCoder Regular Contest 071 C - 怪文書 / Dubious Document
给定一堆字符串,寻找一个字典序最小的字符串,使得该字符串是每个字符串的某个一排列的子串. 感觉这么描述比较诡异,换句话来说就是把每个字符串都切成一堆字符,然后找一个字符串使得切开的字符在每一堆中个数分 ...
- AtCoder Regular Contest 065
AtCoder Regular Contest 065 C - Daydream Score : 300300300 points 倒着来就行了,正着来会产生歧义匹配,dreamer,dreamdre ...
- AtCoder Regular Contest 100 D - Equal Cut 思维 + 前缀和
传送门 文章目录 题意: 思路: 题意: 给你一个数组aaa,你要将其分成四份,让这四份中和的最大值−-−最小值最小,输出这个最小值. n≤2e5,ai≤1e9n\le2e5,a_i\le1e9n≤2 ...
- AtCoder Regular Contest 100 E - Or Plus Max Sos dp
传送门 文章目录 题意: 思路: 题意: 给你一个长度为2n2^n2n的数组,让你对于所有的1≤k≤2n−11\le k\le 2^n-11≤k≤2n−1求最大的ai+aj,0≤i<j≤2n−1 ...
- AtCoder Regular Contest 061 E - Snuke‘s Subway Trip(建图 + dijkstra最短路 / 0/1bfs / 并查集)
AtCoder Regular Contest 061 E - Snuke's Subway Trip problem 洛谷翻译 my idea 最近一直在做网络流,所以一读这题后,我就想到了最小费用 ...
- NOMURA Programming Contest 2021(AtCoder Regular Contest 121)
文章目录 A - 2nd Greatest Distance B - RGB Matching C - Odd Even Sort D - 1 or 2 E - Directed Tree F - L ...
- AtCoder题解——AtCoder Regular Contest 107——B - Quadruple
题目相关 题目链接 AtCoder Regular Contest 107 B 题,https://atcoder.jp/contests/arc107/tasks/arc107_b. Problem ...
- AtCoder Regular Contest 062 E - AtCoDeerくんと立方体づくり / Building Cubes with AtCoDeer
题目传送门:https://arc062.contest.atcoder.jp/tasks/arc062_c 题目大意: 给你\(N\)块正方形木板,每块木板四角有四种颜色(可以相同),木板中央有编号 ...
最新文章
- 基于mpi的奇偶排序_并行程序设计(第2版)pdf
- 行人重识别技术不断突破 安防企业力拔头筹
- php mysql返回条数据,php – MySQL两次返回数据
- java代码调用python_Java调用Python
- 区分Activity的四种加载模式(转)
- Martin Fowler:数字化时代,远程与本地协同工作孰优孰劣?| IDCF
- html排序按钮_插件分享 | 可进行排序扫描任务的Task Queue
- iOS MBProgressHUD 之带底板的加载提示
- 修改数据包欺骗服务器,Fiddler协议捕获编辑工具与Session欺骗原理详解
- 信用算力基于 RocketMQ 实现金融级数据服务的实践
- 谁说烟草公司做不好数字化转型!通过BI工具,一年节约成本79万
- 可用性高达五个9!支付系统高可用架构设计实战
- Go by Example练习
- Atmospheric Scattering in Unity5
- SSM框架下的注册验证
- 雨林木风YN9.9三分极速速终结版 http://www.51ylmf.cn
- 新的分享之路开启,感谢您的陪伴
- js抓取今日头条文章
- vs 开发 win32 程序,调出控制台那个黑乎乎的窗口,方便调试
- LLC环路计算与仿真分析——K因子法