Prime Independence(LightOJ - 1356,线性筛 + 最大独立集)

【NLP】第十章:位置编码Positional Encoding 前面讲RNN时一般都会有一个ht的输出,这个输出就是样本与样本之间的信息,而且RNN是时序循环的,所以RNN本身的结构,在物理上,就自带词的前后顺序信息的。比如词never,不管never本身的词向量是什么,只要你在序列中排第一个位置,你的位置向量就是[0,1,01],你排第三个位置,你的位置向量就是[0.9,-0,4,0.2,1.0]。也所以,你可以理解为:embedding后的词嵌入,PE按照每个样本在sequence中的位置,把embedding后的词嵌入给扭转后,才送入attention的。 阅读详情

一.题目链接

\quad Prime Independence

二.题目大意

\quad 给 n n n 个数, A A A 被称为 B B B 的素倍数当前仅当 A = B × P A = B \times P A=B×P( P P P 为素数)

\quad 定义最大独立集为最多能选出多少个数,使得选出的数两两之间不存在素倍数关系.

\quad 求最大独立集.

\quad 1 ≤ N ≤ 1 0 4 , 1 ≤ e ≤ 5 × 1 0 5 1 \leq N \leq 10^4, 1 \leq e \leq 5 \times 10^5 1≤N≤104,1≤e≤5×105 且 e e e 两两不同.

三.分析

\quad 图论、数论两开花ヾ(✿゚▽゚)ノ

四.代码实现

#include <bits/stdc++.h>
using namespace std;

namespace Graph
{
    const int M = (int)8e4;
    const int N = (int)1e5;
    const int inf = 0x3f3f3f3f;

    int n, m, S, T, cnt;
    int head[M + 5];

    struct node
    {
        int v, w, nx;
    }Edge[N * 2 + 5];

    int d[M + 5];
    int cur[M + 5];
    int q[M + 5], l, r;

    void init()
    {
        cnt = 0;
        for(int i = 0; i <= n; ++i)
        {
            head[i] = -1;
        }
    }

    void add(int u, int v, int w)
    {
        Edge[cnt].v = v;
        Edge[cnt].w = w;
        Edge[cnt].nx = head[u];
        head[u] = cnt++;
    }

    bool bfs()
    {
        l = 1, r = 0;
        for(int i = 1; i <= n; ++i) d[i] = -1;
        q[++r] = S, d[S] = 0, cur[S] = head[S];
        while(l <= r)
        {
            int u = q[l++];
            if(u == T) return 1;
            for(int i = head[u]; ~i; i = Edge[i].nx)
            {
                int v = Edge[i].v;
                if(d[v] == -1 && Edge[i].w)
                {
                    d[v] = d[u] + 1;
                    cur[v] = head[v];
                    q[++r] = v;
                }
            }
        }
        return 0;
    }

    int dfs(int u, int limit)
    {
        if(u == T) return limit;
        int flow = 0;
        for(int i = cur[u]; ~i && flow < limit; i = Edge[i].nx)
        {
            cur[u] = i;
            int v = Edge[i].v;
            if(d[v] == d[u] + 1 && Edge[i].w)
            {
                int t = dfs(v, min(Edge[i].w, limit - flow));
                if(!t) d[v] = -1;
                Edge[i].w -= t, Edge[i^1].w += t, flow += t;
            }
        }
        return flow;
    }

    int Dinic()
    {
        int r = 0, flow;
        while(bfs()) while(flow = dfs(S, inf)) r += flow;
        return r;
    }
};

namespace Math
{
    const int M = (int)5e5;

    bool is_prime[M + 5];
    int prime[M + 5], cnt;
    int v[M + 5];//最小质因子

    void init()
    {
        memset(is_prime, 1, sizeof(is_prime));
        is_prime[0] = is_prime[1] = 0;
        for(int i = 2; i <= M; ++i)
        {
            if(is_prime[i])
            {
                prime[++cnt] = i;
                v[i] = i;
            }
            for(int j = 1; j <= cnt && i * prime[j] <= M; ++j)
            {
                is_prime[i * prime[j]] = 0;
                v[i * prime[j]] = prime[j];
                if(i % prime[j] == 0)
                {
                    break;
                }
            }
        }
    }
};

typedef long long ll;

const int M = (int)4e4;
const int N = (int)4e4;
const int inf = 0x3f3f3f3f;
const ll mod = (ll)1e9 + 7;
const double eps = 1e-9;

int n, a[M + 5];
int n1, l[M + 5];
int n2, r[M + 5];
int fac[M + 5][10];
int len[M + 5];

int cal(int p)
{
    len[p] = 0;
    int x = a[p], c = 0;
    while(x > 1)
    {
        fac[p][++len[p]] = Math::v[x];
        x /= Math::v[x];
        ++c;
    }
    sort(fac[p] + 1, fac[p] + len[p] + 1);
    len[p] = unique(fac[p] + 1, fac[p] + len[p] + 1) - (fac[p] + 1);
    return c;
}

int bsl(int x)
{
    int L = 1, R = n1 + 1, mid;
    while(L < R)
    {
        mid = (L + R) >> 1;
        if(a[l[mid]] >= x) R = mid;
        else               L = mid + 1;
    }
    return R;
}

int bsr(int x)
{
    int L = 1, R = n2 + 1, mid;
    while(L < R)
    {
        mid = (L + R) >> 1;
        if(a[r[mid]] >= x) R = mid;
        else               L = mid + 1;
    }
    return R;
}

int main()
{
//    freopen("input.txt", "r", stdin);
//    freopen("output.txt", "w", stdout);
    Math::init();
    int T; scanf("%d", &T);
    for(int ca = 1; ca <= T; ++ca)
    {
        scanf("%d", &n); n1 = n2 = 0;
        for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
        sort(a + 1, a + n + 1);
        for(int i = 1, c; i <= n; ++i)
        {
            c = cal(i);
            if(c & 1) l[++n1] = i;
            else      r[++n2] = i;
        }
        Graph::n = n1 + n2 + 1; Graph::init();
        for(int i = 1, x, y, p; i <= n1; ++i)
        {
            Graph::add(0, i, 1), Graph::add(i, 0, 0);
            for(int j = 1; j <= len[l[i]]; ++j)
            {
                y = a[l[i]] / fac[l[i]][j];
                p = bsr(y);
                if(p <= n2 && a[r[p]] == y) Graph::add(i, n1 + p, 1), Graph::add(n1 + p, i, 0);
            }
        }
        for(int i = 1, x, y, p; i <= n2; ++i)
        {
            Graph::add(n1 + i, n1 + n2 + 1, 1), Graph::add(n1 + n2 + 1, n1 + i, 0);
            for(int j = 1; j <= len[r[i]]; ++j)
            {
                y = a[r[i]] / fac[r[i]][j];
                p = bsl(y);
                if(p <= n1 && a[l[p]] == y) Graph::add(p, n1 + i, 1), Graph::add(n1 + i, p, 0);
            }
        }
        Graph::S = 0, Graph::T = n1 + n2 + 1;
        printf("Case %d: %d\n", ca, n1 + n2 - Graph::Dinic());
    }
    return 0;
}
基于STM32、HAL库的ZMOD4510AI4R气体传感器驱动程序设计 ZMOD4510AI4R是Renesas公司推出的一款数字空气质量传感器,主要用于检测臭氧(O₃)和总挥发性有机化合物(TVOC)浓度。(status & 0x80)) // 检查数据就绪位。// 等待测量完成 (实际应用中应该使用非阻塞方式)// 转换为ppb (简化转换,实际应根据传感器文档校准)* @param hzmod: ZMOD4510句柄。* @param tvoc: TVOC浓度(ppb)* @param ozone: 臭氧浓度(ppb)* @param hi2c: I2C句柄。 阅读详情

相关推荐

弹簧管压力表设计报告

精密机械课程设计 弹簧管压力表设计报告 2020年5月1日 目 录 第一章 设计任务概述... 3 1.1 课程设计目的... 3 1.2 设计任务... 3 1.3 技术指标... 3 第二章 压力表概述... 4 2.1 机械式压力表的组成部分... 4 2.2 工作原理... 4 第三章 压力表设计... 5 3.1 弹簧管参数设计... 5 3.2 曲柄滑块机构设计... ...

weixin_42163746的博客 6452

Prime Independence(素数+奇偶分图+最大独立集)

题目链接 题意: 给出nnn个数,在这nnn个数组成的集合中,两两之间相除不出现素数。问这个集合的最大值 SOL: 最大独立集=nnn— 二分图的最大匹配值 对于两个数,如果他们的质因子数量是相等的,那么一定能在一个集合里面。所以,建立按照数字的奇偶性,建立二分图。用匈牙利算法求二分图的最大匹配值 Code: #include<bits/stdc++.h> using namespace std; const int N = 1e6 + 10; int n; int a[N], all[N],

killer的博客 362

告别瞎猜!用通达信L2资金流向函数,手把手教你识别主力动向(附实战公式)

本文详细解析通达信L2资金流向函数,手把手教你构建主力动向监控系统。通过分档数据解析、委买委卖攻防解读及实战公式应用,帮助投资者精准识别主力建仓与虚假拉升信号,提升股票交易决策效率。

weixin_26908317的博客 2092

Prime Independence(二分匹配+最大独立集+素数表)

题目链接 A set of integers is called prime independent if none of its member is a prime multiple of another member. An integer a is said to be a prime multiple of b if, a = b x k (where k is a prime [1]) ...

qq_44293044的博客 499

PPO(Proximal Policy Optimization)算法原理及实现,详解近端策略优化

接着上面的讲,PG方法一个很大的缺点就是参数更新慢,因为我们每更新一次参数都需要进行重新的采样,这其实是中on-policy的策略,即我们想要训练的agent和与环境进行交互的agent是同一个agent;与之对应的就是off-policy的策略,即想要训练的agent和与环境进行交互的agent不是同一个agent,简单来说,就是拿别人的经验来训练自己。举个下棋的例子,如果你是通过自己下棋来不断提升自己的棋艺,那么就是on-policy的,如果是通过看别人下棋来提升自己,那么就是off-policy的。

weixin_41106546的博客 9万+

给爸妈买的红米12C想装个老年桌面?先别急,解锁BL和Root前你得知道这些

本文详细解析了红米12C解锁BL和Root的利弊,为想要为长辈简化手机操作的用户提供全面指南。文章对比了BL解锁与Root的技术差异,推荐优先使用MIUI内置的极简模式等官方功能,并评估了Root的实际必要性。若必须Root,提供了安全操作流程和长期维护建议,帮助用户做出明智选择。

weixin_30265103的博客 318

Prime Independence质数

将质数利用二分图求解最大独立集 A set of integers is called prime independent if none of its member is a prime multiple of another member. An integer a is said to be a prime multiple of b if, a = b x k (where k is a prime [1]) So, 6 is a prime multiple of 2, but 8 is not.

qq_52358084的博客 597

YOLO11实战 第056期-基于yolo11的无人机航拍铁路障碍物检测实战-数据集&源码&系统

召回率曲线帮助评估模型在目标检测任务中,检测到真正目标的能力。通过这条曲线,可以评估模型在目标检测任务中的整体性能,并找到合适的置信度阈值,以在精确率和召回率之间做出最佳平衡。PR曲线越接近右上角,模型性能越好,曲线下方的面积越大,说明模型在不同置信度下的。这条曲线显示了随着置信度的增加,每个类别的召回率先变化较小,然后在某个点之后迅速下降。通过这条曲线,可以选择合适的置信度阈值,以优化模型的检测结果,平衡精确率和召回率。曲线都显示了随着召回率的增加,精确度略有下降的趋势,但整体上精确度保持在很高的水平。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 158

Prime Independence(质因子分解+二分图最大独立集)

Prime Independence Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1356 Description A set of integers is called prime independen

AI蜗牛之家 1611

2、TrustZone(内含链接)——长期学习内容

ARM系列学习路径整理,希望对大家有用。

HoneyIC的博客 232

高德地图API如何使用

通过以上步骤,您可以成功接入并使用高德地图API来为您的应用添加丰富的地图功能。

QQ_778132974的博客 4786

【最大独立集】Prime Independence

Prime Independence Description A set of integers is called prime independent if none of its member is a prime multiple of another member. An integer ais said to be a prime multiple of b if

willinglive 822

SpringBoot4+Java21前后端分离架构项目脚手架

本文介绍了基于SpringBoot 4和Java 21的前后端分离项目架构方案。主要内容包括:1)采用Spring Security 7实现JWT无状态认证和RBAC权限控制;2)后端使用MyBatis-Plus简化数据库操作,前端采用Vue3+Pinia组合;3)详细的项目结构设计,推荐按业务模块分包;4)核心依赖配置和架构设计图,涵盖认证授权流程。该方案结合最新技术栈,提供了生产级的全链路实现,特别适合需要快速构建现代化Web应用的项目。

Hello, New World! 422

LightOJ 1356 Prime Independence(素数筛选法+最大独立集)(Hopcroft-Carp算法)

Prime Independence 解题思路: 题目大意: 定义素数独立集为一个整数集(不一定全是素数),该整数集合中的任意两个a和b,如果存在a=b*prime的情况(prime为素数),则视为 该情况为"冲突"。独立集即不存在冲突的集合。 算法思想: 首先看到独立集就应该想到二分图,既然是二分图,每个数为一个结点,哪些是U哪些是V呢?自然而然地每个数num进行素因数分 解,

piaocoder 1704

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【刷题记录】 LightOJ-1356 Prime Independence 数论+最大独立集

给出n个数字的集合,让你求一个子集,使得自己内任意两个数之间不是素数倍数关系,求这样的最大的子集大小。

这里是阿安的博客 689

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Prime Independence (数论)

Prime Independence 题目链接 大致题意: 对于给定集合,求解最大的子集合,使得集合内两两之商不为质数 解题思路: 求最大独立集,考虑如何建二分图 每个数要么是奇数个素数乘级,要么是偶数个素数乘级,将奇数个素数乘级与偶数个素数乘级连线建图 匈牙利算法有些优化,不然会被T AC代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 10; int n; v

qq_49494204的博客 433

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LightOJ1356 Prime Independence(数论+匹配)

LightOJ1356题目给出n个数, 现在要选出一个”素数独立集合”, 如果一个数是另外一个数的素数倍, 这两个不能同时选入,问这个集合的最大大小是多少?思路http://tokers.cn/2015/07/11/lightoj1356-prime-independence%E6%95%B0%E8%AE%BA%E5%8C%B9%E9%85%8D/ 知道了Hopcroft-Karp算法,用二分图来

天道酬勤 585

Lightoj-1356 Prime Independence(质因子分解&&二分图最大独立集)

题目: http://lightoj.com/volume_showproblem.php?problem=1356 题意: 找出一个集合中的最大独立集,任意两数字之间不能是素数倍数的关系。 思路: 最大独立集,必然是二分图。 最大数字50w,考虑对每个数质因子分解,然后枚举所有除去一个质因子后的数是否存在,存在则建边,考虑到能这样建边的数一定是质因子个数奇偶不同,所以相当于按

MyWorld 1482

B - Prime Independence (二分图最大匹配+因子分解)

B - Prime Independence 1356 - Prime Independence   PDF (English)StatisticsForumTime Limit: 3 second(s)Memory Limit: 32 MBA set of integers is called prime independent if none of its member is a prime ...

howell 641

Prime Independence

题意: 对于给定集合,求解最大的子集合,使得集合内两两之商不为质数。 解法: 考虑对于每一个数字分解质因数可以得到 $O(nloglogNUM)$ 条两个数字不可以出现在同一集合的信息。 同时发现一条代表冲突的边必然是联结一个由奇数个质数连乘构成的数字和一个由偶数个质数连乘构成的数字。 是一个二分图,考虑最大独立集即可。 #include <bits/stdc...

weixin_30496431的博客 274

LightOJ-1356 Prime Independence

题意: 找出一些数字的最大质独立集,就是集合能的所有数互相之间不会出现 a[i]==t*a[j] (t是质数) 的情况。 思路: 首先想最大独立集对于一般图是NP问题,通常只有求二分图最大独立集,然后就是如何把这些数字分为二分图。 能够想到如果一个数字等于另一个数字乘以一个质数,那么这两个数字的质因子分解应该只有这一个质数的差别。也就是只会多一个质数,数字上限只有500000,完全可以

MyWorld 1521

lightoj 1356 - Prime Independence 【质因子分解 奇偶构图 + HK优化】

1356 - Prime Independence PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 32 MB A set of integers is called prime independent if none of

世界很大 1552

二分图HK算法[数论+二分图最大独立集]:Lightoj1356

Prime Independence LightOJ - 1356 题目大意:给你n个数,你从这个集合中挑选出若干个数,使得这个集合的数里面两两之间a/b!=k[k是质数并且a>b] 解题思路:如果a/b是一个质数那么a的质因数分解之后质数的总共个数如果是奇数那么b分解质因数后质因子个数就是偶数个,反之亦然。那么我们就可以将质因子个数为奇数和偶数的两个点 ...

weixin_45630722的博客 302

LightOJ 1356 Prime Independence (素数 二分图)

Prime Independence Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1356 Description A set of integers is called prime independ

To be what you what to be! 2469

Light OJ 1356 Prime Independence 最大独立集+素数筛选

题目来源:Light OJ 1356 Prime Independence 题意:给你n个数 选出最多的数构成一个集合使得任何2个数不是另外一个数的质数倍 x!=k*y  思路:矛盾的2个数连边 并且所有数分成质因子数为奇数和偶数两部分 以质因子奇偶不同构建二分图 同奇 同偶的数一定不是另外一个数的质数倍 判断矛盾 首先对每个数因子分解 例如x 有a1个p1质因子 a2个p2质因子...an

嗯。 1754

LightOJ - 1259(素数筛)

链接:https://vjudge.net/contest/288256#problem/F #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; const int sz = 1e7+1; int prime...

dukig的博客 194
上一篇: Sub Matrix Sum(UCF Local Programming Contest 2019(Practice),二分单调栈)
下一篇: 牛客练习赛68 A B C D
The___Flash
博客等级 码龄8年 79粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值