Codeforce :466C. Number of Ways (数学)

https://codeforces.com/problemset/problem/466/C

解题说明:此题是一道数学题,若平分分成若干种情况,应当整体(sum)考虑,对sum/3进行分析。它是区分3段的标准。

所以当部分和tmp=sum/3,部分统计加一。

当 tmp==sum*2/3,则全部统计ans+=部分统计(s)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 5e5 + 10;
ll sum[N];
int main() {
	//freopen("in.txt", "r", stdin);
	ios::sync_with_stdio(false), cin.tie(0);
	int n; cin >> n;
	for (int i = 1; i <= n; ++i) {
		ll x; cin >> x;
		sum[i] = sum[i - 1] + x;
	}
	ll ans = 0, num = 0;
	for (int i = 1; i < n; ++i) {
		if (sum[i] * 3 == 2 * sum[n]) ans += num;
		if (sum[i] * 3 == sum[n]) num++;
	}
	cout << ans << endl;
}
posted @   RioTian  阅读(140)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战
点击右上角即可分享
微信分享提示