题目链接

题目翻译:

给出一个数n,和一个浮点数a,数n代表全集U = {1,2,...,n},然后给出

M个U的子集,如果一个集合B(是U的子集),M个集合中有至少M*a个集合包含B,

则B这个集合就是一个满足条件的集合,统计U的子集中B这种集合的个数。

对于N个数的集合,其子集,可以从N个里面挑1个,挑2个,。。。挑N个数构成。

C(n,0)+ C(n,1) + C(n,2) + C(n,3) + ..... + C(n,n) = (1+1)^n = 2^n

N个数子集共有2^n种状态,其中每一个数都代表一个状态,意思就是代表一个子集。

对于输入的M个集合。集合的状态就是2^(num-1)的和。

为何这样?

加入现有一个集合:

1 3 6 10

把它算成 2^(1-1) + 2^(3-1) + 2^(6-1) + 2^(10-1)

这个数字可以用2进制表示:

num(数字): 10 9

8 7 6 5 4

3 2 1

binary bit(二进制位): 1 0 0 0 1 0 0 1 0 1

power(对应的权值): 2^9 2^8 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

对于每个状态,是一个数,它也是一个二进制串,二进制串中为1的位置,代表了

某个数字存在与集合M,当每个数与集合M进行与运算的时候,可以求出同为1的

二进制位,得出的数与当前这个相同,则说明当前数代表的状态是集合M的子集。

AC代码:


#include <iostream>
#include <stdio.h>
#include <math.h>
#include <string.h>
using namespace std;
char str[1000];
int M[55];
int main()
{
int n,m;
double a;
scanf("%d %lf ",&n,&a);
memset(M,0,sizeof(M));
m = 0;
while(gets(str))
{
int num = 0;
int len = strlen(str);
for(int i = 0; i < len; i++)
{
if(str[i]==' ')
{
M[m] = M[m] + (1<<(num-1));
num = 0;
}
else
{
num = num*10 + str[i]-'0';
}
}
M[m++] += (1<<(num-1));
}
int temp = ceil(m*a);
int state = (1<<n);
int ans = 0;
for(int i = 1; i <= state; i++)
{
int sum = 0;
for(int j = 0; j < m; j++)
{
if((i&M[j]) == i)
sum++;
}
if(sum >= temp)
ans++;
}
printf("%d\n",ans);
return 0;
}

2017 ACM-ICPC 亚洲区(南宁赛区)网络赛:Frequent Subsets Problem (状态压缩)的更多相关文章

  1. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】

    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛  M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...

  2. HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)

    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: ...

  3. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  4. ICPC 2018 徐州赛区网络赛

    ACM-ICPC 2018 徐州赛区网络赛  去年博客记录过这场比赛经历:该死的水题  一年过去了,不被水题卡了,但难题也没多做几道.水平微微有点长进.     D. Easy Math 题意:   ...

  5. Skiing 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛H题(拓扑序求有向图最长路)

    参考博客(感谢博主):http://blog.csdn.net/yo_bc/article/details/77917288 题意: 给定一个有向无环图,求该图的最长路. 思路: 由于是有向无环图,所 ...

  6. [刷题]ACM/ICPC 2016北京赛站网络赛 第1题 第3题

    第一次玩ACM...有点小紧张小兴奋.这题目好难啊,只是网赛就这么难...只把最简单的两题做出来了. 题目1: 代码: //#define _ACM_ #include<iostream> ...

  7. 2016 ACM/ICPC亚洲区大连站-重现赛 解题报告

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5979 按AC顺序: I - Convex Time limit    1000 ms Memory li ...

  8. 2014ACM/ICPC亚洲区鞍山赛区现场赛1009Osu!

    鞍山的签到题,求两点之间的距离除以时间的最大值.直接暴力过的. A - Osu! Time Limit:1000MS     Memory Limit:262144KB     64bit IO Fo ...

  9. 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)

    In this problem, we will define a graph called star graph, and the question is to find the minimum d ...

  10. 2017ICPC南宁赛区网络赛 Overlapping Rectangles(重叠矩阵面积和=离散化模板)

    There are nnn rectangles on the plane. The problem is to find the area of the union of these rectang ...

随机推荐

  1. HBase 架构与工作原理1 - HBase 的数据模型

    本文系转载,如有侵权,请联系我:likui0913@gmail.com 一.应用场景 HBase 与 Google 的 BigTable 极为相似,可以说 HBase 就是根据 BigTable 设计 ...

  2. Java 反射 调用 demo

    基础类.供demo反射练习 package fanshe; public class Person { public String name; private String age; private ...

  3. eclipse 导入 gradle 项目遇到 UnsupportedConfigurationException 异常

    异常描述: org.eclipse.buildship.core.UnsupportedConfigurationException: Project at 'D:\XXXX_workspace\XX ...

  4. 第217天:深入理解Angular双向数据绑定的原理

    一.理解angular双向数据绑定 双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理.angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成. 那么什么是双向绑定,下面 ...

  5. jQuery Mobile页面跳转后未加载外部JS原因分析及解决

    在使用jQuery Mobile进行Web开发中,当页面跳转时(pageA => pageB),在pageB中引用的JS并未成功运行.因为,JQM并为将整个页面加载到当前的dom中,仅将data ...

  6. NewSQL 介绍

    1.CAP: CAP原理:• Consistency(一致性): 数据一致更新,所有数据变动都是同步的• Availability(可用性): 好的响应性能• Partition tolerance( ...

  7. 【刷题】BZOJ 2693 jzptab

    Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample Input 1 4 5 Sa ...

  8. AS可视化布局中文乱码

    求助android studio 的可视化布局中文乱码-CSDN论坛-CSDN.NET-中国最大的IT技术社区http://bbs.csdn.net/topics/391887442 Android ...

  9. 解题:POI 2012 Well

    题面 比较明显地能看出二分来,但是检查函数很难写.对于二分出的一个$mid$,我们要让它满足在$m$次操作内令序列中存在一个为零的位置,同时使得任意相邻的两项之差不超过$mid$ 第二项的检查比较好做 ...

  10. url参数中有+、空格、=、%、&、#等特殊符号的问题解决

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它 ...