时间限制1 Second 内存限制 512 Mb

题目描述

你有n个问题,你已经估计了第i个问题的难度为Ci,现在你想使用这些问题去构造一个问题集。比赛的问题集必须包含至少两个问题,而且比赛的总难度必须至少为l至多为r,此外最简单的问题和最难的问题之间的差异至少为x请您找出能够选择的问题集的数量。

输入

第一行有T组输入(1 ≤ T ≤ 10接下来一行输入n, l, r, x (1 ≤ n ≤ 10, 1 ≤ l ≤ r ≤ 1e9, 1 ≤ x ≤ 1e6)然后输入n个正整数 c1, c2, c3....cn (1 ≤ ci ≤ 1e6)

输出

每组输出单独占一行,一个正整数表示答案

输入样例

2
3 5 6 1
1 2 3
4 40 50 10
10 20 30 25

输出样例

2
2

思路

二进制枚举,每次枚举一个状态,统计该状态下的最大难度值,最小难度值,总难度值,然后判断这些数据满不满足题目所给的条件,满足的话,问题集数量加一

因为之前不理解二进制枚举,在这个题上面卡了大概一个小时,最后把以前的模板输出了一下,顿悟,然后一遍敲过。对二进制枚举也有了更深的理解

AC代码

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <limits.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <set>
#include <string>
#define ll long long
#define ull unsigned long long
#define ms(a) memset(a,0,sizeof(a))
#define pi acos(-1.0)
#define INF 0x7f7f7f7f
#define lson o<<1
#define rson o<<1|1
const double E=exp(1);
const int maxn=1e6+10;
const int mod=1e9+7;
using namespace std;
int a[maxn];
int main(int argc, char const *argv[])
{ios::sync_with_stdio(false);int t;int n,l,r,x;cin>>t;while(t--){cin>>n>>l>>r>>x;for(int i=0;i<n;i++){cin>>a[i];}int ans=0;for(int i=0;i<(1<<n);i++){int diff_min=INT_MAX;//题目的最小难度int diff_max=INT_MIN;//题目的最大难度int diff_sum=0;//题目的总难度for(int j=0;j<n;j++){if(i>>j&1){diff_min=min(diff_min,a[j]);diff_max=max(diff_max,a[j]);diff_sum+=a[j];}}if(diff_max-diff_min>=x&&diff_sum>=l&&diff_sum<=r)ans++;}cout<<ans<<endl;}return 0;
}

转载于:https://www.cnblogs.com/Friends-A/p/10324374.html

HPU组队赛B:问题(二进制枚举)相关推荐

  1. BZOJ1688|二进制枚举子集| 状态压缩DP

    Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) ...

  2. 116. 飞行员兄弟【二进制枚举】

    二进制枚举即可,需要注意的是,这道题和费解的开关还是有不同点的. 费解的开关枚举第一行就行了,因为它有依赖关系的. 而这个是一个十字形,无那种关系.故直接暴力枚举邓按不按的所有情况即可. #inclu ...

  3. 1362. 健康的荷斯坦奶牛【难度: 一般 / 二进制枚举】

    https://www.acwing.com/problem/content/1364/ 二进制枚举即可,取一个最小值. #include<bits/stdc++.h> using nam ...

  4. 容斥原理(二进制枚举)

    在计数时,必须注意无一重复,无一遗漏.为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计 ...

  5. # 起床困难综合症(二进制枚举+按位求贡献)

    起床困难综合症(二进制枚举+按位求贡献) 题意:n扇门,每扇门包括一个运算op和数x,玩家有一个初始攻击力[0,m],经过n扇门后的值为最终伤害值.给出n和m,求最大伤害值. code: #inclu ...

  6. HDU 5025Saving Tang Monk BFS + 二进制枚举状态

    3A的题目,第一次TLE,是因为一次BFS起点到终点状态太多爆掉了时间. 第二次WA,是因为没有枚举蛇的状态. 解体思路: 因为蛇的数目是小于5只的,那就首先枚举是否杀死每只蛇即可. 然后多次BFS, ...

  7. HDU - 1796——容斥原理+二进制枚举

    [题目描述] Now you get a number N, and a M-integers set, you should find out how many integers which are ...

  8. 【动态规划笔记】状压dp:蓝桥 矩阵计数 (二进制枚举)

    二进制枚举: 一共有n*m个位置,每个位置都有两种选择 ,所以用二进制枚举,并判断是否合理 二进制枚举操作: 枚举所有的二进制数 for(int i=0;i<n*m;i++)  判断二进制数1的 ...

  9. T^T找数字(搜索+二进制枚举)

    题目链接:传送门 解题思路:看一眼n的大小,发现只有20,所以我们可以用决策搜索,或者二进制枚举解决,用搜索做法则需要判断第i个位置是否选取,然后当前的总和是多少,其实用二进制枚举也是这样做的,我们判 ...

最新文章

  1. 我的第一个Python程序
  2. php邮件加密,怎样对邮件正文分段加密及解密解决思路
  3. ubuntu下使用filezilla上传文件权限问题(open for write: permission denied)
  4. 日志服务(Log service)4月控制台更新指南
  5. 在datatable中,在指定位置插入列
  6. Http协议与TCP协议理解(转载的)
  7. 解决pytorch softmax警告UserWarning: Implicit ....Change the call to include dim=X as an argument.
  8. 导入项目时中文乱码的消除
  9. C# 知识点笔记:IEnumerable的使用,利用反射动态调用方法
  10. zTree实现树的模糊搜索功能
  11. 均匀线阵常规波束形成 matlab程序,波束形成Matlab程序
  12. 2015出现的25项最佳发明
  13. Vue · 导航守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave
  14. APM编译example
  15. 互联网晚报 | 9月15日 星期三 | iPhone 13正式发布;天猫双11正式启动商家报名;华为推出鸿蒙矿山操作系统“矿鸿”...
  16. 四路组相联原理_计算机组成原理中是如何求是几路组相联映像?
  17. 详解通往Web3的护照:去中心化身份DID
  18. 计算机系单身率排行榜,中国高校单身率排行榜,第一名实至名归!
  19. libjpeg 的使用与安装
  20. androidpn客户端深析

热门文章

  1. C# 运算符的优先级
  2. 大一计算机在线考试,Word 大一计算机考试操作题
  3. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...
  4. c语言使能,什么是锁存使能输入
  5. linux的网络地址配置,教你如何完成Linux网络地址配置
  6. java 进程睡眠_Linux进程的睡眠和唤醒简析
  7. php包含文件时显示空白页,php中添加了如下语句出现空白页 删除页面zhengchang
  8. mysql 1061原因_MySQL死锁问题分析及解决方法实例详解(转)
  9. 计算机网络工程实用技术考试,计算机网络实用技术期中考试复习题.doc
  10. Socket通信之操作系统的字节序和位数