热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

次小生成树最小度限制生成树

首先说明这是一个坑!因为发现啊次小生成树为什不用树链剖分写(虽然麻烦但是思路各种清晰!),最小度限制生成树可以用lct写(而且是似乎要比那个直接写的算法容易因为要各种建边删边dfs(就没有考虑过

 

 

首先说明这是一个坑!

 

因为发现啊次小生成树为什不用树链剖分写(虽然麻烦但是思路各种清晰!)最小度限制生成树可以用lct写(而且是似乎要比那个直接写的算法容易因为要各种建边删边dfs(就没有考虑过时间么)!!!!)!!!(好像是错的)

(因为是自己傻叉写不出来)

 (半小时后觉得还是自己傻叉了……下面那个代码应该继续敲就行了,一个是最小生成树还没快排,然后在求最小度限制生成树时用邻接矩阵比较简单(反正时间复杂度也是o(n²)),然后每次就直接dfs一遍,dfs的时候传两个参,一个是这个节点,一个是父亲节点,这样方便待会直接在邻接矩阵里面删点。然后真的就是暴力for一边(这样不就不如lct?)枚举下哪个点是和源点相连且边还没被用过的且边值<原树到这个点的值)

然后找了一下题似乎特别特别少!为了个无聊的东西砸了两天太不值得了!所以弃坑!!!!(gdoi只剩137天但是我还在浪费时间……)

 

然后就把敲一半的失败的程序发上来吧!

function find(s:string):longint;
var
i,u:longint;
begin
u:
=1;
for i:=1 to length(s) do begin
if trie[u][s[i]]=0 then begin
inc(total);
trie[u][s[i]]:
=total;
end;
u:
=trie[u][s[i]];
end;
if hash[u]=0 then begin
inc(tot);
hash[u]:
=tot;
end;
exit(hash[u]);
end;


procedure qsort(l,r:longint);
var
i,j,k,mid:longint;
begin
i:
=l;
j:
=r;
mid:
=root[random(r-l)+l].value;
repeat
while root[i].valuedo inc(i);
while root[j].value>mid do dec(j);
if i<=j then begin
swap(root[i].value,root[j].value);
swap(root[i].too,root[j].too);
inc(i);
dec(j);
end;
until i>j;
if ithen qsort(i,r);
if lthen qsort(l,j);
end;

procedure into;
var
ss,s:string;
i,j:longint;
begin
readln(n);
tot:
=0;
ss:
='Park';
find(ss);
for i:=1 to n do begin
readln(s);
j:
=1;
while s[j]<>' ' do inc(j);
name1:
=find(copy(s,1,j-1));
delete(s,
1,j);
j:
=1;
while s[j]<>' ' do inc(j);
name2:
=find(copy(s,1,j-1));
delete(s,
1,j);
val(s,j);
if name1>nam2 then swap(name1,name2);
if name1=1 then begin
inc(tot1);
root[tot1].too:
=name2;
root[tot1].value:
=j;
end
else add1(name1,name2,j);
end;
qsort(
1,tot1);
for i:=1 to tot do fa[i]:=i;
readln(m);
end;

procedure work;

begin
for i:=1 to tot2 then
while e[i] do
if find(too1)<>find(too2) then begin
sum:
=sum+value;
fa[find(too1)]:
=too2;
add2(too1,too2);
add2(too2,too1);
end;
sum1:
=0;
for i:=1 to tot1 do
with root[i] do
if find(too)<>i then begin
inc(sum1);
add2(i,too);
sum:
=sum+value;
fa[find(too)]:
=i;
end;
if sum1>m then begin
writeln(
'worry');
exit;
end;
if sum1=m then begin
writeln(sum);
exit;
end;
ans:
=sum;
for i:=1 to n do d[i]:=mm;
d[
1]:=-1;
i:
=first[1];
while i<>0 do
while e2[i] do begin
d[too2]:
=-1;
i:
=next;
end;
dfs(
1);
for i:=sum1+1 to m do begin
k:
=mm;
l:
=0;
for j:=1 to tot1 do
with root[j] do
if (d[too]>0) and (d[too]-value>k) then begin
k:
=d[too]-value;
l:
=too;
end;
sum:
=sum-k;
if sumthen ans:=sum;
fa[max[too]]:
=

begin
into;
work;

 


推荐阅读
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
author-avatar
乐檬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有