这个题,,dfs即可

但听说dfs会爆栈,还会被卡、

所以就写了一个拓扑、

noi2011很良心啊

码(不知为何,非常的慢):

#include<cstdio>
#include<cstring>
using namespace std;
#include<queue>
#include<cmath>
#define N 1000006
#define ll long long
queue<int>q;
int bian[N][3],tot,hou[N<<1],xia[N],zhong[N<<1],v[N<<1],rd[N],n,i,x,y,z,f[N],sd[N];
bool vis[N];
ll ans;
void jian(int a,int b,int c)
{++tot,hou[tot]=xia[a],xia[a]=tot,zhong[tot]=b,v[tot]=c;rd[b]++;
}
void jia(int a,int b,int c)
{
jian(a,b,c);
jian(b,a,c);
}
int main()
{memset(xia,-1,sizeof(xia));scanf("%d",&n);for(i=1;i<n;i++){scanf("%d%d%d",&x,&y,&z);jia(x,y,z);  bian[i][0]=x;bian[i][1]=y;bian[i][2]=z;  }
for(i=1;i<=n;i++)
{f[i]=1;sd[i]=1;
if(rd[i]==1)q.push(i),vis[i]=1;
}   while(!q.empty()){int st=q.front();q.pop();for(i=xia[st];i!=-1;i=hou[i])        {int nd=zhong[i];if(vis[nd])continue;f[nd]+=f[st];sd[nd]=max(sd[nd],sd[st]+1);rd[nd]--;if(rd[nd]==1){q.push(nd); vis[nd]=1;}}       }for(i=1;i<n;i++){if(sd[bian[i][0]]>sd[bian[i][1]])swap(bian[i][0],bian[i][1]);ans+=1ll*fabs(n-2*f[bian[i][0]])*1ll*bian[i][2];}printf("%lld",ans);
}

2017.9.21 道路修建(noi2011) 思考记录相关推荐

  1. 2017.9.1 公路修建问题 思考记录

    竟然一遍A了湖南省选题.感人至深 这个题一看便知是要二分的. 所以剩下的就是利用构造树来检验 首先,对于c1,我们可以求一颗最小生成树,来保留尽可能多的边(因为大于检验值的都不合法,需要删掉,为了让保 ...

  2. 2017.3.21 树网的核 思考记录

    把这个noip的题搞出来了.. 不是很难,而且我的要求也比较高(虽然以前看到这种题都是直接看题解,因为太复杂不会) 虽然搞出来在luogu 的noip数据 A了,但bzoj还是T了.理论上应该是O(n ...

  3. 2017.5.11 道路修建 思考记录

    这个线段树一眼秒了(主要是有前面的思考经验) 就是维护两个列对应线段上的形态.,比较好想的 但数据结构题有个特点--使你知道结构也不会做----会做也会很大概率爆零.... 所以数据结构题必须 小数据 ...

  4. 2017.10.5 最短母串 思考记录

    这个题n<=15,可以用10表示选取情况下的最优值 预处理两个串之间的连接关系,然后枚举状态转移 然而这个题还要输出方案,,而且还不让你开空间. 所以只能记录前继动态判断.. 所以十分难写难调 ...

  5. 2017.9.26 块的计数 思考记录

    这种题就属于那种描述很简单,要求很简单,但就是无从下手的题 这个题我只有n根n做法..枚举因数检验.. 首先对于任何块的大小,方案唯一,这是显然的,,如果划分位置改变1,一定有一个位置+1,一个位置- ...

  6. 2017.8.8 魔兽地图DotR 思考记录

    假题害人..  明明说了是一棵树,却还要强行加一组坑爹数据   所以网上的题解挂了好多 这题是很综合的树上背包问题. 由依赖关系转化为一些枚举来跑多重背包 由于是 "一棵树" 所以 ...

  7. 2017.3.27 生成魔咒 思考记录(有史以来最不容易)

    做了三天,实在太坑了 终于100文章了 这个题要求每次在单词的末尾加一个字母,再查询本质不同的串的个数.. 既然是子串满足连续性,那就可以后缀数组+lcp搞了: 具体计算方式: 由于后缀数组的开头是包 ...

  8. 2017.3.25 魔术球问题 思考记录

    这个题还是不难的..(想了20分钟就出完解) 二分+网络流检验,,能加在上面的数大的向小的连边 总点数-最大匹配>n    :{l=mid+1,      记录答案       } else   ...

  9. 2017.10.23 chess 中国象棋 思考记录

    这种题的一般解法: 1. 发现状压可以搞,然后发现状态爆炸 2.考虑状态特点,一共只有几种可能的状态 3.考虑可不可以只对状态进行计数 4.离散统计贡献 码: #include<iostream ...

最新文章

  1. 《千只鹤》--[日]川端康成
  2. 顶会抄顶会?SIGIR论文作者回应质疑,ACM主席已介入
  3. MySQL中的组合索引
  4. OpenCV检测计算并匹配BRISK和AORB KAZE描述的实例(附完整代码)
  5. 固定在左右两侧不动的广告条 样式
  6. python如果选择不在列表里_Python-list.remove(x)x不在列表中
  7. java访问其它服务器,一个Java Web应用程序是否可以在tomcat服务器的同一本地主机中调用另一个Java Web应用程序...
  8. vba 自动排序_Excel表格自动排序,神了!
  9. ROS2入门教程—录制/回放数据
  10. 电脑技巧:Win10操作系统关闭这几个功能,可以大幅度提升电脑的运行速度
  11. 信息系统分析与设计 机票预定管理系统
  12. Cesium渐变色3dtiles白模(视频)
  13. .Net Core跨平台 图片验证码
  14. Android-图像识别项目OpenCV(2):运行官方例子中的脸部识别程序
  15. 基于RT1052 Aworks使能U盘功能(十九)
  16. Blender(win)渲染参数设置解析
  17. 数据仓库-dws层表的分区规划
  18. 【Mac使用技巧】Mac中文输入法打不出来句号
  19. 修改Colibri主题的页尾copyright信息——webpack建站小技巧(一)
  20. 小米手机广告关闭入口汇总

热门文章

  1. php 判断编码 错误,请教一个 PHP 代码出错的原因(一个简单的计算器)
  2. 关于VGG模型文件的存放位置
  3. 【java基础知识】java打包运行时显示控制台内容
  4. 使用Notepad++作为Latex编辑器
  5. endwith php,endwith函数怎么使用
  6. jdbc mysql 存储过程查询数据_jdbc调用mysql存储过程实现代码
  7. 奥数 python_奥数赛事china夺得冠军!简单思路用Python解经典数学题
  8. php中头部含义,PHP 常用的header头部定义汇总大全
  9. Java摇骰子比大小_还在摇骰子比大小?这几款火热的KTV喝酒游戏你值得收藏
  10. Postman脚本发送请求pm.sendRequest