CodeForces 776C Molly's Chemicals
来源:互联网 发布:jdk1.8 linux 32 下载 编辑:程序博客网 时间:2024/05/17 01:35
题目链接:http://codeforces.com/contest/776/problem/C
题意:给你一个序列,问你他有多少个子序列的和等k的多少次方
解析:先用前缀和处理子序列的和,如果枚举每个子序列的和即sum[i]-sum[j]=k^x,肯定会超时,那么可以做一个变换即sum[i]-k^x=sum[j],这样的姿势就能过了
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <iostream>#include <vector>#include <queue>#include <string>#include <set>#include <stack>#include <map>using namespace std;const int maxn = 1e5+100;int a[maxn];long long sum[maxn];map<long long,int>maple;long long ans,n,k;void slove(long long x){ maple.clear(); for(int i=0;i<n;i++) { maple[sum[i]]++; if(maple[sum[i+1]-x]) ans += maple[sum[i+1]-x]; }}int main(){ scanf("%I64d %I64d",&n,&k); for(int i=0;i<n;i++) scanf("%d",&a[i]); sum[1] = a[0],ans = 0; for(int i=2;i<=n;i++) sum[i] = sum[i-1]+a[i-1]; if(k==1) slove(1); else if(k==-1) { slove(1); slove(-1); } else { long long tmp = 1; while(tmp<1e15) { slove(tmp); tmp*=k; } } printf("%I64d\n",ans); return 0;}
0 0
- 【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
- Molly's Chemicals CodeForces
- Molly's Chemicals CodeForces
- codeforces 776C Molly's Chemicals(前缀和 二分搜索)
- Codeforces 776C Molly's Chemicals 前缀和
- codeforces 776C Molly's Chemicals (数学+二分法)
- 【Codeforces 776 C Molly's Chemicals】+ 前缀和 + map
- Codeforces-776C-Molly's Chemicals(前缀和)
- CodeForces 776C Molly's Chemicals (思维+前缀)
- 【Codeforces 776 C. Molly's Chemicals】+ map + 前缀和
- Codeforces Round #400 C. Molly's Chemicals
- Codeforces Round #400 C. Molly's Chemicals (二分)
- HDU 1020 Encoding
- Linux命令行登录防止MySQL密码泄露的几个小妙招
- Self-introduction
- SQL优化
- 极速微信小程序开发,第一天
- CodeForces 776C Molly's Chemicals
- Mac 上 java 究竟在哪里,本文彻底让你搞清楚!
- sttdio多渠道打包
- 修改struts2拦截器默认值
- solr 6.2.0系列教程(二)IK中文分词器配置及添加扩展词、停止词、同义词
- qduoj 76 映射游戏
- Android继承知识---传感器初识
- sttdio多渠道打包
- EventBus的使用