首页 > 其他分享 >牛客题解 珂朵莉与宇宙

牛客题解 珂朵莉与宇宙

时间:2022-09-19 17:48:08浏览次数:96  
标签:int 题解 long times qzh 牛客 朵莉 区间

链接:https://ac.nowcoder.com/acm/problem/14600
来源:牛客网

题解

作者 岛田小雅

这道题很仁慈地直接告诉了我们子区间的个数,如果直接暴力遍历所有的子区间,复杂度是 \(O(\frac{n\times (n+1)}{2})\) 那肯定会 TLE。怎么办呢?如果有一种方法能在从左往右遍历数组 \(a\) 的时候就把所有信息都处理好,接下来只需要调用处理好的信息进行计算就好了。

首先,因为要求子区间的和,我们先弄个前缀和数组出来。这样我们就能轻易通过对前缀和的处理来找到需要的区间。对每个 \(qzh_i\),我们直接对所有的 \(qzh_j\)(\(j<i\))进行计数,然后遍历所有平方数 \(q_k\)(\(q_k\leqslant qzh_i\))。在每个 \(qzh_i\) 前出现的 \(qzh_j=qzh_i-q_k\) 的数量之和就是答案。

我们知道,前缀和最大应该是 \(n\times 10=1\times 10^6=N^2\)。也就是说,对每个数遍历比它小的所有平方数,它的复杂度是 \(O(n\times N)\)。总复杂度是 \(O(n+n\times N)\),问题不大。

注意,因为一共有 \(\frac{n\times (n+1)}{2}\) 个子区间,所以答案要开 \(\texttt{long long}\)(我没注意到所以 WA 了 2 发)

AC 代码

作者 岛田小雅
#include <bits/stdc++.h>
using namespace std;

const int N = 1e5+2;
const int MAXQZH = 1e6+2;
int n;
int a[N], qzh[N];
int cnt[MAXQZH];
long long ans;

int main()
{
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin >> n;
    cnt[0]++; // 因为qzh[i]如果自己就是个平方数的话,它可以选择从自己到前面的所有数作为一个区间,所以一开始就有一个0(相当于qzh[0]合法)
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
        qzh[i] = qzh[i-1]+a[i];
        for(int j = 0; j*j <= qzh[i]; j++) ans += cnt[qzh[i]-j*j];
        cnt[qzh[i]]++;
    }
    cout << ans;
    return 0;
}

标签:int,题解,long,times,qzh,牛客,朵莉,区间
From: https://www.cnblogs.com/CasseShimada/p/16708417.html

相关文章

  • PostgreSQL常见问题解决
    psql找不到动态链接库 2022-09-19 psql:symbollookuperror:psql:undefinedsymbol:PQsetErrorContextVisibility      解决办法:  找到PG......
  • 第十四章 Redis应用问题解决
    一、缓存穿透1.问题描述key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信......
  • 牛客题解 武藏牌牛奶促销
    链接:https://ac.nowcoder.com/acm/problem/13592来源:牛客网题解作者岛田小雅看到这一题我第一反应想直接模拟,看了下范围感觉可行,但是如果遇到无法判断的INF就会导致......
  • P1559 运动员最佳匹配问题 题解
    本篇使用\(\text{KM}\)算法求解。对于\(\text{KM}\)算法步骤如下:首先要用邻接矩阵存二分图,然后用贪心算法初始化标杆,运用匈牙利算法找到完美匹配,如果找不到则修改标......
  • SWERC 2021-2022 部分简要题解
    比赛链接:https://codeforc.es/contest/1662。前言「部分」「简要」题解。A-OrganizingSWERC直接判断。C-EuropeanTrip如果不考虑限制,我们可以直接矩乘。考虑......
  • 【题解】CF1311E Construct the Binary Tree
    题目链接-->Problem-E-Codeforces题目大意给定\(n\)和\(d\),你需要构造一棵\(n\)个点的二叉树满足所有点的深度之和恰好为\(d\)。\(2≤n,d≤5000\)。分析......
  • CSP2021-s题解
    T1廊桥分配题目链接P7913[CSP-S2021]廊桥分配\(Lemma:\)对于已经存在的廊桥集合,加入新的廊桥不会影响之前分配好的航班。证明:由于题目所给限制,若有空廊桥,则航......
  • 牛客网-SQL专项训练16
    ①在book表中,将工具书类型(tool)的书的书架序号都减少2,下列语句正确的是(C) 解析:题目要求的批量更改,insert是更改数据,排除B,update与set搭配使用,排除选项D,where条件后边除......
  • Luogu P3674 小清新人渣的本愿 题解
    P3674小清新人渣的本愿lxl大爷的题,%%%%%以及CSPrp++!!!前言:其实是这题的名字吸引了我,毕竟人渣的本愿里的角色我觉得多多少少都沾点,哪来的小清新啊。《人渣的本愿》,又名......
  • 牛客题解 约瑟夫环
    链接:https://ac.nowcoder.com/acm/problem/22227来源:牛客网题解作者岛田小雅正统的约瑟夫环我不会,看了一眼范围直接开始乱搞了。我选择的方法是模拟,用递归函数实现(虽......