关闭
当前搜索:

bzoj 4034: [HAOI2015]树上操作 树链剖分

新博客链接:https://www.everlasting.wang/archives/210...
阅读(46) 评论(0)

bzoj 3251: 树上三角形 暴力

→题目链接← 【想说的话】 啊啊啊啊,搬完博客的第一篇博客 md新博客调了一天,头都大了 【题解】 想一想,可以发现如果答案为no,在int范围内最多只可能同时存在46个数 所以找到lca,判断下路径上的点的个数,如果大于46个就输出Yes,否则暴力判断 【代码】 #include #define MAXN 100010 typedef long lon...
阅读(68) 评论(0)

bzoj 3364: [Usaco2004 Feb]Distance Queries 距离咨询 LCA

→题目链接← 【想说的话】 TLE了3遍后我深刻的认识到了.... 跑最短路果然不可行... 【题解】 显然是裸的LCA 【代码】 #include #include #include #include using namespace std; struct node{ int to,len; node(int x,int y){to=x,len=...
阅读(65) 评论(0)

bzoj 3363: [Usaco2004 Feb]Cow Marathon 奶牛马拉松 树的直径

→题目链接← 【想说的话】 一开始以为还要像前面一题那样搞带权并查集 然后我就不会了... 后来突然发现我zz了 最后一个方向没用了...直接建双向边然后跑树的直径就行了... 幸亏这个题保证边不交叉,要不然就彻底不会了 【题解】 建双向边然后跑树的直径 找树的直径:随便从一个点跑bfs,找到距离它最远的那个点,再从那个点跑bfs,最长路就是树的直径 ...
阅读(71) 评论(0)

bzoj 1232: [Usaco2008Nov]安慰奶牛cheer

→题目链接← 读题就可以看出肯定用最小生成树 只按照边权找到最小生成树后,计算最后的时间是 Σ边权*2+Σ点权*出度+我们要选的过夜的点的权值 然后发现,如果只按照边权找最小生成树是不正确的 因为我们正常跑kruskal的时候每次会将边权*2+两边点的点权加进答案 所以我们可以在排序前把每条边两边点的点权都加进这个边权之中,并且把原边权*2 这样再跑kruskal就每...
阅读(65) 评论(0)

bzoj 3943: [Usaco2015 Feb]SuperBull

→题目链接← 又是一道水题,又是一道翻译及其坑人的题 翻译里每个数是1~230...原文是1~2^30 太差劲了 暴力建边然后跑最大生成树 代码: #include #include #include #include #define ll long long using namespace std; struct node{ int s,t,le...
阅读(81) 评论(0)

bzoj 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复

→题目链接← 裸的最大生成树 写了两种算法,算是模板吧 kruskal: #include #include #include #include #include #define ll long long using namespace std; struct node{ int s,t,len; friend bool operator < (node a,...
阅读(58) 评论(0)

bzoj 3479: [Usaco2014 Mar]Watering the Fields 最小生成树

→题目链接← 裸的最小生成树...只会prim算法 n^2暴力建边 然后跑最小生成树 学了这么长的时间终于第一次写最小生成树 真棒啊 代码: #include #include #include #include #include using namespace std; struct node{ int s,t; int len; node(int x,i...
阅读(98) 评论(0)
    -广告-
    一个极其温馨的提示
    个人资料
    • 访问:48796次
    • 积分:1745
    • 等级:
    • 排名:千里之外
    • 原创:127篇
    • 转载:1篇
    • 译文:0篇
    • 评论:23条
    最新评论