codeforces 之 Number of Ways
来源:互联网 发布:图片采集软件 编辑:程序博客网 时间:2024/06/17 07:39
题意分析:
就是说给你一串数字,分成三段,每段的数子的和相等,求有多少种分法。用前缀数组和S[N],算出来A1=1/3S[N],A2=2/3S[N],求出当第I个A2出现时,前面已经有多少个A1,就对应有多少种分法。当S[N]=0,当做特例处理。
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
long long s[500005],a;
int main()
{
long long n,i,sum=0;
s[0] = 0;
cin>>n;
for(i=1; i<=n; i++) {
cin>>a;
s[i]=s[i-1]+a;
if(s[i] == 0) sum++;
}
if(s[n]%3 || n<3) cout<<0<<endl;
else if(s[n]==0) {
cout<<(sum-1)*(sum-2)/2<<endl;
}
else {
long long s1=s[n]/3,s2=s[n]*2/3,ans=0,co=0;
for(i=1; i<=n; i++) {
if(s[i]==s2) ans+=co;
if(s[i]==s1) co++;
}
cout<<ans<<endl;
}
return 0;
}
0 0
- codeforces 之 Number of Ways
- 【CODEFORCES】 C. Number of Ways
- codeforces 466C Number of Ways
- Codeforces 466 C. Number of Ways
- codeforces round #266 C. Number of Ways
- 【CodeForces】446C Number of Ways
- 【codeforces】 466C Number of Ways
- Codeforces 466C Number of Ways(高效)
- Number of Ways--CodeForces 466C 水题
- Codeforces 466C Number of Ways
- codeforces 466 C Number of Ways
- Codeforces 466C Number of Ways
- codeforces-466C-Number of Ways
- codeforces 466C C. Number of Ways
- Codeforces-466C-Number of Ways
- Codeforces 466C Number of Ways 二分
- Codeforces 466C Number of Ways【思维】
- codeforces 466C Number of Ways
- 【Unity Shaders】Vertex & Fragment Shader入门
- 互联网时代商业模式也要与时俱进
- 整数相加溢出判断
- Android开发之异步详解(二)之AsyncTask
- Quartus II 9.0正式版下载地址
- codeforces 之 Number of Ways
- OC_关于Object-C类的创建以及应用
- Mac下Eclipse连接不上Android手机的解决方法
- kali linux 7z文件解压
- CSDN CODE平台的使用总结
- ACdream 1417 Numbers
- 开启技术分享之旅
- ARP与ICMP的区别
- 开源精神至今已延续了半个世纪!