猫史档案馆


小白的C++彩蛋小锦集

用户:醉醉白凰醉醉白凰查看:4 回复:6 评论:4 创建时间:2021-03-27T09:55:06


center_image

懒得写算法了……凑活看吧


回复

上一页1 页 / 共 1下一页
虚影疾风虚影疾风

666

点赞1


评论


白鸽ovo白鸽ovo

DD

点赞0


评论


青柠檬_肉乎乎的兔子青柠檬_肉乎乎的兔子

emotion_编程猫_点赞

点赞0


评论


青柠檬_肉乎乎的兔子青柠檬_肉乎乎的兔子

我也来玩玩(?)

题目描述

输入一个非负整数数组a[1...n],求这个数组中有多少个非空的连续子序列的总和小于等于k。

输入格式

第一行包括一个整数n,代表数组的长度。 第二行包括n个非负整数,代表这个数组。 第三行包括一个整数k,代表求这个数组中有多少个非空的连续子序列的总和小于等于k。

输出格式

一个整数,代表这个数组中有多少个非空的连续子序列的总和小于等于k。

输入输出样例 输入 #1<button class="copy-btn lfe-form-sz-mi喵le" type="button" data-v-370e72e2="" data-v-52f2d52f="">复制</button>
5
1 2 3 4 5
5
输出 #1<button class="copy-btn lfe-form-sz-mi喵le" type="button" data-v-370e72e2="" data-v-52f2d52f="">复制</button>
7
--------------------------------------代码------------------------------------------------
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;
int a[1000005];
ll sum[1000005];
int main(){
	int n,k;
	cin >> n;
	for (int i = 1;i <= n;i++){
		cin >> a[i];
		sum[i] = a[i] + sum[i - 1];
	}	
	cin >> k;
	ll ans = 0;
	for (int l = 1;l <= n;l++){
		int R = upper_bound(sum + 1,sum + n + 1,k + sum[l -1]) - sum; 
		ans += R - l;
	}
	printf("%lld\n",ans);
	return 0;
}
--------------------------------------------------------------------
真好我又氵了一题))))

点赞0


评论


柒小枫柒小枫

不懂awa

点赞0


评论


月下樱花雨_中考退月下樱花雨_中考退

好家伙好家伙喵

点赞0


评论