NOIP2023模拟1联测22 黑暗料理

news2024/10/1 18:56:53

NOIP2023模拟1联测22 黑暗料理

231023_Z3JfkFjjND.png (667×922) (hszxoj.com)

题目大意

自己看

思路

  • 两个数相加能够产生质数的情况就是:1+1 或者 偶数+质数

    那么 1 1 1 不能保留超过一个

  • 建一个图,原点连向所有奇数点,所有偶数点连向汇点,奇数点和偶数点的和为奇数的就相连

    那么答案就是隔断原、汇两点的最小割。

  • 判断质数用Miller_Rabin

code

#include <bits/stdc++.h>
#define fu(x , y , z) for(int x = y ; x <= z ; x ++)
#define fd(x , y , z) for(int x = y ; x >= z ; x --)
#define LL long long 
using namespace std;
const int N = 755;
int n , a[N * N * 2] , p[5] = {2 , 3 , 5 , 7 , 11} , cnt , ans , ans1 , hd[N * N * 2] , pos1[N] , pos2[N * N * 2] , cx1 , cx2 , cx[N] , cy[N] , vis[N];
struct E {
    int to , nt;
} e[N * N * 4];
void add (int x , int y) { e[++cnt].to = y , e[cnt].nt = hd[x] , hd[x] = cnt; }
bool cmp (int x , int y) { return a[x] > a[y]; }
LL ksm (LL x , LL y , LL mod) {
    if (!y) return 1;
    LL z = ksm (x , y / 2 , mod);
    z = z * z % mod;
    if (y & 1) z = z * x % mod;
    return z;
}
bool ck (LL x , LL y) {
    LL mod = x - 1 , xx;
    if (ksm (y , mod , x) != 1)
        return 0;
    do {
        xx = ksm (y , mod / 2 , x);
        if (xx != 1 && xx != x - 1)
            return 0;
        mod >>= 1;
    } while (mod % 2 == 0 && xx == 1);
    return 1;
}
bool mb (LL x) {
    if (x == 1)
        return 0;
    if (x == 2 || x == 3 || x == 5 || x == 7 || x == 11)
        return 1;
    fu (i , 0 , 4) {
        if (!ck (x , p[i])) 
            return 0;
    }
    return 1;
}
bool find (int x) {
    int y;
    for (int i = hd[x] ; i ; i = e[i].nt) {
        y = e[i].to;
        if (vis[y]) continue;
        vis[y] = 1;
        if (!cy[y] || find (cy[y])) {
            cx[x] = y , cy[y] = x;
            return 1;
        }
    }
    return 0;
}
int main () {
    freopen ("cooking.in" , "r" , stdin);
    freopen ("cooking.out" , "w" , stdout);
    int T , flg;
    scanf ("%d" , &T);
    while (T --) {
        scanf ("%d" , &n);
        fu (i , 1 , n)
            scanf ("%d" , &a[i]);
        cnt = ans1 = ans = flg = cx1 = cx2 = 0;
        fu (i , 1 , n * n * 2) hd[i] = cx[i] = cy[i] = 0;
        fu (i , 1 , n) {
            if (a[i] & 1) {
                if (a[i] == 1) {
                    if (!flg) flg = 1;
                    else {
                        ans1 ++;
                        continue;
                    }
                }
                pos1[++cx1] = i;
            }         
            else
                pos2[++cx2] = i;
        }
        fu (i , 1 , cx1) {
            fu (j , 1 , cx2) {
                if (a[pos1[i]] == 51 && a[pos2[j]] == 38) {
                    ans ++;
                    ans --;
                }
                if (mb (a[pos1[i]] + a[pos2[j]])) {
                    add (i , cx1 + j);
                    // cout << a[pos1[i]] << " " << a[pos2[j]] << "\n";
                }
            }
        }
        // exit (0);
        fu (i , 1 , cx1) {
            if (cx[i]) continue;
            fu (j , 1 , cx2) vis[j + cx1] = 0;
            ans += find (i);
        }
        // cout << ans;/
        printf ("%d\n" , n - ans1 - ans);
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1129012.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式事务 学习

分布式事务 关系型数据库事务&#xff08;本地事务&#xff09; 原子性&#xff1a;构成事务的所有操作&#xff0c;要么都执行完成&#xff0c;要么都不执行/一致性&#xff1a;在事务执行前后&#xff0c;数据库的一致性约束没有被破坏。隔离性&#xff1a;并发的两个事务的…

『第一章』命运的齿轮开始转动:雨燕(Swift)诞生!

在本篇博文中,您将学到如下内容: 1. 破茧成“燕”2. 持续进化&#xff01;3. Swift 5.0&#xff1a;ABI 稳定性4. Swift 5.1&#xff1a;模块稳定性和库进化5. Swift 5.9 来了6. 登高望远&#xff1a;Swift 6.0总结 雨燕翻新幕&#xff0c;风鹃绕旧枝 金鹊徒为滞&#xff0c;雨…

程序员的新去处?国内新能源公司大汇总!

近几年来&#xff0c;传统互联网企业哀鸿遍野&#xff0c;而新能源车企却在悄然崛起&#xff1a;HC逐年增加&#xff0c;薪资逐渐起飞&#xff0c;年终分红也让人眼红…… 聪明的程序员们已经把目光瞄准了新时代新能源车企&#xff0c;今天就带大家横向对比一下国内比较火热的…

2.7.C++项目:网络版五子棋对战之session模块的设计

文章目录 零、前置一、意义二、功能三、管理四、框架五、完整代码 零、前置 在WEB开发中&#xff0c;HTTP协议是⼀种无状态短链接的协议&#xff0c;这就导致⼀个客户端连接到服务器上之后&#xff0c;服务器不知道当前的连接对应的是哪个用户&#xff0c;也不知道客户端是否登…

24李永乐模拟6套卷中的一道定积分定义+真题改编题

大概率是武忠祥老师出的一道题&#xff0c;同时考察了数形结合&#xff0c;定积分换元&#xff0c;无穷级数表示&#xff0c;广义积分中值定理&#xff0c;定积分定义的一道真题改编好题。 第二问用第一问结论&#xff0c;区间再现一步秒杀&#xff0c;颇有真题风范。

找不到msvcp100.dll解决教程

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp100.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题&#xff0c;本文将介绍四个修复msvcp100.dll丢失的方法&#xff0c;帮助读者快速恢复计算机的正常运…

【c++】运算符重载实例

重载自增自减运算符 Intger num(2); num; num;对自增运算符的重载要区分前置和后置。在重载之前需要思考一个问题&#xff0c;num是返回一个临时变量还是num对象的本体。 为了解决这个问题可以考虑实现一个Inc_()函数和_Inc()函数分别模仿后置和前置的行为 Integer Inc_(){i…

Calibre拾遗:FDI (Foreign Database Interface)系统简介

Calibre是强大的GDS处理工具&#xff0c;包括查看&#xff0c;验证&#xff0c;分析等操作&#xff0c;操作由浅入深&#xff0c;除过手动编辑GDS的不是很灵活外&#xff0c;其他各种命令和操作策略&#xff0c;都是远&#xff08;遥&#xff09;远&#xff08;遥&#xff09;走…

使用create-vue创建项目

认识create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了vite&#xff08;下一代构建工具&#xff09;&#xff0c;为开发提供极速响应。 使用create-vue创建项目 1.前提环境条件 已安装16.0或更高版本的Node.js node -v 2.创建一个Vue应用 npm init…

Monocular arbitrary moving object discovery and segmentation 论文阅读

基本信息 题目&#xff1a;Monocular Arbitrary Moving Object Discovery and Segmentation 作者&#xff1a; 来源&#xff1a;BMVC 时间&#xff1a;2021 代码地址&#xff1a;https://github.com/michalneoral/Raptor Abstract 我们提出了一种发现和分割场景中独立移动的…

[算法训练营] 回溯算法专题(一)

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

Linux系列讲解 —— VIM配置与美化

目录 1. Vim基本配置1.1 配置文件1.2 基本配置 2. 插件管理器Vundle2.1 下载Vundle2.2 在vimrc中添加Vundle的配置 3. Vundle的使用3.1 安装插件3.2 卸载插件 1. Vim基本配置 1.1 配置文件 vim的配置文件有两处&#xff0c;请根据实际情况选择修改哪个。 (1) 全局配置文件&am…

电子元器件管理系统 JAVA语言开发

目录 一、系统介绍 二、系统下载 三、系统截图 一、系统介绍 基于VueSpringBootMySQL的电子元器件管理系统包含元器件单位模块、元器件仓库模块、元器供应商模块、元器件品类模块、元器件明细模块、元器件采购模块、元器件采购审核模块、元器件领用模块、学生元器件申请模块…

前端AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(二)

阳光总在风雨后&#xff0c;请相信有彩虹。 案例 - 图书管理 bootstrap弹框 需求&#xff0c;点击添加按钮&#xff0c;没有离开当前页面&#xff0c;在当前页面弹出弹框&#xff08;弹窗&#xff09; 先学着实现一个简单的弹框&#xff0c;如下图右下角 bootstrap有两种方式…

openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户

文章目录 openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户108.1 创建、修改和删除用户108.2 私有用户108.3 永久用户108.4 用户认证优先规则 openGauss学习笔记-108 openGauss 数据库管理-管理用户及权限-用户 使用CREATE USER和ALTER USER可以创建和管理数据…

解决虚拟机联网问题

虚拟机开机后发现右上角缺少联网标志(下面有正常联网标志)&#xff0c;这样就是连不上网的 不信你可以打开Ubuntu里面的浏览器或ping www.baidu.com 1.编辑虚拟机设置-->网络适配器-->如图所示 2.选择编辑-->虚拟网络编辑器 3.更改设置 4此处可以选择还原默认设置&am…

【JAVA学习笔记】42 - 内部类(难点,重点)

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter10/src/com/yinhai/innerclass_ 一、基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成…

【蓝桥每日一题]-动态规划 (保姆级教程 篇12)#照相排列

这次是动态规划最后一期了&#xff0c;感谢大家一直以来的观看&#xff0c;以后就进入新的篇章了 目录 题目&#xff1a;照相排列 思路&#xff1a; 题目&#xff1a;照相排列 思路&#xff1a; 首先记录状态f[a][b][c][d][e]表示每排如此人数下对应的方案数&#xff0c;然…

java中按行读取文件内容

java中按行来读取文件内容&#xff0c;一般对文件也是又要求的&#xff0c;比如文件编码utf-8&#xff0c;内容是按行可读&#xff0c;而不是一堆字节码。这类文件&#xff0c;我们按行读取&#xff0c;主要是方便快速查看内容&#xff0c;并且用这些内容来作别的用途&#xff…

FileUpload控件上传文件时出现 不支持给定路径的格式.的解决方法

正常代码&#xff0c;部署到server 2012时&#xff0c;在上传音频mp3文件时&#xff0c;显示错误“不支持给定路径的格式”&#xff0c;上传控件使用FileUpload控件&#xff1a; 因为程序之前是正常的&#xff0c;因此应该不是程序的问题。 上传时&#xff0c;发现在选择文件时…