2021牛客暑期多校训练营5 - J - Jewels( 二分图带权最大匹配 - KM算法 - O(n^3) DFS版 )

VLOOKUP_fixed.py 立即下载
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

n 个宝石,宝石每个时间的位置都不同,每一个时刻只能挖一颗宝石,挖宝石的代价是三维空间上的距离平方。

思路

n 个时刻 ( [ 0 , n ] ) 对应 n 个宝石,每个时刻只能挖一颗宝石,一边是时间,一边是宝石,像什么呢,像二分图,做什么呢,二分图带权最小匹配,而二分图带权最小匹配就是把边权 w [ i ] [ j ] 取相反数,然后转化为二分图带权最大匹配,最后把 - ans 作为答案输出即可。
模板来自于:lydrainbowcat

代码
//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=998244353;
const double eps=1e-9;
const int N=310;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/
int w[N][N]; // 边权
int la[N],lb[N],upd[N]; // 左、右部点的顶标
bool va[N],vb[N]; // 访问标记:是否在交错树中
int match[N]; // 右部点匹配了哪一个左部点
int last[N]; // 右部点在交错树中的上一个右部点,用于倒推得到交错路
int n;
struct node
{
	int x;
	int y;
	int z;
	int v;
}a[N];

bool dfs(int x,int fa) 
{
    va[x]=1;
    for(int y=1;y<=n;y++)
    {
    	if(!vb[y])
        {
        	if(fabs(la[x]+lb[y]-w[x][y])==0) 
        	{ // 相等子图
                vb[y]=1; 
                last[y]=fa;
                if(!match[y]||dfs(match[y],y)) 
                {
                    match[y]=x;
                    return true;
                }
            }
            else if(upd[y]>la[x]+lb[y]-w[x][y]) 
            {
                upd[y]=la[x]+lb[y]-w[x][y];
                last[y]=fa;
            }
        }  
    } 
    return false;
}

void KM() 
{
    for(int i=1;i<=n;i++) 
    {
        la[i]=-INF;
        lb[i]=0;
        for(int j=1;j<=n;j++)
            la[i]=max(la[i],w[i][j]);
    }
    for(int i=1;i<=n;i++) 
    {
        memset(va,0,sizeof(va));
        memset(vb,0,sizeof(vb));
        for(int j=1;j<=n;j++) upd[j]=INF;
        // 从右部点st匹配的左部点match[st]开始dfs,一开始假设有一条0-i的匹配
        int st=0; 
        match[0]=i;
        while(match[st]) 
        { // 当到达一个非匹配点st时停止
            int delta=INF;
            if(dfs(match[st],st)) break;
            for(int j=1;j<=n;j++)
            {
            	if(!vb[j]&&delta>upd[j]) 
            	{
                    delta=upd[j];
                    st=j; // 下一次直接从最小边开始DFS
                }
            }
            for(int j=1;j<=n;j++) 
            { // 修改顶标
                if(va[j]) la[j]-=delta;
                if(vb[j]) lb[j]+=delta; 
                else upd[j]-=delta;
            }
            vb[st]=true;
        }
        while(st) 
        { // 倒推更新增广路
            match[st]=match[last[st]];
            st=last[st];
        }
    }
}

int get(int t,int i)
{
	return a[i].x*a[i].x+a[i].y*a[i].y+(a[i].z+a[i].v*t)*(a[i].z+a[i].v*t);
}

signed main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
    scanf("%lld",&n);
    for(int i=1;i<=n;i++) 
    	scanf("%lld%lld%lld%lld",&a[i].x,&a[i].y,&a[i].z,&a[i].v);
    for(int i=1;i<=n;i++)//时间
        for(int j=1;j<=n;j++)//宝石
            w[i][j]=-get(i-1,j);
    KM();
    int ans=0;
    for(int i=1;i<=n;i++) 
    	ans+=w[match[i]][i];
    printf("%lld\n",-ans);
}

YOLO26算法心电图十二导联目标检测+训练好的模型+368张数据集+pyqt可视化界面.zip 附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[导联I(I), 导联II(II), 导联III(III), 胸导联V1(V1), 胸导联V2(V2), 胸导联V3(V3), 胸导联V4(V4), 胸导联V5(V5), 胸导联V6(V6), 加压肢体导联aVF(aVF), 加压肢体导联aVL(aVL), 加压肢体导联aVR(aVR)] · 训练集:313 张 · 验证集:37 张 · 测试集:18 张 · 总计:368 张 该数据集聚焦于临床心电图信号的精准识别与定位,其核心检测目标为标准12导联心电图中的各个独立导联波形区域,涵盖肢体导联(I、II、III)与加压肢体导联(aVR、aVL、aVF),以及胸前导联(V1至V6),适用于心电图自动分析系统中对各导联位置的快速准确标注与分类。数据采集场景真实还原了医院心电图室或急诊监护环境下的标准心电图记录纸,波形清晰、基线稳定,具有高度临床参考价值。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 57 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9708** mAP50-95 | 0.6344 Precision | 0.8990 Recall | 0.9191 train/box_loss | 1.2231 train/cls_loss | 0.9703 val/box_loss | 1.2779 val/cls_loss | 0.... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。 立即下载

相关推荐

企业级AI助手平台 开箱即用的全栈AI平台,支持多智能体协同、Supervisor模式编排、多种决策模式、RAG技术和流程编排能力 支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化

企业级AI应用开发框架,支持多厂商大模型统一接入与管理,安全可控的企业知识库与高精度检索优化能力,提供可视化流程编排、自主决策智能体与多智能体协同调度,兼容主流 Agent Skill 协议,帮助企业与开发者零门槛快速构建安全、高效、可落地的AI智能体应用与行业解决方案。

2021牛客暑期多校训练营5,签到题BDHJK

题号 标题 已通过代码 通过率 团队的状态 A Away from College 点击查看 9/53 未通过 B Boxes 点击查看 637/2596 通过(数学期望,贪心结论) C Cheating and Stealing 点击查看 88/438 未通过 D Double Strings 点击查看 368/1325 未通过(二维字符串dp) E Eert Esiwtib 点击查看 26/116 未通过 F Finding Points 点击查看 72/977 未通过 G Greater Integ

小哈里的博客 922

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。优点:- 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。- 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。-缺点:- 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。

Hyman Qiu 2688

2021牛客多校5(BCDJK)

目录B:Boxes(数学期望) C:Cheating and Stealing(模拟)D:Double Strings(DP,组合数) J:Jewels(二分图最大权完美匹配)K:King of Range(ST表,双指针)题意:有 n 个盒子,每个盒子中装有黑球白概率均为。打开第 i个盒子所需代价为 。现在有一个机会,使用 c 的代价知晓剩余盒子中黑球个数,问使用最优策略开盒子直到直到全部盒子装球颜色情况的期望最小代价。思路:只能有一次机会知道剩余盒子黑球的个数,那么最好的结果是用了这次机会花费c,剩余盒

weixin_51987650的博客 373

深入解析Carry4的内部结构与工作原理

本文深入解析了Xilinx/AMD FPGA中的核心硬件资源Carry4的内部结构和工作原理。作为实现超前进位的关键物理电路,Carry4通过其CI、DI、S、O、CO等端口,高效处理4位算术运算的进位逻辑。文章通过端口详解、结构分析和实战计算示例,揭示了其如何加速加法、减法等运算,并探讨了其在优化FPGA设计时序与资源利用中的关键作用。

n4o5p6q7r的博客 501

聚类教程:cisTopic——来自单细胞表观基因组学数据的顺式调控主题的概率建模

之前运行这步的时候报错了如下: 后来发现原因是Ubuntu自动把R包更新到4.2版本,但是Rstudio版本没有更新,更新Rstudio即可,更新Rstudio的教程看此教程:。

watermel__的博客 1051

Imprecise Computer - ( 思维 / 递推 )

题目描述 The Imprecise Computer (IC) is a computer with some structural issue that it can compare two integers correctly only when their difference is at least two. For example, IC can always correctly answer ‘4 is larger than 2’, but it can answer either ‘2 i

Cosmic_Tree的博客 1528

ENVI5.3.1使用Landsat 8影像进行辐射定标和大气校正实例操作

ENVI5.3.1使用Landsat 8影像进行辐射定标和大气校正实例操作

PeanutbutterBoh的博客 12万+

Going Home - ( 抽屉原理 )

题目链接:点击进入 题目 题意 给一个长度为 n 的数组,问是否存在 x , y , z , w ( 四个数互不相同 ) ,满足 a [ x ] + a [ y ] = a [ z ] + a [ w ] ; 思路 暴力枚举 x 与 y ,得出和值 C ,2 <= C <= 5e6。 有 n ^ 2 对( x , y ),和值 C 大约有 5e6 种取值,当 n ^ 2 > 5e6 时,根据抽屉原理,必有一个和值对应两个以上的( x , y )对,但是,此时可能对应的( x , y )

Cosmic_Tree的博客 1407

2017阿里内推笔试题--算法工程师(运筹优化)

2017阿里内推笔试题–算法工程师(运筹优化)题目沐哲是一个菜鸟仓库的一个拣货员,但他有非常个怪异的习惯。每次拣货的重量都要比之前拣的一个轻,每次拣到货后都可以得到1块钱,沐哲想知道这样最多能赚多少钱 32 34 7 33 21 2 13 12 3 11 26 36 16 30 22 1 24 14 20 23 25 5 19 29 27 15 9 17 31 4 6 18 8 10 3

shawpan的专栏 1万+

Spring AI Alibaba 项目源码学习(九)-其他继承BaseAgent

本文分析了Spring AI Alibaba Agent Framework中的A2aRemoteAgent实现,主要特点包括: 实现了Agent间的远程调用能力,支持分布式部署 核心组件包括AgentCard封装元数据、A2aNodeActionWithConfig处理调用逻辑、AgentCardProvider提供卡片管理 支持流式调用和状态共享机制 采用Builder模式构建Agent实例 通过指令传递实现Agent间通信 关键流程包括状态提取、请求构建、远程调用和状态更新四个步骤,形成Agent

819

ABC Conjecture(大数分解)-2020ccpc(威海)

题意 给你一个范围是 [ 1 , 10 ^ ​18​​ ] 的数,让你求这个数能不能被一个 素数的平方 整除(即 c % ( i * i ) == 0) 思路1 用大数分解模板,将 c 分解得到 c 的所有质因子,然后去重(模板得到的是无序且没去重的),然后将所有质因子相乘,得到 tmp , 如果 tmp 跟 c 相等,说明 c 不能被素数的平方整除,否则可以。 (记得特判 c == 1 的情况!!! c = 1 是 “ no ” ) 代码1 #include<iostream> #incl..

Cosmic_Tree的博客 1335

【K8S系列】Kubernetes 中 Pod 无法通过 Service 名称访问服务的 DNS 解析失败问题【已解决】

在 Kubernetes 中,Service 提供了一种稳定的方式,通过名称访问一组 Pod。当其他 Pod 无法通过 Service 名称访问服务,并且出现 DNS 解析失败时,通常会导致应用无法正常工作。本文将详细分析此问题的常见原因及其解决方案。

颜淡慕潇 1万+

A Golden Spirit (思维)-2020ccpc(威海)

题意 一座桥,桥两侧各有 n 个人,每个人都想去桥对面休息 x 分钟后再返回(必须休息够 x 分钟才能被背回去),问你满足所有人的愿望,最少需要多少分钟(你背一个老人过一次桥需要 t 分钟) 思路 最优的办法是(前 2 n 次)每一次过桥先背一个人去对面休息,等到所有(2 n个)人都到了(相对于自己一开始的位置的)桥对面,然后,这时候自己应该在自己最开始的位置,而此时每个人的休息所剩时间应该是: x x-2t x-4t … x-2*(n-1)t | x-t x-3t x-..

Cosmic_Tree的博客 1054

【Zephyr存储专题】09_LittleFs文件系统操作

本文档旨在为开发者介绍Zephyr下Littlef's文件系统相关配置使用指南

zero的博客 3246

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Gym - 103069B - Rectangle Flip 2( 暴力 + 思维 )

题目链接:点击进入 题目 题意 n * m 的网格,每秒删除其中一个小网格,问每秒后,还剩余多少个好的矩形 ( 只要是矩形,同时矩形内没有被删除的格子 ) 思路 蚌埠住啦,这题因为万恶的javaweb被我搁置了好久,我老早就想写了,难受≧ ﹏ ≦ 按照顺序删除点,对于每个删除的点,看会影响多少新矩形。思考一下(脑袋里构一下图),一个新删除的点,能影响到的,只能是以这个点x为中轴,上下每行左右扩到最大的部分(最大就是指碰到被删除的点,或者边界),这个上下每行也是在x轴上上下扩到最大的。我们若是确定每行能扩

Cosmic_Tree的博客 834

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

The number of steps(概率dp问题)

题目描述 Mary stands in a strange maze, the maze looks like a triangle(the first layer have one room,the second layer have two rooms,the third layer have three rooms …). Now she stands at the top point(the first layer), and the KEY of this maze is in the lowes

Cosmic_Tree的博客 805

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Clock Master(分组背包)-2020ccpc(威海)

题意: T 组样例,每组给一个 n ,范围是 [ 1 , 30000 ] ,要求将 n 分解成: n = a1 + a2 + … + am ( m 没有限制 ),使得(a1 + a2 + … + am)的最小公倍数最大,输出这个最大值的对数。 思路: 将题目转换一下,就变成了将n分解,分解成 使得 尽可能的大。同时答案是要求输出这个最大值的对数,这个式子又转换为 有 k 种(组)素数,每种(组)素数只能选择一个幂次( p ^ ( ei )) ,第i个数的容量是 p ^ ( ei ),价值是log (.

Cosmic_Tree的博客 799

Chat Group -( 组合数 + 乘法逆元 )

题目链接:点击进入 题目 题意 n 个人, >= k 人就可以组成一个小组,问能组成多少个小组 思路 答案 = c ( n , k ) + … + c ( n , n ) = 2 ^ n - ( c ( n , 0 ) + … + c ( n , k - 1 ) ) c ( n , i ) = c ( n , i - 1 ) * ( n - i + 1 ) / i i 的逆元: 1 / i = i ^ ( mod - 2 ) 代码 #include<iostream> #includ

Cosmic_Tree的博客 693

HDU - 5256-序列变换(求最长严格递增子序列)

题目连接:点击进入 题意 一个数列,要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。输出最少需要修改多少个元素。 思路 求最长的严格递增子序列 (O ( N ^ 2 ) 会 T , 所以用 O( N lg N)的 - - 二分查找) 这里解释一下对于初始的序列 a [ i ] 的偏移(也就是令 a [ i ] = a [ i ] - i) 因为严格递增要满足 a [ i ] - a [ j ] >= i - j , 即 a [ i ] - i >=

Cosmic_Tree的博客 657

What Goes Up Must Come Down(树状数组求逆序对)

题意 给你一个长度为n的数字序列,你每次可以交换任意两个相邻的数字,让你求出达到目标序列(前面不递减,后面不递增) 思路

Cosmic_Tree的博客 644

L3-011 直捣黄龙(最短路+dfs路径回溯)

题目链接:点击进入 思路 最短路+dfs路径回溯,不难,但是我被卡了,没看出来最短距离相等时,路径数应该是两者相加(我记得我之前做这类的题目的时候也是这里被卡,我真是猪脑子(* ̄(oo) ̄))。。。写博客纪念一下o(╥﹏╥)o 代码 #include<iostream> #include<cstring> #include<queue> #include<map> #include<cstdio> #define pii pair<int,i

Cosmic_Tree的博客 620

Gym - 102483G Game Design( 思维 + 模拟 )

题目链接:点击进入 题目 题意 思路 代码 #include<bits/stdc++.h> #define pii pair<int,int> using namespace std; const int maxn=1e6+10; const int base=1001; int pos[maxn]; string s; vector<pii>v; void print(int x,int y) { cout<<(-x)<<" "<&

Cosmic_Tree的博客 600

2021年度训练联盟热身训练赛第一场-G Birthday Paradox ( 数学 )

题目链接: 题目 题意 m个人,n组生日(可能这一天就一个人过生日,也可能多个人过生日),一年365天,问给定的这种情况的概率 思路 设m是总人数,那么总的情况数是 符合题意的情况数: 1、选出的n天生日的情况数, 2、m人分成n组的情况数(排除组内重复) 3、n个日期与n个组一一对应的情况数 综上: 答案为 然后取对数() ...

Cosmic_Tree的博客 593

CodeForces 1267

题目:B–Balls of Buma 题意 给你一个字符串(代表不同颜色),让你插入一个字符(一种颜色)后,可以消掉整个字符串。(相同颜色、长度变长、长度>=3才会抵消) 思路 将原串变成“种类串”(例如:AABBAA—> ABA)后,“种类串”应当是回文串,且长度应该是奇数。 同时,一个可以被消去的串,根据中心对称的同类部分的长度和,应当>=3。中心部分长度应当>=2.满足以上条件,答案为中心部分答案+1; 代码 #include<iostream> #include&

Cosmic_Tree的博客 583

爱丽丝的人偶(二)-(排列组合-数学)

思路 去重,求组合数 c( len , k )(len为去重后的序列长度) (预处理组合数) 代码 #include<iostream> #include<string> #include<map> #include<set> //#include<unordered_map> #include<queue> #include<cstdio> #include<vector> #include<cstri.

Cosmic_Tree的博客 543
上一篇: POJ - 3468 - A Simple Problem with Integers( 树状数组 -> 区间修改 + 区间查询 )
下一篇: CodeForces - 1541B - Pleasant Pairs( 质因子分解 )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值