2 条题解

  • 0
    @ 2026-4-6 19:19:08
    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    /* 开始学习二进制枚举:他是dfs的一种简化
       仅用来做 1暴力枚举(n<20) 2选与不选----之后总结果出来了再进行下一步处理 
       小模版:int a[]={1,2,3}--待选元素与数组
        int n=sizeof(a)/sizeof(a[0])
        for(int i=0;i<(1<<n);i++)//n个数 共 0000--1111 2的n次即 1<<n; 
        {
          //此时 i就是一种情况
    	  //情况具体化
    	  for(int j=0;j<n;j++)
    	  {
    	   if((i>>j)&1)//进行处理 
          }
        }
        注意注意!!!起点与终点(是否可以全不选与全选) 
       ///////////////////////////////////////////////
       回到本题:n个数,x 多少个组合+ <x; 
    */
    const int N=30;
    int a[N];
    int ans;
    int n,x;
    signed main()
    { std::ios::sync_with_stdio(0);
      cin.tie(0),cout.tie(0);	
        cin>>n>>x;
        for(int i=0;i<n;i++) cin>>a[i];
        for(int i=0;i<(1<<n);i++)
        {
          int sum=0;
          for(int j=0;j<n;j++)
          {
          	if((i>>j)&1)
          	 sum+=a[j];
    	  }
    	  if(sum<x) ans++;
    	}
    	cout<<ans<<"\n";	
    	return 0;
    }

    信息

    ID
    832
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    303
    已通过
    95
    上传者