poj3228

三维点云孔洞修复(附Python代码和公共点云数据集链接) (1)物体自身缺失(2)物体自身形状复杂,很多凹凸面不够规则甚至存在空腔,空腔内部无法被三维激光扫描仪扫描到(3)物体部分区域对激光扫描不敏感,未被扫描上(4)扫描仪的扫描稳定性。 阅读详情

真他妈是道好题呀,刷新了我对并查集的认识。听说这题用网络流也能写,让我再去写发网络流,练练手。

并查集:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    #define MAXN 40000
    int n,m,ans,in,out;
    int fa[500],f[500];
    bool flag;
    struct Edge{
        int a,b,len;
    }edge[MAXN];
    int find(int x)
    {
        if(x!=fa[x])
            fa[x]=find(fa[x]);
        return fa[x];
    }
    bool cmp(Edge a,Edge b)
    {
        return a.len<b.len;
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF&&n)
        {
            int num=0; 
            memset(f,0,sizeof(f));
            for(int i=0;i<n;i++)
            {
                scanf("%d",&in);
                f[i+1]-=in;
            }
            for(int i=0;i<n;i++)
            {
                scanf("%d",&out);
                f[i+1]+=out;
                if(f[i+1]<0)num++;
            }
            scanf("%d",&m);
            int a,b,c;
            for(int i=0;i<m;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                edge[i].a=a;
                edge[i].b=b;
                edge[i].len=c;
            }
            sort(edge,edge+m,cmp);
            int f1,f2;
            for(int i=0;i<=n;i++)
                fa[i]=i;
            flag=false;
            for(int i=0;i<m;i++)
            {
                f1=find(edge[i].a);
                f2=find(edge[i].b);
                if(f1!=f2)
                    {
                        fa[f1]=f2;

                        f[f2]+=f[f1];
                        if(f[f2]>=0)
                        {
                            if(f[f2]-f[f1]<0||f[f1]<0)  
                                num--;
                        }
                        else if(f[f2]<0)
                        {
                            if(f[f2]-f[f1]<0&&f[f1]<0) 
                                num--;
                        }
                        if(num==0)
                        {
                                flag=true;
                                ans=edge[i].len;
                        }
                    }
                if(flag)
                    break;
            }
            if(flag)
                printf("%d\n",ans);
            else
                printf("No Solution\n");
        }
        return 0;
    }
二分加网络流(对网络流还是不理解,自己写的时候第一次二分,网络流跑完流量是对的,但是后面流量都为零了。。。不知道是哪里没有初始化,看了别人的代码,发现人家每次二分都要重新建下图,这是为什么呀?!!)

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    #define MAXN 40000
    int n,m,ans,in,out;
    int fa[500],f[500];
    bool flag;
    struct Edge{
        int a,b,len;
    }edge[MAXN];
    int find(int x)
    {
        if(x!=fa[x])
            fa[x]=find(fa[x]);
        return fa[x];
    }
    bool cmp(Edge a,Edge b)
    {
        return a.len<b.len;
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF&&n)
        {
            int num=0; 
            memset(f,0,sizeof(f));
            for(int i=0;i<n;i++)
            {
                scanf("%d",&in);
                f[i+1]-=in;
            }
            for(int i=0;i<n;i++)
            {
                scanf("%d",&out);
                f[i+1]+=out;
                if(f[i+1]<0)num++;
            }
            scanf("%d",&m);
            int a,b,c;
            for(int i=0;i<m;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                edge[i].a=a;
                edge[i].b=b;
                edge[i].len=c;
            }
            sort(edge,edge+m,cmp);
            int f1,f2;
            for(int i=0;i<=n;i++)
                fa[i]=i;
            flag=false;
            for(int i=0;i<m;i++)
            {
                f1=find(edge[i].a);
                f2=find(edge[i].b);
                if(f1!=f2)
                    {
                        fa[f1]=f2;

                        f[f2]+=f[f1];
                        if(f[f2]>=0)
                        {
                            if(f[f2]-f[f1]<0||f[f1]<0)  
                                num--;
                        }
                        else if(f[f2]<0)
                        {
                            if(f[f2]-f[f1]<0&&f[f1]<0) 
                                num--;
                        }
                        if(num==0)
                        {
                                flag=true;
                                ans=edge[i].len;
                        }
                    }
                if(flag)
                    break;
            }
            if(flag)
                printf("%d\n",ans);
            else
                printf("No Solution\n");
        }
        return 0;
    }


vue - 网站接入微信扫码登录功能详细教程,完整详细流程及完整功能示例源代码(附常见问题的解决方案与二维码样式修改方案) vue.js项目植入微信登录,vue网页项目怎么做微信扫码登录,VUE项目中的微信扫码登录,VUE中最简单的js调用微信扫一扫功能,vue:如何设计网页的微信扫码登录功能,微信扫码功能官方文档,通过vue方式实现二维码扫码功能,vue调用微信扫码,vue H5 调用微信扫描二维码,Vue前端实现微信扫码登录,vue-wxlogin 微信授权登录组件,网站引入的微信登录框如何修改宽高或其他样式,wxlogin 组件插件怎么改变宽高,vue-wxlogin组件怎么自定义样式,微信网页授权,vue调用微信JSDK 阅读详情

相关推荐

莫比乌斯反演

本文从算法竞赛和数论角度出发,系统介绍了狄利克雷卷积与莫比乌斯反演的核心概念。首先定义了数论函数及其基本性质,重点阐述了狄利克雷卷积的代数结构(交换环)和关键恒等式(如μ*1=ε)。随后通过卷积视角简化了莫比乌斯反演的证明过程。最后将理论提升至抽象代数层面,揭示这些数论工具本质上是偏序集关联代数在整除关系下的特例,其中莫比乌斯函数对应Zeta函数的逆元。全文展现了数学概念从具体到抽象的升华过程,为理解这些工具提供了更深刻的代数视角。

aichitang2024的博客 392

POJ3228题解(详细解答,希望能够理解)

POJ3228题解(详细解答,希望能够理解) # 合理的创建标题,有助于目录的生成 直接输入1次#,并按下space后,将生成1级标题。 输入2次#,并按下space后,将生成2级标题。 以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。 如何改变文本的样式 强调文本 强调文本 加粗文本 加粗文本 标记文本 删除文本 引用文本 H2O is是液体。 210 运算结果是 1024. 插入链接与图片 链接: link. 图片: 带尺寸的图片: 居中的图片: 居中并且带尺寸的图片:

stn54999的博客 241

实战指南:用Python实现ONVIF WS-Discovery设备发现(附完整代码)

本文提供了一份详细的实战指南,介绍如何使用Python实现基于ONVIF标准的WS-Discovery设备发现协议。文章深入解析了协议原理、网络通信模型,并提供了完整的代码实现,帮助开发者快速构建智能安防和物联网应用中的设备自动发现工具,有效提升网络设备集成与管理的效率。

chair的专栏 1114

poj 3228(二分+最大流)

题目链接:http://poj.org/problem?id=3228 思路:增设一个超级源点和一个超级汇点,源点与每一个gold相连,容量为gold数量,汇点与仓库相连,容量为仓库的容量,然后就是二分最小的最大相邻距离,跑最大流验证即可。最大流用的是别人的Dinic模版。 1 #include&lt;iostream&gt; 2 #include&lt;cstdio&gt;...

weixin_34355559的博客 168

#Linux内存管理# 用一个案例详细介绍ARMv7-A架构 缺页中断处理的原理

跳转到异常向量:根据 异常向量表基地址(通常配置在 VBAR 寄存器中,例如 0xFFFF0000) + 数据中止异常的偏移量 0x10,跳转到数据中止异常的处理程序入口点 0xFFFF0010(实践中,这个入口通常是一条跳转到更复杂处理函数的指令)。malloc 通常不会立即分配物理内存页,它只是在内核为该进程维护的虚拟地址空间中找到一段足够大的空闲虚拟地址区域(比如 0x00008000 - 0x00008FFF),标记为已用,并返回起始地址(例如 0x00008000)给程序。

sinat_37817094的博客 993

Vulkan入门系列0- Vulkan与OpenGL的区别

虽然Vulkan和OpenGL都是对GPU的抽象,都能达到相同的功能,但它们的设计理念不同,可以说设计差异是非常之大,由于OpenGL从1992年到现在,已经有30多年的历史,GPU功能日新月异,与当年不可同日而语,在OpenGL保持向下兼容情况下,还要在OpenGL基础上设计一套编程接口显然是不可能的,所以推出了新编程规范Vulkan。另外在一些无窗口的应用中,Vulkan可以有选择的不创建帧缓冲区,比如在数学运算,物理模拟,处理视频流的应用中并不需要窗口,所以Vulkan支持更灵活的应用场景。

GPU全栈博主 4070

poj3228 Gold Transportation(并查集)值得回顾

题意: 给出n个点,表示有n个

Acder的专栏 626

conda install出现CondaValueError: Malformed version string invalid character(s)解决方案

本文主要介绍了conda install出现Solving environment:failed、CondaValueError: Malformed version string invalid character(s),希望能对新手有所帮助。 文章目录 1. 问题描述 2. 解决方案 2.1 步骤一 2.2 步骤二 2.3 步骤三

weixin_43178406的博客 6万+

POJ3228二分最大流

题意:       有n个点,每个点有两个权值,金子数量还有仓库容量,金子可以存在自己的仓库里或者是别的仓库里,仓库和仓库之间有距离,问所有金子都必须存到库里最大距离的最小是多少? 思路:       比较简单,方法也不唯一,大体可以这样,先二分,然后用最大流或者匹配..来判断是不是满足就行了,我用的是二分最大流,具体代码在下面。 #include #includ

天使也掉毛 612

cuRobo 入门教程(二)基于CUDA的机器人运动规划加速库

cuRobo是一款基于CUDA加速的机器人算法库,提供正向/逆向运动学、碰撞检测、数值优化等核心功能,支持在NVIDIA Jetson Orin等平台上实现毫秒级运动规划。该库创新性地采用并行轨迹优化技术,结合nvblox工具实现深度摄像头避障功能,并通过多层ESDF结构处理动态障碍物。性能测试显示,在RTX 6000 Ada显卡上可实现99.85%的成功率,平均规划时间仅39毫秒。cuRobo还提供Python API支持神经网络集成,并具备批量环境处理能力,特别适用于工业机器人应用场景。最新版本通过算法

2506_90492529的博客 1303

嵌入式工程师必学(118):MCU的硬件定时器和中断

大多数微处理器都有一个或多个可编程硬件定时器,这些定时器包括对中断的支持。可以有不同类型的计时器,用于不同的应用程序。例如,LPC1768 具有四个 32 位通用定时器、一个看门狗定时器、一个重复中断定时器、一个系统滴答定时器、一个正交编码器接口、6 个 PWM 输出和一个支持中断的实时时钟。硬件定时器用于计时和计数作,允许处理器在 timer 进程运行时继续执行其他进程。硬件定时器是一种使用 clock 信号来增加 register 的电路。

码农17年的博客 211

poj 3228 Gold Transportation 并查集

题意: 有n和城市和m条路,每个城市都有产生金量和收集金量,现在要把所有黄金收集,求经过的最短边是多少。 分析: 二分+最大流或用并查集合并等价类。 //poj 3228 //sep9 #include #include using namespace std; const int maxN=256; const int maxM=10024; int p[maxN],sum[maxN

sepNINE的专栏 1075

vue2/3 - 详细实现内网使用离线百度地图功能,百度地图如何离线加载详细教程(内网部署及使用),在vue中无需网络离线使用百度地图相关功能,提供最新完整的瓦片资源下载及相关工具(示例代码,一键复制

vue,vue2,vue3,百度地图,离线使用百度地图,百度地图瓦片官方下载,vue内网使用百度地图离线无网络,断网情况下使用百度地图,vue离线百度地图教程,如何实现内网部署百度地图,无需联网离线使用,vue+ts实现离线百度地图 内网离线百度地图,如何在百度地图Vue项目中下载离线地图,百度离线地图加载不出来,百度地图离线使用不显示怎么办,怎么解决vue内网使用离线百度地图加载失败问题,vue实现离线地图+百度瓦片,vue引入百度离线地图,vue项目如何使用离线百度地图和自定义地图样式,百度离线地图的下

✅ 精选推荐文章 1万+

POJ 3228 Gold Transportation 并查集

题目来源:POJ 3228 Gold Transportation 题意:有一些金矿要运走存储 求运送的最小最长边 思路:并查集 按边长从小到大排序 如果满足每个连通分量金矿的和小于等于存储的容量 那么就break输出 #include #include #include using namespace std; const int maxn = 210; int f[maxn], r

嗯。 1123

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ 3228 [并查集]

题目链接:【http://poj.org/problem?id=3228】 题意:给出n个村庄,每个村庄有金矿和仓库,然后给出m条边连接着这个村子。问题是把所有的金矿都移动到仓库里所要经过的路径的最大值的最小值。 题解:贪心,把边排序,然后从小到大加边,如果加到某一条边之后,金矿都可以移动到仓库了,那么这条边就是结果。首先明白,如果一些边连接的一些村庄的仓库的总容量大于总金矿数,那么...

weixin_30470643的博客 96

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

poj3228 Gold Transportation 并查集

poj3228 Gold Transportation 思路是并查集。 并查集是在学习最小生成树kruskal算法的时候学习的。 印象比较深。 kruskal是从边的角度进行的得一种贪心算法。 现在这道题其实很类似最小生成树kruskal算法,但是并它要简单得多

Aszxqw 750

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【POJ】3228 Gold Transportation 二分+最大流or并查集

传送门:【POJ】3228 Gold Transportation 题目分析:

poursoul 1268

poj-3228并查集

Gold Transportation Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3823 Accepted: 1366 Description Recently, a number of gold mines have been discovered in Zorroming State. To protect th...

爱草莓的团长的博客 244

poj3228(并查集)

题目一开始题都没读懂,“maximum adjacent distance”把我给整懵了。。。 题意:给一个图,图中一些点有黄金,一些点有放黄金的仓库,但有容量限制,问把所有黄金都能装进仓库的路径中权值最大的那条路是多少。 思路:这道题可以用并查集,先记录输出黄金的城市个数num,并用sum[i]表示第i个点是输出黄金还是输入黄金,把黄金所有量或者仓库存储量都给并查集的头,在合并的时候,出现了输出...

qq_44077455的博客 246

poj 3228 Gold Transportation

Gold Transportation 题目链接:Click Here~ 题目分析:     For each case, output the minimum of the maximum adjacent distance on the condition that all the gold has been transported to the storehouses

YouthDance 1343

POJ 3228Gold Transportation(二分+最大流)

题目地址:POJ3288 这个题跟之前的一道题混了,感觉是一样的,所以连想都没怎么想就拆点然后求最短路然后二分求最大流了。结果连样例都不过,还一直以为又是哪里手残了。。结果看了看样例,手算也确实不对,,。后来就没拆点,直接在原点上建的图,结果样例就过了。。然后提交1次AC。。。 后来仔细的想了想,这题是问每一段路的最短的,而不是整个的最短的。所以说不应该拆点。而我混的那道题(poj2391)是

scf0920 1239

poj 3228 Gold Transportation 并查集

题目链接:http://poj.org/problem?id=3228 题目大意:

e的专栏 706

poj 3228 Gold Transportation 二分+最大流

一道比较经典的网络流题,值得一看

cstdio_hao的专栏 644

poj 3228

#include<iostream>#include<fstream>using namespace std;int n,m,ans;struct e{ int s,t,w;};e edge[40001];int f[401];int cmp(const void *a,const void *b){ return (*(e*)a).w-(*(e*)b).w;}...

weixin_30408165的博客 78
上一篇: poj3723
下一篇: hdu 3594(强连通&判环)
constbh
博客等级 码龄10年 10粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值