HJ28 素数伴侣(二分图最大匹配)

2023-05-16

https://www.nowcoder.com/practice/b9eae162e02f4f928eac37d7699b352e?tpId=37&&tqId=21251&rp=1&ru=/ta/huawei&qru=/ta/huawei/question-ranking

描述

题目描述
若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。

输入:

有一个正偶数N(N≤100),表示待挑选的自然数的个数。后面给出具体的数字,范围为[2,30000]。

输出:

输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。

输入描述:

输入说明
1 输入一个正偶数n
2 输入n个整数
注意:数据可能有多组

输出描述:

求得的“最佳方案”组成“素数伴侣”的对数。

示例1

输入:

4
2 5 6 13
2
3 6

复制输出:

2
0

第一次写匈牙利算法,就是遍历二分图A集合的每一个节点,与B的匹配情况,如B某个点已经匹配,再往下搜。

 

参考:https://blog.csdn.net/qq_38956769/article/details/80238896

https://blog.csdn.net/qq_46105170/article/details/113830924

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String args[]) {new Main().run();}

    FastReader in = new FastReader();
    PrintWriter out = new PrintWriter(System.out);
    void run(){
        rec=new boolean[60002];
        for(int i=2;i*i<60002;i++){
            if(!rec[i]){
                for(int j=i;j*i<60002;j++){
                    rec[i*j]=true;
                }
            }
        }
        while(in.hasNext())
            work();
        out.flush();
    }
    long mod=998244353;
    long gcd(long a,long b) {
        return a==0?b:gcd(b%a,a);
    }
    final long inf=Long.MAX_VALUE/3;
    ArrayList<Integer>[] graph;
    int n;
    int[] match;
    boolean[] rec;
    int[] A;
    int[] color;
    void work(){
        this.n=ni();
        match=new int[n];
        Arrays.fill(match,-1);
        graph=(ArrayList<Integer>[])new ArrayList[n];
        for(int i=0;i<n;i++){
            graph[i]=new ArrayList<>();
        }
        A=nia(n);
        color=new int[n];
        for(int i=0;i<n;i++){
            if(A[i]%2==1)color[i]=1;
        }
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                if(!rec[A[i]+A[j]]){
                    graph[i].add(j);
                    graph[j].add(i);
                }
            }
        }
        int ret=0;
        for(int i=0;i<n;i++){
            if(color[i]==0&&dfs(i,new boolean[n])){
                ret++;
            }
        }
        out.println(ret);
    }

    private boolean dfs(int node, boolean[] vis) {
        if(vis[node]){
            return false;
        }
        vis[node]=true;
        for(int nn:graph[node]){
            if(match[nn]==-1||dfs(match[nn],vis)){
                match[nn]=node;
                return true;
            }
        }
        return false;
    }


    //input
    @SuppressWarnings("unused")
    private ArrayList<Integer>[] ng(int n, int m) {
        ArrayList<Integer>[] graph=(ArrayList<Integer>[])new ArrayList[n];
        for(int i=0;i<n;i++) {
            graph[i]=new ArrayList<>();
        }
        for(int i=1;i<=m;i++) {
            int s=in.nextInt()-1,e=in.nextInt()-1;
            graph[s].add(e);
            graph[e].add(s);
        }
        return graph;
    }

    private ArrayList<long[]>[] ngw(int n, int m) {
        ArrayList<long[]>[] graph=(ArrayList<long[]>[])new ArrayList[n];
        for(int i=0;i<n;i++) {
            graph[i]=new ArrayList<>();
        }
        for(int i=1;i<=m;i++) {
            long s=in.nextLong()-1,e=in.nextLong()-1,w=in.nextLong();
            graph[(int)s].add(new long[] {e,w});
            graph[(int)e].add(new long[] {s,w});
        }
        return graph;
    }

    private int ni() {
        return in.nextInt();
    }

    private long nl() {
        return in.nextLong();
    }
    private double nd() {
        return in.nextDouble();
    }
    private String ns() {
        return in.next();
    }

    private long[] na(int n) {
        long[] A=new long[n];
        for(int i=0;i<n;i++) {
            A[i]=in.nextLong();
        }
        return A;
    }

    private int[] nia(int n) {
        int[] A=new int[n];
        for(int i=0;i<n;i++) {
            A[i]=in.nextInt();
        }
        return A;
    }
}

class FastReader
{
    BufferedReader br;
    StringTokenizer st;

    public FastReader()
    {
        br=new BufferedReader(new InputStreamReader(System.in));
    }

    public boolean hasNext(){
        try{
            String s=br.readLine();
            if(s==null){
                return  false;
            }
            st=new StringTokenizer(s);
        }catch(IOException e){
            e.printStackTrace();
        }
        return true;
    }

    public String next()
    {
        while(st==null || !st.hasMoreElements())//回车,空行情况
        {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    public int nextInt()
    {
        return Integer.parseInt(next());
    }

    public long nextLong()
    {
        return Long.parseLong(next());
    }

    public double nextDouble()
    {
        return Double.parseDouble(next());
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HJ28 素数伴侣(二分图最大匹配) 的相关文章

随机推荐

  • html中各种hr样式

    第一种 lt hr style 61 34 height 2px border none border top 2px dotted 185598 34 gt height 2px 是hr的高度 border none 是没有边框 bord
  • Python爬虫系列(三)多线程爬取斗图网站(皮皮虾,我们上车)

    斗图我不怕 最近看了Python多线程的相关内容 xff0c 并且前几天观看了腾讯课堂潭州学院上面的关于斗图网爬取的公开课 xff0c 课程内容大致是利用Python多线程爬取斗图 xff08 多页 xff09 xff0c 并将图片保存到本
  • Python爬虫系列(五)360图库美女图片下载

    这几天终于忙完毕设和学校的事情 xff0c 终于有时间来写Python了 xff08 xffe3 xffe3 xff09 前些天在群里看到有人讨论这个360美女图库 的爬取 自己今天也尝试下 xff08 蛮简单 xff09 因为这个网站是下
  • Python 过滤字母和数字

    实例1 crazystring 61 39 dade142 0142f ad 39 只保留数字 new crazy 61 filter str isdigit crazystring print 39 39 join list new cr
  • Android高德地图设置Marker旋转角度.

    1 代码 marker setRotateAngle 360 float dir 2 注意 高德地图设置旋转角度是以正北为起点 逆时针旋转的 是逆时针的 所以转化成顺时针效果要用360做差
  • Python人工智能之图片识别,Python3一行代码实现图片文字识别

    自学Python3第5天 xff0c 今天突发奇想 xff0c 想用Python识别图片里的文字 没想到Python实现图片文字识别这么简单 xff0c 只需要一行代码就能搞定 作者微信 xff1a 2501902696 from PIL
  • Contrastive Loss(对比损失)

    Contrastive Loss 在传统的siamese network中一般使用Contrastive Loss作为损失函数 xff0c 这种损失函数可以有效的处理孪生神经网络中的paired data的关系 siamese networ
  • CC00021.CloudOpenStack——|OpenStack&组件.V08|——|OpenStack-network|Network创建租户网络.V04|

    一 配置租户网络 在controller节点执行后面的命令 配置租户网络 在controller节点执行后面的命令 创建租户网络 创建租户网络的子网 在租户网络创建一个路由器 xff0c 用来连接外部我那个和租户网 二 创建一个租户网络 执
  • c语言用epoll实现ftp服务器

    epoll简介 xff1a https www cnblogs com Anker archive 2013 08 17 3263780 html 以下是我根据上面这篇epoll例子改写的实现ftp服务器代码 xff1a server c
  • 来自一位女程序员8年的总结。

    8年了 xff0c 从来没有像今天说总结这一下 我认为这是我的一个进步吧 8年 xff0c 包括上北大青鸟培训的2年 xff0c 然后6年的工作 xff0c 换了很多家公司 有个人原因也有公司原因 先说一下培训的那2年 xff0c 我们学习
  • PX4无人机仿真_Gazebo(1)

    搭建Gazebo仿真环境 看了网上很多教程发现教程太分散了 xff0c 各个PC在配置环境前的情况不一样导致有很多bug也不一样 于是小编下定决心整理一次 xff01 若我的bug恰好也是你的bug xff0c 小编不胜荣幸 xff01 首
  • 敏捷开发快速入门(四):Scrum开发流程

    文章目录 Scrum概述Scrum中三个角色Product Owner xff08 产品负责人 xff09 职责Scrum Master xff08 教练 xff09 职责Scrum Team xff08 开发团队 xff09 职责 Scr
  • ubuntu20安装

    文章目录 前言一 ubuntu20 安装二 手动安装和分区1 必须选择自己创建2 第一种分区方式3 第二种分区方式 三 VmTools安装1 遇到不能粘贴的问题2 不能共享的问题 四 环境安装1 更新源2 install必须环境3 谷歌浏览
  • git出现Permission denied的解决办法

    git出现Permission denied的解决办法 问题描述 1 xff0c 在 master 分支的基础下创建了一个新的分支 log xff0c 并且在新的分支上 添加了两个新的文件 file1 和 file2 xff0c 然后对修改
  • 内环功控和外环功控的区别

    首先搞清楚内环功控和外环功控的区别 xff1a 内环功控 xff1a 根据接收到的SIR值来调整发射功率 xff0c 如果接收到的SIR值 gt 目标SIR值 xff0c 则通知对等层将空口上的发射功率下调一个步长 xff0c 如果相反 x
  • maven常用总结

    maven常用总结 1 常用的maven命令2 坐标定义3 pom基本配置 1 常用的maven命令 常用 的maven命令包括 xff1a compile xff1a 编译 clean xff1a 清理 test xff1a 测试 pac
  • docker之apt-get update解决方法

    问题 使用docker生成容器后 xff0c 进入容器后 xff0c 提供的指令很少 xff0c 使用apt get组件进行扩展 xff0c 但是会遇到apt get update有时会失败的问题 参考 创建好docker后不能apt ge
  • Nvidia xavier NX通过flash.sh烧录linux系统

    1 环境搭建 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统 安装的 Ubuntu 系统版本为 18 04 LTS xff0c 自行安装即可 xff0c 参考官方文档 xff1a Flashing Sup
  • ubuntu安装ssh以及开启root用户ssh登录

    一般Ubuntu都会默认安装openssh client 但是没有安装openssh server 一 安装ssh sudo apt install openssh client sudo apt install openssh serve
  • HJ28 素数伴侣(二分图最大匹配)

    https www nowcoder com practice b9eae162e02f4f928eac37d7699b352e tpId 61 37 amp amp tqId 61 21251 amp rp 61 1 amp ru 61