POJ-3663-Costume Party

简介:

Costume Party
Time Limit: 1000MS  Memory Limit: 65536K
Total Submissions: 11237  Accepted: 4512

Description

It's Halloween! Farmer John is taking the cows to a costume party, but unfortunately he only has one costume. The costume fits precisely two cows with a length of S (1 ≤ S ≤ 1,000,000). FJ has N cows (2 ≤ N ≤ 20,000) conveniently numbered 1..N; cow i has length Li (1 ≤ Li ≤ 1,000,000). Two cows can fit into the costume if the sum of their lengths is no greater than the length of the costume. FJ wants to know how many pairs of two distinct cows will fit into the costume.

Input

* Line 1: Two space-separated integers: N and S
* Lines 2..N+1: Line i+1 contains a single integer: Li

Output

* Line 1: A single integer representing the number of pairs of cows FJ can choose. Note that the order of the two cows does not matter.

Sample Input

4 6
3
5
2
1

Sample Output

4

Source

USACO 2008 January Bronze

 

 


前两天比赛的题,脑子抽筋没优化超时了,今天看看,真简单啊,罪过罪过~~~
题意:有一组数组N,要求这N个数两两组合能拼凑出多少对和(Ni+Nj)小于或等于M的组合

AC代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAXN 20020
int a[MAXN];
int main()
{
    int i,j,n,m,sum,temp;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
       memset(a,0,sizeof(a));
       for(i=0;i<n;i++)
       scanf("%d",&a[i]);
       sort(a,a+n);
       temp=n;
       sum=0;
       for(i=0;i<temp;i++)
         for(j=i+1;j<temp;j++)
         {
            if(a[i]+a[j]<=m)
            {
               sum++;
            }
            else
            {
                temp=j;//优化,后面的怎么加都大于长度,就没有必要纳入每次的计算了 
                break;
            }
         }
       printf("%d",sum);
    }
    return 0;
}
相关文章
|
4月前
|
算法 C++
POJ 3740 Easy Finding题解
这篇文章提供了一个使用舞蹈链(Dancing Links)算法解决POJ 3740 "Easy Finding" 问题的C++代码实现,该问题要求找出矩阵中能够使每一列都恰好包含一个1的行集合。
|
7月前
|
人工智能 算法 BI
D - Silver Cow Party——POJ3268(连续用两次Dijkstra算法)
D - Silver Cow Party——POJ3268(连续用两次Dijkstra算法)
|
算法
light oj 1258 - Making Huge Palindromes(KMP)
ight oj里这个题目是属于KMP分类的,但乍看好像不是kmp,因为只有一个字符串。要想的到一个回文串,把该字符串翻转接到原串后面必然是一个回文串,但并不一定是最短的。我们必须考虑怎么把两个串尽量融合在一起,这就要看翻转串的前段与原串的后段有多少是匹配的了,这里就用到了KMP算法。
38 1
poj 1455 Crazy tea party
说一下大概思路,如果是排成一排的n个人,如 1 2 3 4 5 6 7 8 我们要变成 8 7 6 5 4 3 2 1 需要交换 28次,找规律的话就是 n*(n-1)/2,但这道题是一个圈,要让他们顺序变反的话不一定1要在8的位置上去,4 3 2 1 8 7 6 5 这样也是反的,我们只要把n个人分成两部分,然后按拍成一条线的方法来出来两部分就OK了;
29 0
hdoj 1520 Anniversary party(树形dp)
我们可以把一个节点当做一个人,每个节点都有一个权重。按照题目意思,如果我们取了某个节点,那么他的父节点和子节点都是不能取的。按要求选取节点,使得选取节点的权重和最大。
40 0
HDU 3506 Monkey Party(动态规划)
HDU 3506 Monkey Party(动态规划)
62 0
HDU 3506 Monkey Party(动态规划)
POJ-Silver Cow Party (最短路)
POJ-Silver Cow Party (最短路)
99 0
|
Perl
AtCoder Beginner Contest 217 F - Make Pair (区间dp)
AtCoder Beginner Contest 217 F - Make Pair (区间dp)
128 0

热门文章

最新文章