[ABC263G] Erasing Prime Pairs

news/2024/11/14 19:24:49/文章来源:https://www.cnblogs.com/Yuan-Jiawei/p/18422925

题目

image

思路

看到配对,想到网络流。

考虑如果一个点是奇数,那么将源点与其连接,如果是偶数,那么将汇点与其连接,如果一对奇数和偶数的和是质数,那么将它们两对应的点相连。其中,我们要对 1 特殊处理,因为 \(1 + 1 = 2\)\(2\) 是偶数且是质数,所以考虑费用流,尽可能多地保留 \(1\),对所有不是 \(1\) 的奇数,连边不要费用,对于 \(1\),费用为 \(1\)。最后答案为 \(maxflow + \left\lfloor\dfrac{mincost}{2}\right\rfloor\)

代码

#include <bits/stdc++.h>#define int long longusing namespace std;const int N = 5010, M = 100010, INF = 0x3f3f3f3f3f3f3f3f;struct edge {int to, next, w, cost; 
} e[M];int head[N], idx = 1;void add(int u, int v, int w, int cost) {idx++;e[idx].to = v;e[idx].next = head[u];e[idx].w = w;e[idx].cost = cost;head[u] = idx;idx++;e[idx].to = u;e[idx].next = head[v];e[idx].w = 0;e[idx].cost = -cost;head[v] = idx;
}int n, S, T;
int dis[N], pre[N], flow[N];
bool st[N];bool spfa() {queue<int> q;q.push(S);memset(dis, 0x3f, sizeof(dis));memset(flow, 0, sizeof(flow));dis[S] = 0;flow[S] = INF;st[S] = true;while (q.size()) {int t = q.front();q.pop();st[t] = false;for (int i = head[t]; i; i = e[i].next) {int to = e[i].to;if (e[i].w && dis[to] > dis[t] + e[i].cost) {dis[to] = dis[t] + e[i].cost;pre[to] = i;flow[to] = min(flow[t], e[i].w);if (!st[to]) {q.push(to);st[to] = true;}}}}return flow[T] > 0;
}int a[N], b[N];bool prime(int x) {if (x <= 2) return false;for (int i = 2; i <= x / i; i++) {if (x % i == 0) {return false;}}return true;
}signed main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n;for (int i = 1; i <= n; i++) cin >> a[i] >> b[i];S = n + 1, T = n + 2;int cnt1 = 0;for (int i = 1; i <= n; i++) {if (a[i] % 2 == 1) {add(S, i, b[i], a[i] == 1);if (a[i] == 1) cnt1 += b[i];}else {add(i, T, b[i], 0);}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (prime(a[i] + a[j]) && a[i] % 2 == 1 && a[j] % 2 == 0) {add(i, j, 0x3f3f3f3f3f3f3f3f, 0);}}}int maxflow = 0, mincost = 0;while (spfa()) {maxflow += flow[T];mincost += flow[T] * dis[T];int x = T;while (x != S) {e[pre[x]].w -= flow[T];e[pre[x] ^ 1].w += flow[T];x = e[pre[x] ^ 1].to;}}cout << maxflow + (cnt1 - mincost) / 2 << '\n';return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

asp.net webapi 控制器中获取appsettings.json 中的数组对象

appsettings.json 文件内容: {"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"MyConfigKey": "MyConfigValue","AllowedHosts": "…

Linux系统使用 mkfs.ext4 格式化磁盘分区

Linux系统使用 mkfs.ext4 格式化磁盘分区 1.安装格式化工具大多数系统默认已经安装相关的软件工具。2.修改分区表可以使用 fdisk 或 parted 来修改分区表。3.格式化磁盘格式化指定分区: mkfs.ext4 /dev/vdb1格式化完成后进行优化配置: tune2fs -c -1 /dev/vdb14.挂载磁盘分区…

Day01-标题、字体、引用、分割线、图片、超链接、列表、表格、代码

Day01-标题、字体、引用、分割线、图片、超链接、列表、表格、代码 标题 一级标题:一个井号 空格 回车 二级标题:两个井号 空格 回车 二级标题 三级标题:三个井号 空格 回车 三级标题 ...... (最多到6级标题) 字体 Hello World!!!!!!! 斜…

2024-09-20 如何去除vue前端框架upload组件中的缓存 ==》v-if+setTimeout

在很多前端框架中的upload组件,比如arco-design的a-upload组件,在遍历渲染过程中会发现上传完成后,切换到另一个a-upload组件,它的图片会显示上一个a-upload组件的缓存 正常上传,然后点击红色,红色对应的图片应该被清空,实际上却并没有,如下解决方案:给a-upload组件加…

【python爬虫案例】利用python爬取豆瓣读书评分TOP250排行数据

【python爬虫案例】利用python爬取豆瓣电影TOP250评分排行数据,并导出为excel文档数据一、爬取案例-豆瓣读书TOP250 上一期给大家分享了个python爬虫案例:豆瓣电影TOP250的排行榜数据爬取 【python爬虫案例】利用python爬虫爬取豆瓣电影评分TOP250排行数据! 今天再给大家分享…

多语言长文本 AI 关键字提取 API 数据接口

多语言长文本 AI 关键字提取 API 数据接口 AI / 文本 专有模型极速提取 多语言长文本 / 实时语料库。1. 产品功能支持长文本关键词提取; 多语言关键词识别; 基于 AI 模型,提取精准关键词; 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); 全面兼容 Apple ATS; 全国多…

【Swagger】3.Swagger2的权限控制

想找Swagger的登录认证方式。这里是Swagger2的方式。登录安全控制 Basic身份认证 ApiKey身份认证登录安全控制 Basic身份认证ApiKey身份认证 有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。

Oracle 19C重启库后警告日志报错ORA-12012ORA-27476: SYS.MAX_JOB_SLAVE_PROCESSES does not exist

Oracle 19C重启库后警告日志报错ORA-12012&&ORA-27476: "SYS"."MAX_JOB_SLAVE_PROCESSES" does not exist某次测试机器的19c重启后突然在警告日志定时冒出如下类似的报错:2024-09-20T15:20:00.170202+08:00 TESTDB(7):Errors in file /u01/app/or…

【Swagger】2.不在生产环境暴露,可以修改默认地址

不对外暴露接口 一般来说,接口给内部人员使用和测试的,不对生产环境暴露。此时应该如何设置呢?可以在Swagger配置文件中添加注解:@Profile({"环境名称1","环境名称2"} 或@Profile("环境名称") 这里,注解中不添加生产环境。 此时,开发环境和…

SMT丨工艺特点及详细生产工艺流程

SMT丨工艺特点及详细生产工艺流程 表面组装技术SMT现状 SMT是目前电子组装行业里最流行的一种技术和工艺。自70年代初推向市场以来,SMT已逐渐替代传统"人工插件"的波峰焊组装方式,已成为现代电子组装产业的主流,人们称为电子组装技术的第二次革命。在国际上,这种…

【Swagger】2.——不在生产环境暴露,可以修改默认地址

不对外暴露接口 一般来说,接口给内部人员使用和测试的,不对生产环境暴露。此时应该如何设置呢?可以在Swagger配置文件中添加注解:@Profile({"环境名称1","环境名称2"} 或@Profile("环境名称") 这里,注解中不添加生产环境。 此时,开发环境和…

文件上传漏洞思路详解

1. 文件上传漏洞简介 1.1 什么是文件上传漏洞 文件上传漏洞是一种常见的Web应用程序漏洞,攻击者可以通过向目标服务器上传恶意文件来实现攻击目的。这类漏洞的产生通常是因为服务器没有对用户上传的文件进行充分的安全检查和验证。 1.2 文件上传漏洞有哪些危害 1. 恶意代码执行…