自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Atcoder Beginner Contest 398 A-F

要使回文串的长度减小,就要尽可能构造短的后缀。所以要找出字符串s中的最长回文串且该回文串是在字符串s的末尾。位置(0,0)处有一个烟囱一直出烟,烟也会朝其他位置移动。给定人的位置,判断人是否会被烟覆盖。vector记录数和数的位置,再排序,从大的数开始判断。判断是否有一个数数组中只出现一次,如果有或者有多个,输出最大的那个数的位置。给定一个字符串s,找出以s为前缀的最短回文串。遍历一遍记录他们的个数,在判断是否存在即可。偶环用set存储,每一轮比赛删掉对应的即可。给定n,输出一段长度为n的回文串。

2025-03-22 21:53:54 594

原创 TZOJ 6576 点的距离

先让深度更深的点向上走直到两点深度相同,然后两点一起向上走不断去接近他们的公共祖先。ans记录它们走的路程,并在最后+2表示两点向上一步到达他们的最近公共祖先。树上两点的距离是两个点分别到他们公共祖先的距离。给定一棵 n 个点的树,Q 个询问,每次询问点 x 到点 y 两点之间的距离。接下来 n−1 行,每行两个整数 x,y表示 x,y 之间有一条连边;接下来 Q 行每行两个整数 x,y 表示询问 x 到 y 的距离。对于全部数据,1≤n≤105,1≤x,y≤n。给定树上的两点,求两点间的距离。

2025-03-19 21:30:05 359

原创 TZOJ 9045 Pearls

再遍历l时, 右边的值是已知的。而要找出每个l所对应r的个数,只需把左边式子的值放在值域树里,就可以用logn的时间复杂度找到合法的r。通过遍历所有的左端点,再快速的找出相对应的右端点,就能以nlogn的时间复杂度解决题目。为了避免在找r时,r的位置在l左边这种情况。可以从后往前遍历,一边插入r对应的值,一边查找。当l和r满足上述式子时,就说明l+1到r这一段的子序列是合法的。给定一段序列,求出其中平均数大于k的公共子序列个数。题中的值域比较大,可以动态开点或者离散化。

2025-03-13 17:59:17 800

原创 POJ-2442 Sequence(优先队列+DFS剪枝)

第一次跑的最坏结果大约是1e6,所以dfs最多走1e6条路,而每条路最多有100个点,所以dfs最多跑1e8次。假设遍历到第k层,当前状态所能到达的最小序列和tmp=前面dfs经过的数字和+b[k]。题意:有m行数列,每个数列有n个值,每行序列中选取一个值可以组成n^m种不同的序列,求前n小的序列和。先对每行排序,b数组记录第一列从后往前的前缀和,用来计算dfs到该层时的所能到达的最小序列和。大致思路:使用dfs在每层选取一个数去走完所有的可能。遍历完之后和队头比较,如果小于队头,top弹出并塞入这个和。

2025-02-25 19:14:27 381

原创 TZOJ 8940 公共子序列

b[j]时,dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1]。而dp[i - 1][j]表示的是 跟b[j]相关的公共子序列的对数+a数组的前i-1个数和b数组的前j-1个数中公共子序列的对数,dp[i][j-1]表示的是 跟a[i]相关的公共子序列的对数+a数组的前i-1个数和b数组的前j-1个数中公共子序列的对数。当a[i] == b[j]时,dp[i][j]要在前面的基础上加上dp[i - 1][j - 1] + 1。

2025-02-11 13:26:44 427

原创 AtCoder Beginner Contest 389 A-E

同时因为答案可能出现在ab段之间的位置,而二分也无法到达该位置,可以在mid指针指向b时,用剩下的钱尽可能地去购买等于mid价格的产品去到达ab之间的位置。以其中一个正方形的中心为圆心,画一个半径为 R 的圆,求有多少个正方形完全包含在圆内。有n种商品,m元钱,购买k件第j种商品的价格是k*k*a[j],求最多买几件商品。观察到还没购买的最便宜的商品的价格随着件数的上升而上升。先考虑暴力的思路:一直挑最便宜的买,买到最后一定是件数最多的情况。维护一条蛇队列,有添加蛇,删除蛇,询问某条蛇的位置三种操作。

2025-01-19 20:24:25 525

原创 Atcoder Beginner Contest 383 A~E

flag1【x】记录以x点为祖先,他的儿子中属于a集合的数量。原理很简单,因为关于b有(x+1)种可能,关于c有(y+1)种可能.....所以a的因数有(x+1)*(y+1)*(z+1)种可能。比如a=b**x+c**y+d**z(b,c,d为质数),那么a的因数个数=(x+1)*(y+1)*(z+1)。因数为9时,他的组成有3*3和1*9这两种可能,即找出由两个质数的平方的积或者一个质数的八次方组成的数有几个。给定a,b两个集合,可以随便变换顺序,求使a集合中的点一一匹配b集合中的点时所需的最小权重和。

2024-12-09 13:59:01 1443

原创 TZOJ 7573 通讯网络

XXX乡有n个村,政府希望在每个村设立一个通讯基站,使得各个村之间可以能够联络(只要两个村之间有直接或间接的线路即可连通)。何时AC才无需相连:只要保证其他的两条边比AC短即可(因为连接三点只需要两条边)即AB

2024-07-27 00:42:40 783

原创 atcoder361 A~E

他的路径数为n-1条,可以将图想象成一棵树,那么从一点去遍历这颗树再回到起点所需路程是所有路径×2.而题目没有要求回到起点,意味着从起点到其中一个叶子节点的路程是可以省略的,那么我们尝试去求出其中两叶子结点的最大距离,也就是求二叉树的直径,便能得出答案。相当于在序列中选取N-k个元素,使其中最大值减去最小值的结果最小,贪心的想,排序后连续的一段是最优的,所以先排序,然后遍历每一段长度为n-k的序列。给定一个长度为N的序列A,在删除k个元素后求出最小值ans=序列中的最大值-序列中的最小值。

2024-07-07 14:16:43 1419 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除