首页 > 其他分享 >[AcWing 1118] 分成互质组

[AcWing 1118] 分成互质组

时间:2022-08-17 18:03:16浏览次数:62  
标签:int back len dfs ans 1118 互质 AcWing

image

DFS


点击查看代码
#include<bits/stdc++.h>

using namespace std;

typedef long long LL;

const int N = 50 + 10;

int n;
int a[N];
int len, ans = 1e9;
vector<int> g[N];

// 判断数字y能否放到第k组
bool inline check(int k, int y)
{
    for (auto& x : g[k])
        if (__gcd(x, y) > 1)
            return false;
    return true;
}

void dfs(int u)
{
    // 全部分完组或组的个数已经超过ans
    if (u == n || len >= ans) {
        ans = min(ans, len);
        return;
    }
    // 放到前面的组中
    for (int i = 0; i < len; i ++)
        if (check(i, a[u])) {
            g[i].push_back(a[u]);
            dfs(u + 1);
            g[i].pop_back();
        }
    // 放到新的一组
    g[len ++].push_back(a[u]);
    dfs(u + 1);
    g[-- len].pop_back();
}

void solve()
{
    cin >> n;
    for (int i = 0; i < n; i ++)
        cin >> a[i];
    dfs(0);
    cout << ans << endl;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    solve();

    return 0;
}

  1. 从第 \(0\) 号物品开始 \(DFS\) 搜索,分两种情况:
    ① 放到已有的组中,需要保证互质
    ② 新开一组,组数会加一

标签:int,back,len,dfs,ans,1118,互质,AcWing
From: https://www.cnblogs.com/wKingYu/p/16596179.html

相关文章

  • [AcWing 1117] 单词接龙
    DFS点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=50+10;intn;stringword[N];intg[N][N];//g[i][......
  • [AcWing 258] 石头剪刀布
    带扩展域的并查集点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e6+10;intn,m;intp[N];structN......
  • [AcWing 145] 超市
    贪心+小根堆点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constintN=1e6+10;intn;......
  • AcWing周赛62-64 中比较有意思的小题题解
    AcWing周赛62-64(选讲)感觉比较思维4502.集合操作https://www.acwing.com/problem/content/4505/根据题意,肯定要使得所取的最大值最大,平均值最小。又因为每次放进来的的......
  • [AcWing 4507] 子数组异或和
    异或的性质点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e6+10;intn;inta[N];voidsolve(){......
  • AcWing3293.统计单词
    原题链接string.back()、string.pop_back()妙用#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;intmain(){stringstr;......
  • Acwing 第 64 场周赛 C 4507. 子数组异或和(异或+前缀和)
    https://www.acwing.com/problem/content/4510/给定一个长度为n的整数数组a1,a2,…,an。请你统计一共有多少个数组a的非空连续子数组能够同时满足以下所有条件:该......
  • AcWing3391.今年第几天?(日期题)
    原题链接https://www.acwing.com/problem/content/3394/日期题思路满足下面条件之一的是闰年:年份是4的整数倍,而且不是100的整数倍;年份是400的整数倍。处理输......
  • acwing 1228. 油漆面积 扫描线
     X星球的一批考古机器人正在一片废墟上考古。该区域的地面坚硬如石、平整如镜。管理人员为方便,建立了标准的直角坐标系。每个机器人都各有特长、身怀绝技。它们感兴......