zoukankan      html  css  js  c++  java
  • [CF1497E1] Square-free division (easy version)

    [CF1497E1] Square-free division (easy version) - hash

    Description

    给出一串长为 (n) 的序列 (a_1,a_2,a_3...a_n)。把它分成尽量少的块使每一块中任意两数的乘积不是一个完全平方数。输出最少的块数。

    Solution

    matter 的只有每个因子出现次数的奇偶性

    因此想到对每个因子出现次数奇偶性生成 hash(实际上把出现奇数次的因子乘起来就可以了)

    然后贪心去做,每次做到集合中有 hashcode 和新元素相同,就开新段

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    const int N = 1e7 + 5;
    bool isprime[N];
    vector<int> primes;
    
    void prepare()
    {
        memset(isprime, 1, sizeof isprime);
        isprime[1] = 0;
        for (int i = 2; i < N; i++)
        {
            if (isprime[i])
            {
                primes.push_back(i);
                for (int j = i * i; j < N; j += i)
                    isprime[j] = 0;
            }
        }
    }
    
    int gethash(int x)
    {
        map<int, int> mp;
        for (int i = 2; i * i <= x; i++)
        {
            while (x % i == 0)
            {
                x /= i;
                mp[i]++;
            }
        }
        if (x > 1)
            mp[x]++;
        int ans = 1;
        for (auto [x, y] : mp)
        {
            if (y & 1)
                ans *= x;
        }
        return ans;
    }
    
    void solve()
    {
        int n, k;
        cin >> n >> k;
        vector<int> a(n + 2);
        for (int i = 1; i <= n; i++)
            cin >> a[i];
        int ans = 1;
        set<int> s;
        for (int i = 1; i <= n; i++)
        {
            int hs = gethash(a[i]);
            if (s.find(hs) != s.end())
            {
                ++ans;
                s.clear();
            }
            s.insert(hs);
        }
        cout << ans << endl;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
        int t;
        cin >> t;
        while (t--)
        {
            solve();
        }
    }
    
  • 相关阅读:
    社交类app开发( 仿陌陌 客户端+服务器端)
    iPhone的xib与iPad的xib相互转换
    SVN的搭建
    使用企业证书给iOS应用重签
    [破解版]Unity3d引擎最新稳定版本4.5.5下载(官方最新稳定版本)
    iphone开发资源汇总
    iOS绘图教程
    iOS静态库相关-封装lib
    iOS内存管理策略和实践
    前台中文乱码
  • 原文地址:https://www.cnblogs.com/mollnn/p/14580434.html
Copyright © 2011-2022 走看看