codeforces 466-C. Number of Ways(前缀和+尺取)
来源:互联网 发布:淘宝客服应聘简历 编辑:程序博客网 时间:2024/06/06 02:09
http://codeforces.com/problemset/problem/466/C
题目大意:
给出一组数,你需要将它划分成和相等的三部分。问你最多有多少种不同的划分方式?
解题思路:
用前缀和保存数据,之后在划分的时候需要用尺取,因为你需要排除2*k的部分在k的部分前的情况,例如数据:
3 4 -2 4
#include<iostream>using namespace std;#define maxn 500005long long s[maxn],sum[maxn],a[maxn],b[maxn];int main(){ int n; while(cin>>n) { long long ans=0; sum[0]=0; for(int i=1;i<=n;i++) { cin>>s[i]; sum[i]=sum[i-1]+s[i]; } long long k=sum[n]/3; if(sum[n]%3==0) { int t1=0,t2=0; for(int i=1;i<n;i++) { if(sum[i]==k&&i<n-1) a[t1++]=i; if(sum[i]==2*k&&i<n) b[t2++]=i; } int j=0; for(int i=0;i<t1;i++) { while(b[j]<=a[i]&&j<t2) j++; ans+=t2-j; } } else ans=0; cout<<ans<<endl; } return 0;}
阅读全文
0 0
- codeforces 466-C. Number of Ways(前缀和+尺取)
- CodeForces - 466C Number of Ways (前后缀和)
- codeforces 466C C. Number of Ways
- codeforces 466C Number of Ways
- Codeforces 466 C. 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-Number of Ways
- Codeforces 466C Number of Ways 二分
- Codeforces 466C Number of Ways【思维】
- codeforces 466C Number of Ways
- Codeforces 466C Number of Ways
- 【CODEFORCES】 C. Number of Ways
- 深入理解TCP传输控制协议
- 基础知识
- Monkey API学习与脚本编写小记
- [ES6__01]30分钟掌握ES6/ES2015核心内容(上)
- 用JavaScript实现一个网页版贪吃蛇
- codeforces 466-C. Number of Ways(前缀和+尺取)
- 输入不超过10000的正整数,计算n!的具体值。
- 分享好文章 一文看懂BP网络反向传播(转载)
- 构建乘积数组
- 提示框自动消失
- 可重定位对象模块格式
- Git管理工具 基础学习
- 【ML--14】在R语言中使用SVM算法做多分类预测
- Web项目总结