codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
题目链接
题意:给出一个有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的次方的个数)相关推荐
- codeforces 776C
codeforces 776C 题目: C. Molly's Chemicals time limit per test2.5 seconds memory limit per test512 meg ...
- C. Molly's Chemicals
题目链接:http://codeforces.com/problemset/problem/776/C C. Molly's Chemicals time limit per test 2.5 sec ...
- HDU 1231 最大连续子序列
最大连续子序列 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 最大连续子序列(dp)
Problem Description 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i < ...
- 最大连续子序列和-动态规划
题目描述: 给定K个整数的序列{ N1, N2, -, NK },其任意连续子序列可表示为{ Ni, Ni+1, -, Nj },其中 1 <= i <= j <= K.最大连续子序 ...
- [数字技巧]最大连续子序列和
最大连续子序列和这个问题是一个比较常见的问题,出现在很多公司的面试笔试中.题目大概是这样描述的: 输入一个整形数组,数组中有正数也有负数,数组中连续一个或多个组成一个子序列,每个子序列都有一个和,求所 ...
- 最大连续子序列乘积(DP)
题目来源:小米手机2013年校园招聘笔试题题目描述: 给定一个浮点数序列(可能有正数.0和负数),求出一个最大的连续子序列乘积. 输入: 输入可能包含多个测试样例. 每个测试样例的第一行仅包含正整数 ...
- 四种方法解决最大连续子序列和问题
四种方法解决最大连续子序列和问题 参考文章: (1)四种方法解决最大连续子序列和问题 (2)https://www.cnblogs.com/AlvinZH/p/6795647.html 备忘一下.
- 九度OJ 1011:最大连续子序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5615 解决:2668 题目描述: 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ...
最新文章
- 谁来护航储能电池安全?
- SAP系统内部顾问如何培养
- LeetCode Valid Sudoku
- switch语句小练习
- 如何输入已经以新的TTY运行的Docker容器
- PHP正则表达式详解(三)
- linux应用之Lamp(apache+mysql+php)的源码安装(centos)
- pdf文档转换器绿色版
- SPSS统计分析专题系列(一、认识SPSS)
- 深富策略:“石化双雄”爆发 市场不确定性增大
- SpringBoot线程池获取service实例空指针
- 分享一个动态sql编写工具
- 二维线段树(线段树套线段树)
- [1106]python bezier(贝塞尔)曲线
- Jmeter中唯一值-UUID取值(截取指定长度、去除“-”)
- 阻塞式IO和非阻塞式IO
- Nuxt - 网站接入 51LA 网站统计详细教程(提供 51LA.js 官方插件与引入教程)
- html js获取天气预报,js 读取天气预报信息 示例代码(百度地图天气接口)
- Python是什么编程语言
- Java笔记(二)(寒假)
热门文章
- 【数据库系统设计】SQL语言实验
- 量化策略回测ATRRSI
- 整理了4个B端产品调研网站,不花一分钱获得最全面的产品体验
- 绝对干货:保险公司决策分析系统建设方案
- [Deprecated( please use panBy and panTo APIs )]
- php生成超链接完整代码_PHP自动把网站自动添加超链接怎么写
- android mediarecorder 输出到流_音视频的采集、编码、封包成 mp4 输出
- 3gpp协议_3GPP都在干什么(16)?:3GPP中网络切片原理及协议解读
- 最近公共祖先_LeetCode 236. 二叉树的最近公共祖先
- python中set index_python pandas DataFrame.set_index用法及代码示例