codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
来源:互联网 发布:csgo 查询竞技场数据 编辑:程序博客网 时间:2024/06/01 19:08
题目链接
题意:给出一个有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 }
阅读全文
0 0
- codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
- codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
- codeforces 776C Molly's Chemicals(前缀和 二分搜索)
- Codeforces 776C Molly's Chemicals 前缀和
- 【Codeforces 776 C Molly's Chemicals】+ 前缀和 + map
- Codeforces-776C-Molly's Chemicals(前缀和)
- 【Codeforces 776 C. Molly's Chemicals】+ map + 前缀和
- 【codeforces 776C】Molly's Chemicals
- 【codeforces 776C】Molly's Chemicals 题解
- codeforces 776c Molly's Chemicals 【思维】
- Codeforces 776C-Molly's Chemicals
- CodeForces 776C Molly's Chemicals
- Codeforces 776C Molly's Chemicals 【数论】
- Molly's Chemicals 776C
- Codeforces Round #400 C. Molly's Chemicals(前缀和)
- Molly's Chemicals CodeForces
- Molly's Chemicals CodeForces
- codeforces 776C Molly's Chemicals (数学+二分法)
- C++中的const,static const和static类成员的初始化问题
- c语言 \\ 与 \区别
- JS 删除确认
- springboot+idea+mybatis
- font: 12px/16px "Lucida Console";
- codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)
- html
- js各种排序
- linux每天一命令:ls
- JS字符串转换数字
- 创建线程的三种方式
- 多态的实现和原理
- 小猪的C语言快速入门系列(九)
- Spring AOP 使用