abc1057510554 老师说,搞这种数论题,就可以在 CF 上 number theory 板刷一个 1300-1900 就可以了。

然后发现连 1800 的题都做不出来,我可以退役力 QAQ


观察到 \(n\) 很小,也就是说我们甚至可以用 \(O(n^4)\) 的算法爆过去,但是这是一道数论题,不是让我们用暴力乱堆堆过去的,所以我们来考虑一下性质。

平方和和加法运算能有什么关系呢……没有关系啊……反正我们 \(n\) 很小,我们可以枚举一下 \(a\) 的元素。首先我们达成共识答案肯定至少为 \(1\),然后我们看看答案能否为 \(2\)——枚举一个 \(a_i, a_j(a_i > a_j)\)。

我们令 \(a_i + x = p^2, a_j + x = q^2,a_i - a_j = p^2 - q^2 = (p+q)(p - q)\)

这下就明晰了!枚举 \(a_i, a_j(a_i > a_j)\),对它们差枚举因子,就能搞出来 \(p, q\),进而就可以计算出 \(x\),然后对整个序列都用这个 \(x\) 计算一遍就好了。

时间复杂度?枚举 \(a_i, a_j\) 是 \(O(n^2)\),质因子 \(O(\sqrt{SIZE})\)(当然达不到这个复杂度),最后再统计一下是 \(O(n)\) 的,总共的时间复杂度就是 \(O(n^3\sqrt{SIZE})\)。这是理论上界,实践是远远达不到的,因为 \(a_i - a_j\) 不可能永远都顶到 \(1e9\)。跑不满,\(n\) 又很小,问题不大 qwq。

//SIXIANG
#include <iostream>
#include <cmath>
#define MAXN 100000
#define int long long
#define QWQ cout << "QWQ" << endl;
using namespace std;
int a[MAXN + 10], ans = 0, n;
bool judge(int x) {
int st = sqrt(x);
return (st * st == x);
}
void count(int x) {
int cnt = 0;
for(int p = 1; p <= n; p++)
cnt += judge(a[p] + x);
ans = max(ans, cnt);
}
void work(int x, int id1, int id2) {
for(int i = 1; i * i <= x; i++) {
if(x % i == 0) {
int j = x / i;
if(!((i + j) & 1)) {
int p = (i + j) / 2;
int q = j - p;
int X1 = p * p - a[id1], X2 = q * q - a[id2];
if(X1 == X2 && X1 >= 0)//X 要大于等于 0,而且 p^2 - a[i] 要等于 q^2 - a[j]
count(X1); swap(p, q);
X1 = p * p - a[id1], X2 = q * q - a[id2];
if(X1 == X2 && X1 >= 0)
count(X1);
}
}
}
}
void init() {
ans = 0;
cin >> n;
for(int p = 1; p <= n; p++)
cin >> a[p];
for(int p = 1; p <= n; p++)
for(int i = p + 1; i <= n; i++) {
int x = a[p] - a[i], cp = p, ci = i;
if(x < 0) x = -x, swap(cp, ci);
work(x, cp, ci);
}
cout << max(ans, 1ll) << endl;
}
signed main() {
int T; cin >> T;
while(T--) {
init();
}
}

CF1781D 解题乱弹的更多相关文章

  1. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  2. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  3. HDU 3791二叉搜索树解题(解题报告)

    1.题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=3791 2.参考解题 http://blog.csdn.net/u013447865/articl ...

  4. 【BZOJ1700】[Usaco2007 Jan]Problem Solving 解题 动态规划

    [BZOJ1700][Usaco2007 Jan]Problem Solving 解题 Description 过去的日子里,农夫John的牛没有任何题目. 可是现在他们有题目,有很多的题目. 精确地 ...

  5. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  6. wechall.net/stegano 解题心得

    /* 转载请注明出处:http://www.cnblogs.com/Martinium/p/wechall_stegano.html */ 最近迷上了 www.wechall.net 网站,里面都是些 ...

  7. Mountains(CVTE面试题)解题报告

    题目大意: 用一个数组代表群山的高度.高度大的地方代表山峰,小的地方代表山谷.山谷可以容水.假设有一天下了大雨,求群山中总共可以容纳多少水? 如图所示情况,a代表该数组,总共可以容纳5个水. 解题思路 ...

  8. timus 1180. Stone Game 解题报告

    1.题目: 1180. Stone Game Time limit: 1.0 secondMemory limit: 64 MB Two Nikifors play a funny game. The ...

  9. timus 1175. Strange Sequence 解题报告

    1.题目描述: 1175. Strange Sequence Time limit: 1.0 secondMemory limit: 2 MB You have been asked to disco ...

  10. ACM 杭电HDU 2084 数塔 [解题报告]

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

随机推荐

  1. vulnhub靶场渗透实战11-Deathnote

    ​网络模式,怎么方便怎么来. 靶场地址:https://download.vulnhub.com/deathnote/Deathnote.ova 这个靶机很简单.vbox装好.​ 1:主机发现,和端口 ...

  2. 零基础学习python的第一天整理——python的安装以及pycharm安装

    ​ 一.python的安装 首先我们来谈一谈python的安装,python的官网地址:Welcome to Python.org​编辑 进入官网后点击Downloads,然后选择自己对应的系统,比如 ...

  3. 【Java】从头开始学新的编程语言

    本文自用,Java入门笔记 -每个类都要在自己的单独文件中-我大为震撼 能运行的最小的Java程序要有main函数 public static void main(String[] args) (id ...

  4. jQuery类库

    jQuery介绍 1. jQuery是一个轻量级的.兼容多浏览器的JavaScript库. 2. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行A ...

  5. hyperf 配置 https 访问

    最近用hyperf写了支付系统,本地调试支付完成,打包上线部署,要解决https协议进行相应的访问,但是hyperf 官方没有找到相关的ssl配置说明.搜了一下soole还是有几个案例说明,据我的了解 ...

  6. [OpenCV实战]20 使用OpenCV实现基于增强相关系数最大化的图像对齐

    目录 1 背景 1.1 彩色摄影的一个简短而不完整的历史 1.2 OpenCV中的运动模型 2 使用增强相关系数最大化(ECC)的图像对齐 2.1 findTransformECC在OpenCV中的示 ...

  7. Java环境搭载的低级错误

    关于Java环境搭载的问题 在按照狂神的教程在Dos窗口执行了javac hello.java后在执行java hello报错"" 发现路径文件夹内并未生成class文件 检查了环 ...

  8. [C#]从两个例子理解async/await

    1 例子1 输出的结果为: 可以看出执行的结果为:A--D--B--C--E. 我们再看下一个例子(注意,我们把代码中D和E的位置交换) 2 例子2 结果: 结果为:A--B--C--E--D 3 理 ...

  9. Hash——温暖人心的算法

    目录 简介 计算Hash 前缀Hash递推 快速计算子串Hash 用Hash匹配字符串 综合:P2852 [USACO06DEC]Milk Patterns G 简介 Hash,将一个字符串映射到一个 ...

  10. P1605迷宫——题解

    展开 题目背景 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四种方式,每次 ...