题目链接

题意:给出一个有n个数的序列,还有一个k,问在这个序列中有多少个子序列使得sum[l, r] = k^0,1,2,3……

思路:sum[l, r] = k ^ t, 前缀和sum[r] = sum[l-1] + k^t。即如果后面有一段序列使得sum[l,r] = k^t,那么它可以转化为前缀和相减使得这一段大小为k^t,即sum[i] = sum[j] + k^t (1 <= j < i)。

那么对于处理好的每一个前缀和,直接往后面加上k^t(0<=t<=x,k^x是不超过题目范围的数)。然后在后面遍历的时候直接加上对应那个数的权值。

因为数据很大,所以只能用map来装权值。

代码实现:

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 ll f[101005];
 5 ll k_t[1000];
 6 int main()
 7 {
 8     int n,k,i,j,cnt;
 9     while(cin>>n>>k)
10     {
11         map<ll,int>mp;
12         memset(f,0,sizeof(f));
13         memset(k_t,0,sizeof(k_t));
14         for(i=1;i<=n;i++)
15         {
16             cin>>f[i];
17             f[i]+=f[i-1];
18         }
19         k_t[1]=1;cnt=2;
20         if(k==-1)k_t[2]=-1,cnt++;
21         else if(k!=1)
22         {
23             ll temp=k;
24             while(temp<1e15)
25             {
26                 k_t[cnt++]=temp;
27                 temp*=k;
28             }
29         }
30         ll ans=0;
31         for(i=1;i<cnt;i++)mp[k_t[i]]=1;
32         for(i=1;i<=n;i++)
33         {
34             if(mp[f[i]])ans+=mp[f[i]];
35             for(j=1;j<cnt;j++)
36             mp[f[i]+k_t[j]]++;
37         }
38         cout<<ans<<endl;
39     }
40     return 0;
41 }

转载于:https://www.cnblogs.com/WHLdbk/p/6506534.html

codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)相关推荐

  1. codeforces 776C

    codeforces 776C 题目: C. Molly's Chemicals time limit per test2.5 seconds memory limit per test512 meg ...

  2. C. Molly's Chemicals

    题目链接:http://codeforces.com/problemset/problem/776/C C. Molly's Chemicals time limit per test 2.5 sec ...

  3. HDU 1231 最大连续子序列

    最大连续子序列 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. 最大连续子序列(dp)

    Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...,  Nj },其中 1 <= i < ...

  5. 最大连续子序列和-动态规划

    题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序 ...

  6. [数字技巧]最大连续子序列和

    最大连续子序列和这个问题是一个比较常见的问题,出现在很多公司的面试笔试中.题目大概是这样描述的: 输入一个整形数组,数组中有正数也有负数,数组中连续一个或多个组成一个子序列,每个子序列都有一个和,求所 ...

  7. 最大连续子序列乘积(DP)

    题目来源:小米手机2013年校园招聘笔试题题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 输入: 输入可能包含多个测试样例. 每个测试样例的第一行仅包含正整数 ...

  8. 四种方法解决最大连续子序列和问题

    四种方法解决最大连续子序列和问题 参考文章: (1)四种方法解决最大连续子序列和问题 (2)https://www.cnblogs.com/AlvinZH/p/6795647.html 备忘一下.

  9. 九度OJ 1011:最大连续子序列 (DP)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...

最新文章

  1. 谁来护航储能电池安全?
  2. SAP系统内部顾问如何培养
  3. LeetCode Valid Sudoku
  4. switch语句小练习
  5. 如何输入已经以新的TTY运行的Docker容器
  6. PHP正则表达式详解(三)
  7. linux应用之Lamp(apache+mysql+php)的源码安装(centos)
  8. pdf文档转换器绿色版
  9. SPSS统计分析专题系列(一、认识SPSS)
  10. 深富策略:“石化双雄”爆发 市场不确定性增大
  11. SpringBoot线程池获取service实例空指针
  12. 分享一个动态sql编写工具
  13. 二维线段树(线段树套线段树)
  14. [1106]python bezier(贝塞尔)曲线
  15. Jmeter中唯一值-UUID取值(截取指定长度、去除“-”)
  16. 阻塞式IO和非阻塞式IO
  17. Nuxt - 网站接入 51LA 网站统计详细教程(提供 51LA.js 官方插件与引入教程)
  18. html js获取天气预报,js 读取天气预报信息 示例代码(百度地图天气接口)
  19. Python是什么编程语言
  20. Java笔记(二)(寒假)

热门文章

  1. 【数据库系统设计】SQL语言实验
  2. 量化策略回测ATRRSI
  3. 整理了4个B端产品调研网站,不花一分钱获得最全面的产品体验
  4. 绝对干货:保险公司决策分析系统建设方案
  5. [Deprecated( please use panBy and panTo APIs )]
  6. php生成超链接完整代码_PHP自动把网站自动添加超链接怎么写
  7. android mediarecorder 输出到流_音视频的采集、编码、封包成 mp4 输出
  8. 3gpp协议_3GPP都在干什么(16)?:3GPP中网络切片原理及协议解读
  9. 最近公共祖先_LeetCode 236. 二叉树的最近公共祖先
  10. python中set index_python pandas DataFrame.set_index用法及代码示例