USACO08jan化妆晚会(贼水,我懵了)

[usaco08jan]化装晚会

描述 Description

万圣节又到了!Farmer John打算带他的奶牛去参加一个化装晚会,但是,
FJ只做了一套能容下两头总长不超过S(1 <= S <= 1,000,000)的牛的恐怖服装。
FJ养了N(2 <= N <= 20,000)头按1…N顺序编号的奶牛,编号为i的奶牛的长度为
L_i(1 <= L_i <= 1,000,000)。如果两头奶牛的总长度不超过S,那么她们就能
穿下这套服装。

FJ想知道,如果他想选择两头不同的奶牛来穿这套衣服,一共有多少种满足
条件的方案。

输入格式 Input Format

  • 第1行: 2个用空格隔开的整数:N 和 S

  • 第2…N+1行: 第i+1为1个整数:L_i

输出格式 Output Format

  • 第1行: 输出1个整数,表示FJ可选择的所有方案数。注意奶牛顺序不同的两种
         方案是被视为相同的

样例输入 Sample Input

4 6
3
5
2
1

样例输出 Sample Output

4

时间限制 Time Limitation

1s

注释 Hint

输出说明:

4种选择分别为:奶牛1和奶牛3;奶牛1和奶牛4;奶牛2和奶牛4;奶牛3和
奶牛4。
来源 Source
usaco 2008 jan

这道题有一个很显然的暴力 n 2 n^2 n2模拟,我们发现对于一对牛,(a,b)我们在比较a牛与其他牛能否套进服装的时候其实也得出了其他牛能否与a牛进套装,于是我们每次查询的i时候只需要询问i+1到n,0到i之前的信息已经的出来了
即使这样他也看起来也是一个加了剪枝的暴力,于是我抱着测数据的心态交了一下,然后就A了,就A了…
有一组刚好卡过去1000ms…

C o d e Code Code

#include<bits/stdc++.h>

#define MAXN 2000010

using namespace std;

int n, s;
int a[MAXN];
int ans = 0;

int main()
{
	scanf("%d%d", &n, &s);
	for(int i = 1; i <= n; ++i){
		scanf("%d", &a[i]);
	}	
	
	for(int i = 1; i <= n; ++i){
		for(int j = i + 1; j <= n; ++j){
			if(a[i] + a[j] <= s) ++ ans;
		}
	}
	
	printf("%d\n", ans);
	return 0;	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BIGBIGPPT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值