zoukankan      html  css  js  c++  java
  • CodeForces 550B Preparing Olympiad(DFS回溯+暴力枚举)

    题目链接】:click here~~

    题目大意

    一组题目的数目(n<=15),每一个题目有对应的难度,问你选择一定的题目(大于r个且小于l个)且选择后的题目里最小难度与最大难度差不小于x,求选择方案数。

    解题思路】:

    DFS+回溯。

    先发一发比較拙的代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e5+10;
    int num[N],mum[N];
    int n,m,q,t,l,r;
    int top,ans,cnt;
    void dfs(int sum,int d,int x,int minn)///和。极值,当前循环。最小数
    {
        if(sum>=l&&sum<=r&&d>=q) ans++;
        if(sum>r) return;
        ///if(sum<l) return;当前累加的sum可能小于l
        for(int i=x;i<=n;++i)
        {
            dfs(sum+num[i],num[i]-minn,i+1,minn);
        }
    }
    int main()
    {
        while(cin>>n>>l>>r>>q)
        {
            ans=0;
            memset(num,0,sizeof(num));
            for(int i=1; i<=n; ++i) scanf("%d",&num[i]);
            sort(num+1,num+1+n);
            for(int i=1; i<=n; ++i)
            {
                dfs(num[i],0,i+1,num[i]);///为了參照最大和最小,引入最小数
            }
            printf("%d
    ",ans);
        }
        return 0;
    }

  • 相关阅读:
    mongodb的账户管理
    mongo备份与恢复
    mongo索引
    聚合aggregate
    07-【jsp基本了解】
    Servlet登录小案例
    06-【servletconfig、servletContext 】
    05-【session、cookie】
    jQuery
    04-【servlet转发和重定向】
  • 原文地址:https://www.cnblogs.com/llguanli/p/7043731.html
Copyright © 2011-2022 走看看