首页 > 其他分享 >ABC 289 C - Coverage(dfs)

ABC 289 C - Coverage(dfs)

时间:2023-02-23 20:57:23浏览次数:53  
标签:typedef ABC const int LL dfs 289 集合

半个多月没写题,连暴力dfs都忘记了,完蛋,烂菜地里了

https://atcoder.jp/contests/abc289/tasks/abc289_c

题目大意:

给定一个N,M个集合,然后分别给出M个集合里面的数字个数以及每个数,

问我们怎样选集合能达到1到N的每一个数字都存在,问我们这样的选法有多少种?求出方法数。
Sample Input 1  
3 3
2
1 2
2
1 3
1
2
Sample Output 1  
3

笑迷糊了,一开始范围都没看到,想半天。做题先看数据范围
N,M的范围都在10以内,所以只管妥妥暴力dfs,每个集合都进行选和不选即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL,LL> PII;
const LL MAXN=1e18,MINN=31;
const LL N=1e6+10,M=4010;
const double PI=3.1415926535;
#define endl '\n'
vector<vector<LL>> a(N);
LL m,n,ans=0;
bool vis[N];
void dfs(LL idx)
{
    if(idx>n)
    {
        set<LL> st;
        for(int i=1;i<=n;i++)
        {
            if(vis[i])
            {
                for(int j=0;j<a[i].size();j++)
                    st.insert(a[i][j]);
            }
        }
        if(st.size()==m) ans++;
        return ;
    }
    //选
    vis[idx]=true;
    dfs(idx+1);
    //不选
    vis[idx]=false;
    dfs(idx+1);
}
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    int T=1;
    //cin>>T;
    while(T--)
    {
        cin>>m>>n;
        for(int i=1;i<=n;i++)
        {
            LL t;
            cin>>t;
            for(int j=1;j<=t;j++)
            {
                LL x;
                cin>>x;
                a[i].push_back(x);
            }
        }
        dfs(1);
        cout<<ans<<endl;
    }
    return 0;
}

标签:typedef,ABC,const,int,LL,dfs,289,集合
From: https://www.cnblogs.com/Vivian-0918/p/17149365.html

相关文章

  • Hadoop 系列之 HDFS
    简述本文主要基于Hadoop2.x以上版本,用于记录Hadoop组件HDFS的相关知识点。正文作为Hadoop三大组件之一,HDFS主要用于数据存储,而Hadoop又隶属于分布式架构,这就涉及到多服......
  • DFS和BFS理解+模板+例题
    DFS和BFS理解+模板+例题DFS(深度优先搜索)本质上是暴力把所有的路径都搜索出来,它运用了回溯,保存这次的位置并深入搜索,都搜索完便回溯回来,搜下一个位置,直到把所有最深位置都......
  • ABC236 E
    ABC263E题意从一个大小为n的数组选一些数,选的限制是:对于\(1\leqi\leqn-1\),\(a_i\)或者\(a_{i+1}\)被选。问题1:求符合题意要求的选法中最大平均数问题2:求符合题......
  • 案例:判断字符串abcoefoxyozzopp中出现次数最多的字符,并统计其次数
        //1.案例:判断字符串abcoefoxyozzopp中出现次数最多的字符,并统计其次数    varstr='abcoefoxyozzopp';    varo={};    fo......
  • Codeforces Round #849 (Div. 4) ABCDEFG1
    https://codeforces.com/contest/1791ABCDEG1全水题,直接上代码F往下翻A.CodeforcesChecking#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;t......
  • hadoop-hdfs安全模式关闭
    在安全模式下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者......
  • hadoop - hadoop2.6 伪分布式 - Java API 操作 HDFS
    1.环境  hadoop2.6   hdfs地址: hdfs://localhost:9000 开发环境:eclipse  新建Map/Reduce工程2.代码示例packagecn.labelnet.demo;importjava.io.FileIn......
  • HDFS数据目录挂载在根目录下至磁盘爆满问题解决
    1、查看hdfs-size.xml文件获取数据目录位置vim/opt/hadoop/etc/hadoop/hdfs-site.xml<property><name>dfs.datanode.data.dir</name><value>/home/hadoop-dat......
  • [ABC111D] Robot Arms
    \(\mathcalLink\)先判断无解情况。显然,每一步无论怎么走都会使奇偶性发生相同的改变,因此当\(\existsi,j\)使得\(x_i+y_i\not\equivx_j+y_j\pmod2\)时无解。考虑......
  • D - Change -abc285_d
    D-ChangeUsernames传送门 username Si可以变成Ti,但是同时只能有一个独一无二的Si 进行变化,画个图会发现就是看这个图中是否有环存在,做法如下三种方法求......