• 10月24日 化装晚会


    题目

    题目描述

          万圣节又到了!Farmer John打算带他的奶牛去参加一个化装晚会,但是,FJ只做了一套能容下两头总长不超过S(1 < = S < = 1,000,000)的牛的恐怖服装。FJ养了N(2 < = N < = 50,000)头按1..N顺序编号的奶牛,编号为i的奶牛的长度为L_i(1 < = L_i < = 1,000,000)。如果两头奶牛的总长度不超过S,那么她们就能穿下这套服装。
          FJ想知道,如果他想选择两头不同的奶牛来穿这套衣服,一共有多少种满足条件的方案。
     

    输入

    输入文件的第1行是 2个用空格隔开的整数:N 和 S, 第2..N+1行每行一个整数:L_i

    输出

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

    输入样例复制

    4 6
    3
    5
    2
    1

    输出样例复制

    4

    说明

    输出说明: 4种选择分别为:奶牛1和奶牛3;奶牛1和奶牛4;奶牛2和奶牛4;奶牛3和 奶牛4。 【数据规模】 对于30%的数据,N<=10000; 对于100%的数据,N<=50000

    分析

        题目大意就是一个求两两相加小于一个数的组数

          方法一:  排序   循环  如果出现第一个大于s的数 break 答案加前面有多少个数

          但这样的话可能会被数据卡  

          正解:   排序   二分  

    代码

       

    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #define inf 0x7f7f7f7f
    using namespace std;
    int n,s,cow[1000005];
    long long ans=0;
    int readd(int &x)
    {
        char ch;
        x=0;
        while(!isdigit(ch)) ch=getchar();
        while(isdigit(ch))
        {
            x=x*10+ch-'0';
            ch=getchar();
        }
        return 0;
    }
    int main()
    {
        scanf("%d%d",&n,&s);
        for(int i=1;i<=n;i++) readd(cow[i]);
        sort(cow+1,cow+1+n);
        for(int i=1;i<=n;i++)
        {
            int l=i+1,r=n,mid;
            while(l<=r)
            {
                mid=(l+r)/2;
                if (cow[i]+cow[mid]<=s) l=mid+1; else r=mid-1;
            }
            ans+=r-i;
        }
        cout<<ans;
    }
    为何要逼自己长大,去闯不该闯的荒唐
  • 相关阅读:
    MIT Linear Algebra#4 Determinants
    MIT Linear Algebra#3 Orthogonality
    MIT Linear Algebra#2 Vector Spaces and Subspaces
    MIT Linear Algebra#1 Solving Linear Equations
    MIT Linear Algebra#0 Introduction to Vectors
    Image Filter and Recover
    Computational Geometry
    TOP-K Problems
    pat 1151 LCA in a Binary Tree
    上传文件到git仓库中
  • 原文地址:https://www.cnblogs.com/zjzjzj/p/9860983.html
Copyright © 2020-2023  润新知