这题用尺取法是怼不出来的。。。

一开始看到区间和等于k的幂,并且有负数,首先想到将前缀和排序后用尺取法,但因为排序后的前缀和次序是乱的,只适用带绝对值的情况(poj2566),所以无法做。

看了题解后发现其实是个简单的dp

//sum[r]=sum[l]+kk;
//ans+=mp[sum[i]-kk];其实是个dp
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 100005 int n,a[maxn];
ll ans,kk,k,sum[maxn]; void solve(ll kk){
map<ll,int>mp;
for(int i=;i<=n;i++){
mp[sum[i]]++;
ans+=mp[sum[i]-kk];
}
} int main(){
scanf("%d%lld",&n,&k);
sum[]=ans=;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
}
if(k==){
solve();
printf("%lld\n",ans);
return ;
}
if(k==-){
solve();solve(-);
printf("%lld\n",ans);
return ;
} kk=;
while(kk<=(ll)*n){
solve(kk);
kk*=k;
}
printf("%lld\n",ans);
return ;
}

cf776c的更多相关文章

随机推荐

  1. .Net MVC 当前上下文中不存在名称“Style”

    遇到了这种问题,最后居然是我拼写错误了... 当然也有其他原因 http://blog.csdn.net/bianchao1/article/details/69666347 按照上面这篇博客的方法先 ...

  2. 多目标遗传算法 ------ NSGA-II (部分源码解析)目标函数 problemdef.c

    /* Test problem definitions */ # include <stdio.h> # include <stdlib.h> # include <ma ...

  3. CentOS6.8下MySQL数据库版本信息查看

    方法1:使用mysql -v命令查看: [root@yeebian mysql]# mysql -V mysql Ver 14.14 Distrib 5.1.73, for redhat-linux- ...

  4. 一个奇怪的SystemClock_Config问题解决方法

    一直在SystemClock_Config程序死掉,然后下载最新的STm32Cube从新创建项目成功了.

  5. ubuntu18.04使用sudo时反应时间长

    一.查看/etc/sudoer这个文件,是否有当前用户,若无,请联系 管理员或者是通过root用户添加 二.用hostname命令查看自己的主机名 三.添加自己的主机名到/etc/hosts文件中

  6. Anaconda的安装和更新

    下载地址官网:https://www.anaconda.com/distribution/ 一.安装 二.下载安装完成后我们来检验一下是否安装成功 点击“开始” —— “Anaconda3(64-bi ...

  7. luogu P2508 [HAOI2008]圆上的整点

    传送门 推荐去bzoj看个视频了解一下 不要妄想视频直接告诉你题解 但是视频告诉了你后面要用的东西 首先我们要求的是\(x^2+y^2=n^2(x,y\in Z)\)的\((x,y)\)对数,可以转化 ...

  8. POJ1287 Networking【最小生成树】

    题意: 给出n个节点,再有m条边,这m条边代表从a节点到b节点电缆的长度,现在要你将所有节点都连起来,并且使长度最小 思路: 这是个标准的最小生成树的问题,用prim的时候需要注意的是他有重边,取边最 ...

  9. HTML5的学习(三)HTML5标签

    3.HTML5新添加的标签 标签 描述 <article> 定义文章. <aside> 定义页面内容之外的内容. <audio> 定义声音内容. <bdi&g ...

  10. java字符串集合

    一,java的接口跟C语言所能做到的相比确实是让人眼前一亮的东西.利用接口可以将多种东西放到一起,在编程过程中就能省略掉相同类的很多重复代码,将代码进行分类别的,统一的处理. 二,java中的字符串处 ...