欢迎访问 My Luogu Space。


【题目描述】

【输入输出格式】

输入格式:

输出格式:

【输入输出样例】

输入样例:

5 1 1 2 2

输出样例:

643


【标签】

模拟,数学推演。


【分析】

考虑通过发现规律来简化计算。

基本想法:

从题目中可以发现,第二、三座塔对应格子的乘积可以化成平方差,而每个格子的被减的平方项就是当前所在的层(每一圈算作一层)的右下角的值的平方,减数则是从右下角顺时针或者逆时针前进到达当前格子所用的步数(左上角的格子需单独处理)。

因此,从每层的左下角出发顺时针或者逆时针前进,直到左上角之前所经过的位置的二、三座塔的乘积之和为 \(\sum_{i=0}^{s}p^2-i^2\) ,其中 \(p\) 为当前层的右下角的值,\(s\) 为走到当前位置需要用的步数。

改进:

由于本题所被发现的性质依赖每一层的左下角的格子的值,因此本题可以通过“右下缀和”来更方便地计算答案。

通过一个值 \(c\) 来维护当前层的左下角格子的值( \(c\) 可找规律),并从最外层开始一层一层往内统计,每层都顺时针和逆时针走到不能走为止,最后将答案相加取模即可(还有第一层塔不能忽略,并且右下角的格子会被计算两次需要去掉一次或单独计算)。

每层的值可以化成 \(k*(s*p^2-\sum\limits_{i=0}^{s}i^2)\),其中 \(k\) 为第一座塔对应的值 (每一层对应的第一座塔的值是相等的),而 \(\sum\limits_{i=0}^{s}i^2\) 为平方数列前 \(n\) 项和,可通过公式 \(\frac{n*(n+1)*(2n+1)}{6}\) 来计算。


【代码】

[C++]

#include <bits/stdc++.h>
#define LL long long
using namespace std;
const LL Mod = 26281314;LL n, X1, Y1, X2, Y2;LL Do(LL X){return X*(X+1)/2*(2*X+1)/3%Mod;}  //计算平方数列前n项和
LL Work(LL X, LL Y){LL r=n, mid=n/2+1, sum=0, c=1;  //c维护每层的右下角值与左上角值while(r>=X && r>=Y && r>=mid){  //从最外层往内统计LL s1=0, s2=0, l=n-r+1;  //s1、s2为步数,l为当前层的左上角的横纵坐标(横纵坐标相等)if(l==r){  //当到达最中心一格时sum += c%Mod*c%Mod*r%Mod;sum %= Mod;break;}if(Y<=l){  //能向上走到底s1 += r-l;if(X<=l) s1 += r-l-1;  //能向左走到底else s1 += r-X;}else s1 += r-Y;if(X<=l){  //能向左走到底s2 += r-l;if(Y<=l) s2 += r-l-1;  //能像上走到底else s2 += r-Y;}else s2 += r-X;if(X<=l && Y<=l){  //能走到左上角的格子sum += c*l%Mod*c;sum %= Mod;}c += (n-(n-r)*2-1)*2;  //变为右下角的值c %= Mod;sum = ((sum+l*s1%Mod*c%Mod*c%Mod-Do(s1)*l%Mod+Mod)%Mod+Mod)%Mod;sum = ((sum+l*s2%Mod*c%Mod*c%Mod-Do(s2)*l%Mod+Mod)%Mod+Mod)%Mod;sum = (sum+l*c%Mod*c%Mod)%Mod;  //统计上右下角的值c += (n-(n-r)*2-1)*2;  //变为下一层左上角的值c %= Mod;r--;}return sum;
}
int main(){cin>>n>>X1>>Y1>>X2>>Y2;LL ans = Work(X1, Y1);ans = (ans-Work(X1, Y2+1)+Mod)%Mod;  //“右下缀和”ans = (ans-Work(X2+1, Y1)+Mod)%Mod;ans = (ans+Work(X2+1, Y2+1))%Mod;cout<<ans<<endl;return 0;
}

【补充】

记得随时取模,多取模,拼命地取模!


Over

转载于:https://www.cnblogs.com/bosswnx/p/10570800.html

题解 DTOJ #1515.三塔合一相关推荐

  1. 题解 DTOJ #1438. 矮人排队(lineup)

    欢迎访问 My Luogu Space. [题目大意] 有 \(n\) 个身高为 \([1,\ n]\) 的且各不相同的人排成一个序列. 有两种操作: 让位置 \(x,\ y\) 的人交换位置. 给定 ...

  2. 题解 DTOJ #4016.辉夜的夜空明珠(moon)

    欢迎访问 My Luogu Space. [题目大意] 一张无向图,边的长度都为 111,每个点被染成了 "R,B,Y,G""R,B,Y,G""R,B ...

  3. 题解 DTOJ #3861.基里巴斯(path)

    欢迎访问 My Luogu Space. [题目描述] 最近,帕特里克沉迷于世界地图上的太平洋地区.他发现了一个名字奇异的岛国:基里巴斯共和国,简称基里巴斯,是一个太平洋岛国. 其由 33 33 33 ...

  4. 【洛谷题解】P2433 【深基1-2】小学数学 N 合一

    目录 [深基1-2]小学数学 N 合一 题解 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 题目解析 问题 1~5 问题 6~10 问题 10~14 发牢骚 完整代码 谢谢 ...

  5. [Luogu]P2433 小学数学N合一(C++题解)

    文章目录 Part 0 [深基1-2]小学数学 N 合一 题目描述 问题 1 问题 2 问题 3 问题 4 问题 5 问题 6 问题 7 问题 8 问题 9 问题 10 问题 11 问题 12 问题 ...

  6. 小学数学N合一(洛谷P2433题题解,Java语言描述)

    题目要求 题目链接 分析 很简单的问题,注意具体要求即可. 这个题有个坑,因为根据评判结果,所有的浮点数都必须是6位有效数字,但题没明说,这点一定要注意. AC代码(Java语言描述) import ...

  7. P2433 【深基1-2】小学数学 N 合一(题解)​

    这是一道水题+坑题 顺序结构的题单里竟然有选择结构! 题目描述 问题 1 请输出 I love Luogu! 问题 2 这里有 10 个苹果,小A 拿走了 2 个,Uim 拿走了 4 个,八尾勇拿走剩 ...

  8. 之前出的一道背包题面,暂无题解

    题面 假如你是一个小偷,要去zzl会长家里偷东西. 因为轻装上阵,所以你只能背一个容量为V的书包,同时考虑到你的身体素质,书包的重量不能超过U. 会长家里有n种物品,每件物品都有一个体积vi,重量ui ...

  9. 一句话题解(20170801~20170125)

    8.1 bzoj 4720 noip2016 换教室 floyd预处理+期望(薛定谔的猫) bzoj 4318 OSU! 三次函数期望值 从一次.二次推得 8.2 bzoj 1076 状压+期望DP ...

最新文章

  1. “封杀中兴”后,TensorFlow 等也被“闭源”怎么办?(附中兴最新声明)
  2. 人工肌肉重大突破登上 Science!多国科学家联合实现全新驱动机
  3. Lesson 16.2 图像的基本操作
  4. QT的QDomAttr类的使用
  5. 【Hibernate】Hibernate查询语言HQL详解
  6. 全自动洗衣机维修教程
  7. Swift--控制流与oc不同的地方
  8. MyBatisPlus自动生成代码springboot+mybatis+mysql 以及动态sql生成方法(测试可用版)
  9. 数据库封装 sql server mysql_sqlserver数据库操作封装
  10. IEqualityComparerT
  11. 通过自定义注解排除不需要过滤URL的方法
  12. Android SDK的下载与安装(包会)
  13. 在VC下实现串口通讯
  14. Mac版本Jmeter下载安装教程
  15. python小游戏之超级玛丽进阶版(1~4关)。好玩到爆炸~【内附github源码,及其详细备注】
  16. (已解决)windows2020卸载office2013(安装程序包语言不受系统支持)
  17. 【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)
  18. 全球五大违背力学的建筑背后的仿真计算与监测技术
  19. Git客户端msysGit的安装
  20. 万剑归宗—架构设计中的抽象思维与具象思维

热门文章

  1. BroadCastReceiver简介
  2. python基础练习(九)
  3. 在 python中每个模块用什么来实现_Python代码模块热更新机制实现(reload)
  4. idea在mac版怎么配置svn_使用Mac自带svn搭建服务器,并使用idea进行连接
  5. android检查usb广播,Android 检测USB 音频设备
  6. python接口 同花顺_这是真的么 | 学会了用Python预测股票价格
  7. 网站建设设计的基本事项需了解!
  8. 网站长尾词布置需要注意什么事项?
  9. vba 窗体单选框怎么传回sub_VBA之EXCEL应用
  10. 获取元素到页面顶部的距离_jQuery 操作元素综合案例