2518 和为S

题目链接

前缀和

  • 哈希表
#include <iostream>
#include <vector>
#include <cstring>
#include <unordered_map>
using namespace std;
const int N = 3e5+5;
int nums[N];
int sum[N];
int main(){
    
    
	int n;
	cin>>n;
	memset(nums, 0, sizeof nums);
	unordered_map<int, int> mp;
	mp[0] = 1;
	memset(sum, 0, sizeof sum);
	for(int i = 0; i < n; i++){
    
    
		cin >> nums[i];
		sum[i+1] = sum[i] + nums[i];
	}
	
	int x;
	cin>>x;
	int ans = 0;
	for(int i = 1; i <= n; i++){
    
    
		ans += mp[sum[i]-x];
		mp[sum[i]]++;
	}
	cout<<ans<<endl;
	return 0;
} 

Guess you like

Origin blog.csdn.net/SYaoJun/article/details/117190420