Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
题目描述
给你一个长为n的序列a,有n*(n+1)/2个子区间,问这些子区间里面和为完全平方数的子区间个数
输入描述:
第一行一个数n
第二行n个数表示序列a
输出描述:
输出一个数表示答案
示例1
输入
6
0 1 0 9 1 0
输出
11
备注:
1 <= n <= 100000
0 <= ai <= 10
思路
用前缀和来求任意字段的和
长度为n的序列a[1],a[2], ….,a[n]
有前缀和prefix_sum[1],prefix_sum[2],….,prefix_sum[n]
若子段a[j],a[j+1],…,a[i] 的和为完全平方数,则prefix_sum[i]-prefix_sum[j] =square*square 。
对每个prefix_sum[i] 枚举square的值,若prefix_sum[i]-square*square是一个prefix_sum,则找到一个满足条件的值。
代码
#include <bits/stdc++.h>
int is_sum[1000005], a[100005];
int n;
int prefix_sum;
long long ans;
int main(){
scanf("%d",&n);
is_sum[0]=1;
for(int i=1;i<=n;++i){
scanf("%d",a+i);
}
for(int i=1;i<=n;++i){
prefix_sum+=a[i];
for(int square=0;square<=1000 && square*square <= prefix_sum;++square)
ans+=is_sum[prefix_sum-square*square];
++is_sum[prefix_sum];
}
printf("%lld\n",ans);
return 0;
}
Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数的更多相关文章
- Wannafly挑战赛7 E - 珂朵莉与GCD
题目描述 给你一个长为n的序列a m次查询 每次查询一个区间的所有子区间的gcd的和mod1e9+7的结果 输入描述: 第一行两个数n,m之后一行n个数表示a之后m行每行两个数l,r表示查询的区间 输 ...
- wannalfy 挑战赛7 E 珂朵莉与GCD (离线+线段树/树状数组)
链接:https://www.nowcoder.com/acm/contest/56/E 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 716800K,其他语言1433600K 6 ...
- 洛谷AT2342 Train Service Planning(思维,动态规划,珂朵莉树)
洛谷题目传送门 神仙思维题还是要写点东西才好. 建立数学模型 这种很抽象的东西没有式子描述一下显然是下不了手的. 因为任何位置都以\(k\)为周期,所以我们只用关心一个周期,也就是以下数都在膜\(k\ ...
- [转]我的数据结构不可能这么可爱!——珂朵莉树(ODT)详解
参考资料: Chtholly Tree (珂朵莉树) (应某毒瘤要求,删除链接,需要者自行去Bilibili搜索) 毒瘤数据结构之珂朵莉树 在全是珂学家的珂谷,你却不知道珂朵莉树?来跟诗乃一起学习珂朵 ...
- 牛客练习赛7 E 珂朵莉的数列
珂朵莉的数列 思路: 树状数组+高精度 离散化不知道哪里写错了,一直wa,最后用二分写的离散化 哪位路过大神可以帮我看看原来的那个离散化错在哪里啊 通过代码: import java.math.Big ...
- 牛客练习赛9 F - 珂朵莉的约数
题目描述 珂朵莉给你一个长为n的序列,有m次查询 每次查询给两个数l,r 设s为区间[l,r]内所有数的乘积 求s的约数个数mod 1000000007 输入描述: 第一行两个正整数n,m第二行一个长 ...
- 牛客练习赛9 B - 珂朵莉的值域连续段
题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数.接下来n–1行,每 ...
- [洛谷P3987]我永远喜欢珂朵莉~
[洛谷P3987]我永远喜欢珂朵莉~ 题目大意: 给你\(n(n\le10^5)\)个数\(A_{1\sim n}(A_i\le5\times10^5)\),\(m(m\le5\times10^5)\ ...
- 洛谷P4344 [SHOI2015]脑洞治疗仪(珂朵莉树)
传送门 看到区间推倒……推平就想到珂朵莉树 挖脑洞直接assign,填坑先数一遍再assign再暴力填,数数的话暴力数 //minamoto #include<iostream> #inc ...
随机推荐
- 【转】你应该关注的几个Eclipse超酷插件
本文由 ImportNew - 唐尤华 翻译自 Anton Arhipov.如需转载本文,请先参见文章末尾处的转载要求. 来自非营利性Eclipse基金会的Eclipse IDE以其插件生态系统著称. ...
- Python学习中的“按位取反”笔记总结
| 疑惑 最近在学习Python的过程中了解到位运算符,但对于按位取反有点迷糊,就比如说~9(按位取反)之后的结果是-10,为什么不是6呢?所以下面就来看看为什么不是6,正确结果是如何计算出来的呢? ...
- SQL 配置管理器无法连接到WMI
在解决之前,需要注意一般出现这个问题是你的SQL SERVER安装有误. 这个问题是SQL 安装路径下sqlmgmproviderxpsp2up.mof的问题. 一般在C盘Program files( ...
- linux下 Error in 'python3':free(): invalid pointer
linux下坑人的报错!折腾了好久. 现象:这次是一个底层库 C++,底层库之上一层SDK C++,之上再一层so库,用python调用SDK.然后python层依赖了opencv和SDK,调换ope ...
- get_字段_display()
gender_choices = ((1, '男'), (2, '女')) gender = models.IntegerField(verbose_name='性别', choices=gender ...
- java小心机(6)| 多态的一些坑
对于"多态"的概念,想必大家都很熟悉了,但我们还是来回顾一下吧 class Actor { public void act(){ System.out.println(" ...
- 解决浮点运算精度不准确,BigDecimal 加减乘除
package com.kflh.boxApi.utils.util; import java.math.BigDecimal; /** * @program: BoxApi * @descripti ...
- json的结构和表示方式(对象object、数组array)
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构 1.对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key ...
- [校内训练20_01_19]ABC
1.SB题 2.有n个点,m条边,每次加入一条边,你要挑出一些边,使得形成的图每个点度数都为奇数,且最长的边最短. 3.给一个N次多项式,问有多少个质数在任意整数处的点值都是p的倍数,输出它们.$N ...
- Java练习题1
题目1: 编程实现,现在有如下的一个数组: int oldArr[] = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}; 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的 ...