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

一开始看到区间和等于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. MySQL5.5登录密码忘记了,怎嘛办?

    1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld --skip-grant-    tables回车.如果没有出现提示信息,那就对了. 4.再开一 ...

  2. gradle执行test任务报错

    起初报错内容: > Task :compileJava FAILEDC:\Users\x\eclipse-workspace\old_code\src\main\java\CookieDemo. ...

  3. C#修饰符详解

    不定期更新,2017.8.9 一.new 别看new这个修饰符经常用,恐怕很多人都不知道其本质.我们先来看看new修饰符的官方定义: new 仅允许在嵌套类声明中使用,表明类中隐藏了由基类中继承而来的 ...

  4. JavaSE学习总结(七)—— 集合

    一.为什么需要集合 如果要将100个学生成绩存放到程序中,怎么做? 首先想到是数组 int[] scores=new int[100]; 然而,长度是固定的,比如是101个学生成绩,这个数组就不能用了 ...

  5. jQuery EasyUI Datagrid性能优化专题

    jQuery  EasyUI的Datagrid组件功能算是很强大了,不过性能确实不怎么乐观,而对于性能问题,网络上几乎也找不到相关的优化资料,所谓的牛人们可能都望而却步了.本博客以后会带着分析Data ...

  6. mysql 缓存机制

    了解mysql缓存吗(顺丰) mysql缓存机制就是缓存sql 文本及缓存结果,用KV形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要在再去解析.优化.执行sql. ...

  7. android 插件合集

    1.增加编译速度:fastdex-plugin 2.gradle 版本网站http://services.gradle.org/distributions/

  8. [iOS]App上架流程[利用Archive进行上传]

    今天给大家带来项目如何上架的教程 准备: 1. 一个开发者账号(需要交过钱的,

  9. 20155228 2016-2017-2 《Java程序设计》第7周学习总结

    20155228 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 Lambda 方法参考的特性,在重用现有的API上扮演了重要的角色.重用现有方法操作,可以避 ...

  10. UE4中Component和Subobject的区别

    Component是Subobject的一种. 其中, Subobject是一种Outer不是一个UPackage的UObject,而UPackage是整个层次结构中的最上层,指向磁盘上的一个.uas ...