求助
  • 板块灌水区
  • 楼主Xy110319
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/5/30 16:52
  • 上次更新2024/5/30 20:07:04
查看原帖
求助
1071571
Xy110319楼主2024/5/30 16:52

[ABC251B] At Most 3 (Judge ver.)

题面翻译

有 nn 个数,最多选 33 个,总和正好凑到 ww 及以下的有几个。

Translated by @_YXJS_\tt{\_YXJS\_}.

题目描述

おもり 11, おもり 22, …\dots, おもり NN の NN 個のおもりがあります。おもり ii の重さは AiA_i です。
以下の条件を満たす正整数 nn を 良い整数 と呼びます。

  • 3\bf{3} 個以下 の異なるおもりを自由に選んで、選んだおもりの重さの和を nn にすることができる。

WW 以下の正整数のうち、良い整数は何個ありますか?

输入格式

入力は以下の形式で標準入力から与えられる。

NN WW A1A_1 A2A_2 …\dots ANA_N

输出格式

答えを出力せよ。

样例 #1

样例输入 #1

2 10
1 3

样例输出 #1

3

样例 #2

样例输入 #2

2 1
2 3

样例输出 #2

0

样例 #3

样例输入 #3

4 12
3 3 3 3

样例输出 #3

3

样例 #4

样例输入 #4

7 251
202 20 5 1 4 2 100

样例输出 #4

48

提示

制約

  • 1 ≤ N ≤ 3001\ \leq\ N\ \leq\ 300
  • 1 ≤ W ≤ 1061\ \leq\ W\ \leq\ 10^6
  • 1 ≤ Ai ≤ 1061\ \leq\ A_i\ \leq\ 10^6
  • 入力される値はすべて整数

Sample Explanation 1

おもり 11 のみを選ぶと重さの和は 11 になります。よって 11 は良い整数です。 おもり 22 のみを選ぶと重さの和は 33 になります。よって 33 は良い整数です。 おもり 11 とおもり 22 を選ぶと重さの和は 44 になります。よって 44 は良い整数です。 これら以外に良い整数は存在しません。また、1,3,41,3,4 のいずれも WW 以下の整数です。よって答えは 33 個になります。

Sample Explanation 2

WW 以下の良い整数は存在しません。

Sample Explanation 3

良い整数は 3,6,93,6,9 の 33 個です。 たとえばおもり 11, おもり 22, おもり 33 を選ぶと重さの和は 99 になるので、99 は良い整数です。 1212 は良い整数 **ではない** ことに注意してください。

#include<bits/stdc++.h>
using namespace std;
unsigned long long n,a[1000000],w,cnt;
int main(){
	cin>>n>>w;
	for(int i=0;i<n;i++) cin>>a[i];
	sort(a,a+n);
	for(int i=0;i<n;i++){
		if(a[i]<=w) cnt++;
		
	}
	for(int i=0;i<n-1;i++){
		if(a[i]+a[i+1]<=w) cnt++;
		
	}
	for(int i=0;i<n-2;i++){
		if(a[i]+a[i+1]+a[i+2]<=w) cnt++;
		
	}
	cout<<cnt;
}

这么写为什么不对啊

2024/5/30 16:52
加载中...