摘要: 题目链接: "Click here" Solution: 直接做似乎不太可行,我们考虑二分 我们设$f[x]$表示以$x$为根的子树中选择了的节点到$x$的距离的最小值,初值为$inf$ $g[x]$则表示以$x$为根的子树中还未覆盖的关键点到$x$的距离的最大值,初值为$ inf$ 考虑如何转移, 阅读全文
posted @ 2019-10-04 11:20 DQY_dqy 阅读(133) 评论(0) 推荐(1) 编辑
摘要: 题目链接: "Click here" Solution: 题目只要求覆盖叶子节点,那么我们先找到所有没被覆盖的叶子节点 我们把叶子节点按照到服务端的距离从大到小排序,然后贪心的找到它向上第k个祖先即可(因为先覆盖较小的显然不会覆盖到较大的,而先覆盖较大的却有可能覆盖较小的) Solution: cp 阅读全文
posted @ 2019-10-03 15:34 DQY_dqy 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 直接做看起来很难,我们考虑二分答案之后再来检验 显然,我们事实上只需要在根节点的儿子上都驻扎军队就行了,那么我们就得到了一个贪心策略,将军队尽可能向上提 但是因为根节点不能驻扎军队,所以我们考虑哪些到达根节点还有余力的点该怎么处理 对这些还有 阅读全文
posted @ 2019-09-29 16:32 DQY_dqy 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 看起来是贪心,其实不然。。。 我们定义$f[i]$表示 仅 覆盖$1\sim i$所需要的最小代价,那么对$i$为0的点来说,易得$f[i]=min(f[i],f[i 1]+i)$ 考虑当$i$为1时怎么办,当$i$为1时,根据定义,我们不转 阅读全文
posted @ 2019-09-23 15:00 DQY_dqy 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 题面描述: 数据范围: Solution: 我们发现$v$很小,但是$M$很大,考虑转化一下一般的背包 我们用$f[v]$来表示拿到价值为$v$的物品需要付出的最少代价,特别的,当$v$无法被凑出来,它需要用获得更大价值的代价来填充 那么此时我们发现,他是一个单调上升的函数,则我们把物品和询问按照时 阅读全文
posted @ 2019-09-21 12:16 DQY_dqy 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 概率与期望,首先就应该想到dp,dp的原则就是不行就加一维 那么我们就能想到$f[i][j][0/1]$表示现在是第$i$节课,已经申请了$j$次,$0/1$表示这节课有没有申请 因为是最短距离,所以我们要先跑一遍$Floyd$求出两点之间的 阅读全文
posted @ 2019-09-18 10:27 DQY_dqy 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 首先orz "@WYBIACX" ,蒟蒻本来不怎么会,看了大佬题解才会 写完这题后有所收获,所以特此总结一下 对于每条路径,我们可以把它拆成$u\rightarrow lca(u,v)$和$lca(u,v)\rightarrow v$来考虑 阅读全文
posted @ 2019-09-16 16:20 DQY_dqy 阅读(191) 评论(2) 推荐(2) 编辑
摘要: 题目链接: "Click here" Solution: 最小值最大,显然二分,二分出mid后贪心去除石头,判断m次内是否可行即可 Code: 阅读全文
posted @ 2019-09-14 16:57 DQY_dqy 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 统计方案,第一时间就应该想到dp 设$f[i][j][k][0/1]$表示在$A$串到第$i$个位置,现在要匹配$B$串的第$j$个位置,拿出了$k$个子串的方案 其中最后一维表示$i$这个位置选不选,易得初始状态$f[i][0][0][0] 阅读全文
posted @ 2019-09-14 16:06 DQY_dqy 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 我们要使最大值最小,显然二分 二分一个最大值,小于等于最大值的路径就不用管了,看大于最大值的路径 记录要使剩下的路径的最大值小于等于当前二分的值,要减去的最小边长maxd 然后我们就是要查找是否有一条被剩下的所有路径都经过的,长度大于等于ma 阅读全文
posted @ 2019-09-14 11:17 DQY_dqy 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 简介: 数学上,高斯消元法(英语:Gaussian Elimination),是线性代数中的一个算法,可用来为线性方程组求解,求出矩阵的秩,以及求出可逆方阵的逆矩阵。当用于一个矩阵时,高斯消元法会产生出一个行梯阵式。 以上引自维基百科。。。 原理: 我们可以把一个$n$元$1$次方程表示成一个$n$ 阅读全文
posted @ 2019-09-13 20:03 DQY_dqy 阅读(229) 评论(0) 推荐(0) 编辑
摘要: T1: 避难向导 (shelter.cpp 1s 256M) “特大新闻,特大新闻!全国爆发了一种极其可怕的病毒,已经开始在各个城市 中传播开来!全国陷入了巨大的 危机!大量居民陷入恐慌,想要逃到其它城市以 避难!经调查显示,该病毒来自于C 市的A 学校的一次非法的… …” “哎。”你关上电视,叹了 阅读全文
posted @ 2019-09-09 16:44 DQY_dqy 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 题目描述十分冗长,实际上就是给你一棵树,问你最少增加多少次边权,使得所有叶子节点到根节点距离相等 有一个十分显然的结论:最后的距离为不增加边权的最大距离 则我们可设$f[x]$表示$x$节点与$fa[x]$相连的边需要加多少权值 易得状态转移 阅读全文
posted @ 2019-09-07 19:54 DQY_dqy 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 设$f[i][j]$表示以$i$为根的子树保留$j$条边的最大值 得到转移式:$f[i][j]=max(f[i][j],f[i][j k 1]+f[son_i][k]+val[i][son_i])$ 用vector来存每个点的儿子,倒着转移即 阅读全文
posted @ 2019-09-06 13:17 DQY_dqy 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 题目链接: "Click here" Solution: 最小值最大,考虑二分一个答案$k$ 考虑在子树内先匹配,最后传递一个值给自己的父亲(因为每条边只能用一次,所以一颗子树最多传递一个值) 那么我们就可以用一个$multiset$来存子树的传递值,然后匹配,将剩下的边传递上去就行了 Code: 阅读全文
posted @ 2019-08-30 09:25 DQY_dqy 阅读(166) 评论(0) 推荐(0) 编辑