首页 > 其他分享 >状压dp板子(cf div4 #937)

状压dp板子(cf div4 #937)

时间:2024-04-02 14:33:55浏览次数:674  
标签:now 20 int 状压 cf ++ div4 dp

#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> v[20];
string a[20], b[20];
bool dp[500010][20];
void dfs(int s, int now)
{
    dp[s][now] = true;
    for(auto nxt: v[now])
    {
        if(s & (1 << nxt)) continue;
        if(!dp[s | (1 << nxt)][nxt])
            dfs(s | (1 << nxt), nxt);
    }
}
int main()
{
    int t;
    cin >> t;
    while(t --)
    {
        int ans = 0;
        cin >> n;
        for(int i = 0; i < (1 << n); i ++)
        {
            for(int j = 0; j < n; j ++)
                dp[i][j] = false;
        }
        for(int i = 0; i < n; i ++)
        {
            cin >> a[i] >> b[i];
            v[i].clear();
        }
        for(int i = 0; i < n; i ++)
        {
            for(int j = i + 1; j < n; j ++)
            {
                if(a[i] == a[j] || b[i] == b[j])
                {
                    v[i].push_back(j);
                    v[j].push_back(i);
                }
            }
        }
        for(int i = 0; i < n; i ++)
        {
            dp[1 << i][i] = true;
            dfs(1 << i, i);
        } 
        for(int i = 0; i < (1 << n); i ++)
        {
            for(int j = 0; j < n; j ++)
                if(dp[i][j]) ans = max(ans, __builtin_popcount(i));
        }
        cout << n - ans << endl;
    }
    return 0;
}

 

标签:now,20,int,状压,cf,++,div4,dp
From: https://www.cnblogs.com/wockcow/p/18110516

相关文章

  • CF1935D Exam in MAC 题解
    ExaminMAC题意\(t\)组数据。给定一个大小为\(n\)的集合\(s\)和一个整数\(c\),保证\(0\leqslants_i\leqslantc(1\leqslanti\leqslantn)\)。求有多少对整数数对\((x,y)\),满足:\(0\leqslantx\leqslanty\leqslantc\)。\(x+y\notins\)且\(y-x\not......
  • 「杂题乱刷」CF74E
    链接妙妙构造题。很容易可以看出要构造出一种可以交换相邻两格数的操作。这部分可以写个爆搜找到规律。然后就AC了。代码也不长。点击查看代码/*Tips:你数组开小了吗?你MLE了吗?你觉得是贪心,是不是该想想dp?一个小时没调出来,是不是该考虑换题?*/#include<bits/stdc++......
  • CCF CSP模拟真题解答示例
    CCFCSP(CertifiedSoftwareProfessional)是中国计算机学会主办的软件能力认证考试,旨在评估参赛者在计算机科学和软件工程方面的基本知识和实践能力。请注意,以下解答仅作为示例,并非针对实际真题的准确答案。实际考试中的题目和答案可能会有所不同,因此建议参考官方发布的真题......
  • P9537 [YsOI2023] CF1764B
    洛谷传送门很棒的题。考察终态,可以发现最后输的人拥有的数的数量大概率是比赢家的数量少的。唯一的例外是等差数列,因为一个长为\(n\)的等差数列只能组成\(n-1\)个不同的差值。考虑若一开始先手就是一个公差为\(d\)的\(n+1\)项等差数列,后手是一个公差为\(d\)的\(......
  • CF19D(树套树)
    一道非常有意思的树套树。一眼一个空间\(n\logn\)时间\(n\log^{2}n\)的树套树,发现过不了。考虑优化。我们发现在中间线段树的地方可以不用平衡树存下来,只记最大值即可。然后我们对于每个横坐标开一颗fhq,然后分出\(\logn\)段区间,这些区间的最大值大于给定点的纵坐标。然后用......
  • AutoCF论文阅读笔记
    AutoCF论文阅读笔记Abstract开始介绍存在的问题​ 大多数对比方法的成功在很大程度上依赖于手动生成有效的基于启发式的数据增强。这并不适用于不同的数据集和下游推荐任务,这对数据增强具有自适应性,并且对噪声扰动具有鲁棒性很困难。介绍解决方案​ 为了弥补这一关键的差距,这......
  • openGauss/MogDB-3.0.0 dcf测试(非om安装)
    openGauss/MogDB-3.0.0dcf测试(非om安装)本文出处:https://www.modb.pro/db/402037IP地址...LERDER...FOLLOWER...FOLLOWER一、安装openGauss安装依赖包yuminstall-ybzip2bzip2-develcurllibaio创建用户、组并创建目录groupaddomma-g20001useraddomm......
  • CF1935F Andrey's Tree (树上乱搞)
    题意:有一颗n个节点的数,需要解决以下问题:先去掉节点v和与其相连的边;然后在剩余的图上加若干条边,在(x,y)之间连边的代价是∣x−y∣。求使得图连通的最小代价。计算删除顶点v后,每个顶点1≤v≤n至少需要花费多少金币才能使图形重新成为一棵树,以及需要添加哪些边。做法:首先可......
  • CF1942E Farm Game 题解
    我们先默认第一头牛是John的,另一种情况本质相同,最后答案乘上\(2\)就可以了。先说结论:我们将相邻两头牛配对,那么最终答案即满足至少一对牛间隔了奇数个空位的方案数。证明很简单,分\(3\)种情况讨论:每对牛间都间隔了奇数个空位。那么John开始时让所有牛往右行动,在Nhoj行......
  • CF1557D (dx)(dp技巧)
    比较有意思的一道题。看到将一个区间涂黑可以想到线段树。然后看到最少删除,想到最多保留。然后我一开始想的是贪心,对于每条线段找到前面最近的,然后对于每个高度取min即可。然后测了一下样例,寄了。会被这个hack掉对于这个,我们在做2时会把中间删了,然后做1的时候就寄了。这就说明......