B - Team Gym - 102801B ( 网络流问题)

 题目链接

先占个坑,有空写一下思路 

#include <bits/stdc++.h>
using namespace std;
#define pi acos(-1)
#define xx first
#define yy second
#define endl "\n"
#define lowbit(x) x & (-x)
#define int long long
#define ull unsigned long long
#define pb push_back
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define LF(x) fixed << setprecision(x)
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define Yshanqian ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
const int N = 2e5 + 10, inf = 0x3f3f3f3f, mod = 1e9 + 7, P = 13331;
const double eps = 1e-8;
int n, m, M;
int s, ss, t;
int mincost, maxflow;
int a[N], b[N], c[N];
int h[N], e[N], ne[N], cap[N], cost[N], idx;
int dis[N], cur[N], vis[N];
void add(int a, int b, int c, int d)
{e[idx] = b, ne[idx] = h[a], cap[idx] = c, cost[idx] = d, h[a] = idx++;e[idx] = a, ne[idx] = h[b], cap[idx] = 0, cost[idx] = -d, h[b] = idx++;
}
int bfs(int s, int t)
{queue<int> q;for (int i = 0; i <= t; i++)dis[i] = inf, vis[i] = 0;dis[s] = 0, vis[s] = 1;q.push(s);while (q.size()){int u = q.front();q.pop();vis[u] = 0;for (int i = h[u]; ~i; i = ne[i]){int w = cap[i], cot = cost[i];int v = e[i];if (w && dis[v] > dis[u] + cot){dis[v] = dis[u] + cot;if (!vis[v]){q.push(v);vis[v] = 1;}}}}return dis[t] != inf;
}int dfs(int u, int t, int flow)
{if (u == t)return flow;int ret = 0;vis[u] = 1;for (int i = cur[u]; ~i && ret < flow; i = ne[i]){cur[u] = i;int v = e[i];if (!vis[v] && dis[v] == dis[u] + cost[i] && cap[i]){int tt = dfs(v, t, min(cap[i], flow - ret));if (tt){ret += tt;cap[i] -= tt;cap[i ^ 1] += tt;mincost += tt * cost[i];}}}vis[u] = 0;return ret;
}
void dinic(int s, int t)
{int sp = s, tp = t;while (bfs(sp, tp)){for (int i = 0; i <= t; ++i)cur[i] = h[i];int x;while (x = dfs(sp, tp, inf))maxflow += x;}
}
void solve()
{memset(h, -1, sizeof h);idx = 0;mincost = 0;maxflow = 0;cin >> n >> m >> M;for (int i = 1; i <= n; ++i)cin >> a[i];for (int i = 1; i <= n; ++i)cin >> b[i];for (int i = 1; i <= n; ++i)cin >> c[i];s = 4 * n + 1, ss = s + 1, t = ss + 1;auto cal = [](int x, int y){return (x + y) * (x ^ y) % M;};add(ss, s, m, 0);for (int i = 1; i <= n; ++i){add(s, i, 1, 0);add(3 * n + i, t, 1, 0);add(n + i, 2 * n + i, 1, 0);//点有容量就把它拆成入点与出点,入点向出点连一条边限制这个点的容量。for (int j = 1; j <= n; ++j){add(j, n + i, 1, -cal(a[i], b[j]));add(2 * n + i, 3 * n + j, 1, -cal(a[i], c[j]));}}dinic(ss, t);cout << -mincost << endl;
}
signed main()
{Yshanqian;int T;T = 1;cin >> T;for (int cases = 1; cases <= T; ++cases){// cout<<"Case #"<<cases<<": ";solve();}return 0;
}

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

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

相关文章

Vue3安装使用Mock.js--解决跨域

首先使用axios发送请求到模拟服务器上&#xff0c;再将mock.js模拟服务器数据返回给客户端。打包工具使用的是vite。 1.安装 npm i axios -S npm i mockjs --save-dev npm i vite-plugin-mock --save-dev 2.在vite.config.js文件中配置vite-plugin-mock等消息 import { viteMo…

RedisHelper

Redis面试题&#xff1a; 1、什么是事务&#xff1f;2、Redis中有事务吗&#xff1f;3、Redis中的事务可以回滚吗&#xff1f; 答&#xff1a; 1、事务是指一个完整的动作&#xff0c;要么全部执行&#xff0c;要么什么也没有做 2、Redis中有事务&#xff0c;Redis 事务不是严…

分页操作中使用LIMIT和OFFSET后出现慢查询的原因分析

事情经过 最近在做批量数据处理的相关业务&#xff0c;在和下游对接时&#xff0c;发现拉取他们的业务数据刚开始很快&#xff0c;后面会越来越慢&#xff0c;40万数据一个小时都拉不完。经过排查后&#xff0c;发现对方用了很坑的分页查询方式 —— LIMIT OFFSET&#xff0c;…

【前端学习记录】Vue前端规范整理

文章目录 前言一、文件及文件夹命名二、钩子顺序三、注释规范四、组件封装五、CSS编码规范六、JS编码规范 前言 优秀的项目源码&#xff0c;即使是多人开发&#xff0c;看代码也如一人之手。统一的编码规范&#xff0c;可使代码更易于阅读&#xff0c;易于理解&#xff0c;易于…

mysql中NULL值

mysql中NULL值表示“没有值”&#xff0c;它跟空字符串""是不同的 例如&#xff0c;执行下面两个插入记录的语句&#xff1a; insert into test_table (description) values (null); insert into test_table (description) values ();执行以后&#xff0c;查看表的…

harmonyOS鸿蒙内核概述

内核概述 内核简介 用户最常见到并与之交互的操作系统界面&#xff0c;其实只是操作系统最外面的一层。操作系统最重要的任务&#xff0c;包括管理硬件设备&#xff0c;分配系统资源等&#xff0c;我们称之为操作系统内在最重要的核心功能。而实现这些核心功能的操作系统模块…

2023年全国职业院校技能大赛信息安全管理与评估正式赛(模块三理论技能)

2023年全国职业院校技能大赛&#xff08;高等职业教育组&#xff09;“信息安全管理与评估”理论技能 理论技能与职业素养&#xff08;100分&#xff09; 【注意事项】 1.理论测试前请仔细阅读测试系统使用说明文档&#xff0c;按提供的账号和密码登录测试系统进行测试&…

【经验分享】gemini-pro和gemini-pro-vision使用体验

Gemini Gemini已经对开发者开放了Gemini Pro的使用权限&#xff0c;目前对大家都是免费的&#xff0c;每分钟限制60条&#xff0c;至少这比起CloseAI的每个账户5刀限速1min3条要香的多&#xff0c;目前已于第一时间进行了体验 一句话总结&#xff0c;google很大方&#xff0c;但…

【Spring】@SpringBootApplication注解解析

前言&#xff1a; 当我们第一次创建一个springboot工程时&#xff0c;我们会对启动类&#xff08;xxxApplication&#xff09;有许多困惑&#xff0c;为什么只要运行启动类我们在项目中自定义的bean无需配置类配置&#xff0c;扫描就能自动注入到IOC容器中&#xff1f;为什么我…

仿牛客论坛的一些细节改进

私信列表的会话头像链接到个人主页 原来的不足 点击私信列表的会话头像应该要能跳转到该目标对象的个人主页。 原来的代码&#xff1a; <a href"profile.html"><img th:src"${map.target.headerUrl}" class"mr-4 rounded-circle user-he…

三、Java运算符

1.运算符和表达式 运算符&#xff1a; ​ 就是对常量或者变量进行操作的符号。 ​ 比如&#xff1a; - * / 表达式&#xff1a; ​ 用运算符把常量或者变量连接起来的&#xff0c;符合Java语法的式子就是表达式。 ​ 比如&#xff1a;a b 这个整体就是表达式。 ​ 而其…

数据分析为何要学统计学(4)——何为置信区间?它有什么作用?

置信区间是统计学中的一个重要工具&#xff0c;是用样本参数()估计出来的总体均值在某置信水平下的范围。通俗一点讲&#xff0c;如果置信度为95%&#xff08;等价于显著水平a0.05&#xff09;&#xff0c;置信区间为[a,b]&#xff0c;这就意味着总体均值落入该区间的概率为95%…

Two Phase Termination(两阶段)设计模式

Two Phase Termination设计模式是针对任务由两个环节组成&#xff0c;第一个环节是处理业务相关的内容&#xff0c;第二个阶段是处理任务结束时的同步、释放资源等操作。在进行两阶段终结的时候&#xff0c;需要考虑&#xff1a; 第二阶段终止操作必须保证线程安全。 要百分百…

2036开关门,1109开关门

一&#xff1a;2036开关门 1.1题目 1.2思路 1.每次都是房间号是服务员的倍数的时候做处理&#xff0c;所以外层&#xff08;i&#xff09;枚举服务员1~n&#xff0c;内层&#xff08;j&#xff09;枚举房间号1~n&#xff0c;当j % i0时&#xff0c;做处理 2.这个处理指的是&…

小项目:迷宫

目录 引言1.题目描述及思想2.代码实现3.最终结果 引言 这个迷宫的话就是去年这时候&#xff0c;我记得当时讲这个的时候我还是一脸懵逼&#xff0c;就是事后花时间能够看懂&#xff0c;能够理解&#xff0c;但是自己肯定是不能够实现的&#xff0c;而且觉得这个东西非常的庞大…

IIC和SPI结合实现室内温度计

iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "gpio.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** *…

facebook广告的门槛有哪些

Facebook广告的门槛主要包括以下几个方面&#xff1a; 账户资格&#xff1a;需要拥有一个有效的Facebook个人账号或商业账号。 账户状态&#xff1a;个人账号需要满足一定活跃度要求&#xff0c;而商业账号则需要满足公司名称和地址等详细信息的要求。 账户安全性&#xff1a…

每日一题:Leetcode974.和可被k整除的子数组

题目描述&#xff1a; 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1…

什么是PHPUnit?如何进行单元测试?

PHPUnit 是一个用于 PHP 的单元测试框架&#xff0c;它支持测试驱动开发&#xff08;TDD&#xff09;和行为驱动开发&#xff08;BDD&#xff09;。PHPUnit 提供了一套用于编写和运行测试的工具和断言方法。 以下是使用 PHPUnit 进行单元测试的基本步骤&#xff1a; 步骤 1: …

【LeetCode刷题笔记(4)】【Python】【移动零】【简单】

文章目录 题目描述示例 1示例 2提示 解决方案题意拆解双指针算法双指针法的主要优点双指针法的使用场景举例&#xff1a; 解决方案&#xff1a;【双指针一次遍历】解题心得方案代码运行结果复杂度分析 结束语 移动零 题目描述 给定一个数组 nums&#xff0c;编写一个函数将所…