专题四1008

题意:找到一个这样的图,在这个图中,最多有一个环。使得所有的边的和最大

解题思路:

贪心+并查集。首先把边排序,然后开始分类讨论。对于边ab(含有两个端点ab)如果a,b是属于两个不同的集合 , a b 是两个环中的点,则放弃aba b 有一个是环,则把环当做另一个的祖先,之后在回溯祖先的时候,能找到该点是在某个环中。

感想:要考试了,心好累啊。。。

AC源码:

#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
const int maxn = 10005;
const int maxm = 100005;
     struct node{
         int u,v,val;
     }edge[ maxm ];
     int fa[ maxn ],circle[ maxn ];

     int find( int x ){

         if( fa[x]==x ) return x;

         fa[x] = find(fa[x]);

         return fa[x];

     }

     bool union_ab( int x,int y ){

         int fax = find(x);

         int fay = find(y);

         if( fax==fay ){

             if( circle[ fax ]==-1 ){

                 circle[ fax ] = 1;

                 return true;

             }

             return false;
         }

         else{

             if( circle[ fax ]==circle[ fay ]&&circle[ fax ]==1 )

                 return false;

             if( circle[ fax ]==1 )

                 fa[ fay ] = fax;

             else

                 fa[ fax ] = fay;

             return true;

         }

     }

     void init( int n ){

         for( int i=0;i<n;i++ ){

             fa[i] = i;

             circle[ i ] = -1;

         }

     }

     int cmp( node a,node b ){

         return a.val>b.val;

     }

     int main(){

         int n,m;

         while( cin>>n>>m &&(n||m)){

             for( int i=0;i<m;i++ )

                 cin>>edge[i].u>>edge[i].v>>edge[i].val;

             init( n );

             sort( edge,edge+m,cmp );

             int ans = 0;

             for( int i=0;i<m;i++ ){

                 if( union_ab( edge[i].u,edge[i].v) )

                     ans += edge[i].val;

             }

            cout<<ans<<endl;

         }

         return 0;

     }




Problem H

Time Limit : 10000/5000ms (Java/Other)   Memory Limit : 65536/65536K (Java/Other)
Total Submission(s) : 39   Accepted Submission(s) : 15
Problem Description
In graph theory, a pseudoforest is an undirected graph in which every connected component has at most one cycle. The maximal pseudoforests of G are the pseudoforest subgraphs of G that are not contained within any larger pseudoforest of G. A pesudoforest is larger than another if and only if the total value of the edges is greater than another one’s.<br><br>
 

Input
The input consists of multiple test cases. The first line of each test case contains two integers, n(0 < n <= 10000), m(0 <= m <= 100000), which are the number of the vertexes and the number of the edges. The next m lines, each line consists of three integers, u, v, c, which means there is an edge with value c (0 < c <= 10000) between u and v. You can assume that there are no loop and no multiple edges.<br>The last test case is followed by a line containing two zeros, which means the end of the input.<br>
 

Output
Output the sum of the value of the edges of the maximum pesudoforest.<br>
 

Sample Input
   
3 3 0 1 1 1 2 1 2 0 1 4 5 0 1 1 1 2 1 2 3 1 3 0 1 0 2 2 0 0
 

Sample Output
   
3 5
 


【激光质量检测】利用丝杆与步进电机的组合装置带动光源的移动,完成对光源使用切片法测量其光束质量的目的研究(Matlab代码实现)内容概要:本文研究了利用丝杆与步进电机的组合装置带动光源移动,结合切片法实现对激光光源光束质量的精确测量方法,并提供了基于Matlab的代码实现方案。该系统通过机械装置精确控制光源位置,采集不同截面的光强分布数据,进而分析光束的聚焦特性、发散角、光斑尺寸等关键质量参数,适用于高精度光学检测场景。研究重点在于硬件控制与图像处理算法的协同设计,实现了自动化、高重复性的光束质量评估流程。; 适合人群:具备一定光学基础知识和Matlab编程能力的科研人员或工程技术人员,尤其适合从事激光应用、光电检测、精密仪器开发等相关领域的研究生及研发工程师。; 使用场景及目标:①实现对连续或脉冲激光器输出光束的质量评估;②为激光加工、医疗激光、通信激光等应用场景提供可靠的光束分析手段;③通过Matlab仿真与实际控制对接,验证切片法测量方案的有效性与精度。; 阅读建议:建议读者结合机械控制原理与光学测量理论同步理解文档内容,重点关注步进电机控制逻辑与切片数据处理算法的衔接部分,实际应用时需校准装置并优化采样间距以提高测量精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值