• 第七届河南省赛A.物资调度(dfs)


    10401: A.物资调度

    Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 95  Solved: 54 [Submit][Status][Web Board]

    Description

    某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷、衣物、食品和血浆等物资。可通往灾区的道路到处都是塌方,70%以上的路面损坏,桥梁全部被毁。国家立即启动应急预案,展开史上最大强度非作战空运行动,准备向灾区空投急需物资。

    一方有难,八方支援。现在已知有N个地方分别有A1A2,….,An个物资可供调配。目前灾区需要物资数量为M

    现在,请你帮忙算一算,总共有多少种物质调度方案。

    假设某地方一旦被选择调配,则其物资数全部运走。

    Input

    第一行: K     表示有多少组测试数据。

    接下来对每组测试数据有2行,第1:  N  M

                                第2行:A1  A……  An

    2K8     1<N100   1<M1000     1 Ai1000 

    所有数据都是正整数。输入数据之间有一个空格。

    假设给定的数据至少有一种调度方案。

    Output

    对于每组测试数据,输出一行:物资调度的总方案数

    Sample Input

    2
    4 4
    1 1 2 2
    4 6
    1 1 2 2
    

    Sample Output

    3
    1

    HINT

     

    Source

    第七届河南省赛

    题解:dfs。。。dp了半天没出来;;;

    代码:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<cmath>
    #include<algorithm>
    #include<set>
    using namespace std;
    #define mem(x,y) memset(x,y,sizeof(x))
    #define SI(x) scanf("%d",&x)
    #define SL(x) scanf("%lld",&x)
    #define  PI(x) printf("%d",x)
    #define  PL(x) printf("%lld",x)
    #define P_ printf(" ")
    const int INF=0x3f3f3f3f;
    const double PI=acos(-1.0);
    typedef long long LL;
    const int MAXN=1010;
    int m[MAXN];
    int N,M,ans;
    int vis[MAXN];
    void dfs(int sum,int pos){
    	if(sum==M){
    		ans++;
    		return;
    	}
    	if(sum>M)return;
    	for(int i=pos;i<N;i++){
    		if(sum+m[i]<=M&&!vis[i]){
    			vis[i]=1;
    			dfs(sum+m[i],i+1);
    			vis[i]=0;
    		}
    	}
    }
    int main(){
    	int T;
    	SI(T);
    	while(T--){
    		SI(N);SI(M);
    		mem(vis,0);
    		for(int i=0;i<N;i++)SI(m[i]);
    		sort(m,m+N);
    		ans=0;
    		dfs(0,0);
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    【CYH-02】NOIp考砸后虐题赛:成绩:题解
    UVA12657 Boxes in a Line:题解
    洛谷团队月赛题:题解
    UVA10071 Back to High School Physics:题解
    NOIp2018普及组T3暨洛谷P5017 摆渡车:题解
    洛谷P2001 硬币的面值 题解
    洛谷P1033 自由落体 题解
    尴尬
    UVA11988 【Broken Keyboard (a.k.a. Beiju Text)】:题解
    linux基础命令学习(十二)yum命令
  • 原文地址:https://www.cnblogs.com/handsomecui/p/5093695.html
Copyright © 2020-2023  润新知