上一页 1 2 3 4 5 6 7 8 9 10 ··· 32 下一页
摘要: #hdu2586 How far away ? 题目链接 ##题目大意 询问树上两点距离 ##解题思路 树剖求lca,\(dis(a,b) = dis(rt, a)+dis(rt, b)-dis(rt, lca(a, b))\times 2\)。 ##代码 const int maxn = 1e5+ 阅读全文
posted @ 2021-05-12 21:18 shuitiangong 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解法1:点分治+归并排序+二分 对于当前的重心,首先对其一棵子树求距离,然后二分之前的子树中符合条件的距离的数量,然后用归并来降低排序的时间复杂度。 #代码 const int maxn = 1e4+10; int n, m, rt, tot, tota, totb, t 阅读全文
posted @ 2021-05-07 21:33 shuitiangong 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 随机游走问题的变形,给你每一步向左走和向右走的概率,问第n步走到的最远距离的期望。 #解题思路 直接求期望不太好做,不过可以先求出概率,设$dp[i][j][k]$表示第i步在j位置,最远走到了k位置,那么第i+1步可能是第i步向左走,向右走,原地不动三种情况转移过来的。我们分 阅读全文
posted @ 2021-04-28 20:50 shuitiangong 阅读(120) 评论(0) 推荐(1) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 最终的结果可以用数字,减号与括号表示,如果把所有的括号去掉,就得到了一个由数字,加法与减法组成的式子,可以想到,对于每一个数字,都有加上它或者减去它两种情况,很明显可以用01背包来解决。需要注意的一点是,第一个数字前头没有符号,而第二个数字肯定是被减的。 那么怎 阅读全文
posted @ 2021-04-17 21:02 shuitiangong 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给你一个字符串s,问长度为2n并且s为其子串的字符串有多少个。 #解题思路 一开始我想了几种状态方案,都有重复的情况,后来看了题解才知道还能这样做。我们设dp数组为dp[i][j][k],分别表示在长度为2n的字符串的第i位,括号序列的匹配度为j(遇到左括号+1,遇到右括号-1 阅读全文
posted @ 2021-04-14 20:13 shuitiangong 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 略 #解题思路 用两个栈来处理,一个栈处理操作数,一个栈处理数字,如果当前的操作数的优先级不大于栈顶的优先级的话,那么前面的就可以先算出来。 一些细节: 1.因为题目中可能会有右括号比左括号多的情况,所以先在左边加上和字符串等长的左括号。 2.为了让最后所有的数字变成一个数,在 阅读全文
posted @ 2021-04-11 11:17 shuitiangong 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 求树上每个点到其他点的最大距离。 #解题思路 首先随便选择一个顶点作为根然后跑一遍dfs,记录每个顶点以其为根能到达的最大深度和次大深度,然后再跑一遍dfs,对于每个顶点,如果要到达一个距离最大的点,要么就是原来中的子树中的距离最大的点,要么就是经过父节点的某个点。 #代码 # 阅读全文
posted @ 2021-04-01 21:39 shuitiangong 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 你可以在一棵数的边上填上$0~n-2$中的一个数,每个数只用一次,问树上任意两个不同点的mex(u, v)之和是多少?mex(u,v)代表两点之间的简单路径上没有出现的最小的非负整数。 #解题思路 对于任意一条路径,如果不包含权值为0的边,那么结果必定为0,所以我们从一条权值为 阅读全文
posted @ 2021-03-17 21:35 shuitiangong 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 有n个人,两局比赛,每场比赛每个人的得分构成一个排列,现在一个人两场的得分是x与y,问这个人最少/最多排第几名,相同分数的人并列,并且询问的人在相同分数的人中排最后。 #解题思路 先考虑最靠后的排名,如果想让这个人排名尽可能的靠后,那么就让尽可能多的人排在他的前面~~(废话)~ 阅读全文
posted @ 2021-03-17 21:07 shuitiangong 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 题目链接 #题目大意 给n个数,你可以使每个数的值减小(最小减到1),问把这n个数改成没有左右两个数都大于中间数的情况最少需要减去多少。 #解题思路 先考虑暴力解法,枚举每个数作为最大的那个数,然后分别从左右两个方向开始,如果当前的数字大于之前的数字,就将他改成之前的那个数。 然后我们可以考虑dp来 阅读全文
posted @ 2021-03-17 20:35 shuitiangong 阅读(70) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 32 下一页