zoukankan      html  css  js  c++  java
  • Codeforces 550B 【暴力】

    题意:
    有n个数字,
    要求在这n个数中选出至少两个数字,
    使得它们的和在L,R之间,并且最大的与最小的差值要不小于x
    思路:
    撒比了啊。。。
    根据状态的话一共也就是2^15…直接暴力,二进制的小魅力还是没能领会;
    code……

    #include <bits/stdc++.h>
    #include<algorithm>
    using namespace std;
    
    typedef long long LL;
    
    const int N=1e6+10;
    
    int a[20];
    int main()
    {
        int n;
        int L,R;
        int x;
        int ans;
        scanf("%d%d%d%d",&n,&L,&R,&x);
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        ans=0;
        int st=1<<n;
        for(int i=1;i<=st;i++)
        {
            int cnt=0;
            int sum=0;
            int tmin=N;
            int tmax=-N;
            for(int j=0;j<n;j++)
            {
                if((1<<j)&i)
                {
                    cnt++;
                    tmax=max(tmax,a[j]);
                    tmin=min(tmin,a[j]);
                    sum+=a[j];
                }
            }
            if(cnt>=2&&sum>=L&&sum<=R&&(tmax-tmin)>=x)
                ans++;
        }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    01背包
    manacher马拉车算法
    盒子放球的DP
    Children’s Queue
    抽象类_作为接口
    斯特林数
    欧拉路HDU3018
    2019 SDN上机第三次作业
    第05组 Alpha冲刺(2/4)
    Alpha冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934867.html
Copyright © 2011-2022 走看看