自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round 888 (Div. 3)G. Vlad and the Mountains(Kruskal重构树,离线并查集)

然后是Kruskal重构树操作,对于每个询问,将小于当前询问最高高度的边加入最小生成树中,全部加入后,判断当前询问的两个点是否连通,将结果存入答案数组中。给出q 个询问,每个询问包含起点s,终点t,能量e,能量值在移动的过程中不能低于0,问能否从s走到t。首先分析题目,对于是否能从点s走到点t,只需要考虑点s到点t的路径中高度最高的山的高度即可,即h。我们只考虑路径中高度最高的山的高度,因此可以把每一条边的边u,v权设为max(h。+e,然后将每条边的边权和每次询问的最高高度进行排序`

2024-02-28 21:09:22 392

原创 Codeforces Round 551 (Div. 2)D. Serval and Rooted Tree(树形dp)

给定一个有n个结点的以1为根的树,每个结点上有一个操作类型0或1,0表示min,1表示max,表示这个节点中的值应该分别等于其子节点中所有值的最大值或最小值。三.如果这个节点是min,若它的儿子i 的排名为k ,则先给它分配k个还没有被分配的最优的数据,剩下的数据随便分,得到它的排名最小为它所有儿子的排名之和。二.如果这个节点是 max,则它的排名最小为它所有儿子的排名的最小值,最小值当我们给排名最小的儿子的子树分配最大的数据时得到。一.叶子节点:叶子节点为边界状态,没有子节点,全部设为1。

2024-02-24 01:53:12 323

原创 Codeforces Beta Round #19 B. Checkout Assistant(背包dp)

每件商品价值 c[i] 元,要花 t[i] 秒扫描。当收银员扫描某件商品时,Bob会打掩护偷走某些其它商品,偷走一件商品要1秒。全部偷过来,在扫描到物品k时,t[k]+1可能已经超过了n,我们不需要全部偷过来了,我们要求的答案是买n件物品所需的最小花费,因此背包的最大容量为2*n、如果每个物品扫描时间均为0,则不能偷走其他物品,每个物品都需要付钱,上限为2000*1e9=1e12,所以答案初始值要设置为1e12。为了尽可能地得到更多的物品,会将能偷到的t。商品递给收银员的顺序,由 Bob 决定。

2024-02-23 22:11:20 314

原创 Codeforces Round #918 (Div. 4)G. Bicycles(分层图最短路)

每到达一个城市,我们有两个选择:换车或者不换车。我们可以建一个分层图,需要求最短的时间,可以用dijkstra求出最短路, 在松弛时对换车或者不换车进行操作即可。给定一个n 个点(城市),m 条边的无向联通图。每到一个城市可以买一辆自行车。第i个城市购买的自行车有一个慢度系数s。每到一个城市可以任意选择是否更换自行车。如果骑着这辆自行车通过边权为w 的边,则需要 w×s。n 号城市所要的最短时间。

2024-02-23 21:04:44 382

原创 Educational Codeforces Round #46 D. Yet Another Problem On a Subsequence(动态规划,组合数学)

可以考虑用动态规划来解决问题,设置dp数组,其中dp[i]表示前i项中好数组的数量,设当前下标为i,对i+a[i]之后的数组进行更新,当前的数组以a[i]开头,可以在i~j的范围内选择a[i]个数组成子序列,然后与前面的好数组进行拼接,由dp[i-1]种方案,若不拼接,方案数为1种,共dp[i-1]+1种拼接方案,根据乘法原理。共有dp[j]+c[j-i][a[i]]*(dp[i-1]+1)种好数组,由此的到状态转移方程为。种选择,考虑到一个“好序列”是可以分为若干个“好数组”的序列,我们可以从a。

2024-02-22 23:38:15 328 1

原创 Codeforces Round #895 (Div. 3)F. Selling a Menagerie(拓扑排序,贪心)

根据贪心的思想,对于不被任何动物害怕的动物,我们可以最先卖出它们,对于剩下来的动物,我们可以重复这个过程,先把害怕它的动物卖掉,最后再卖掉它。动物园里有n个动物,第i个动物害怕第 a。,则获得的价格将乘以2,也就是 2×c。现在我要将这些动物全部卖掉。个动物,第i个动物价值 c。若买出i之前未卖出a。

2024-02-22 22:18:45 331 1

原创 Codeforces Round #606 (Div. 1)B. Two Fairs(图论,组合数学)

给出一张有 n 个结点、m 条边的无向联通图,同时给出a,b两个特殊点,询问图上有多少对点满足从一个点到另一个点都必须经过这两个重要点,即求出任意一条从u到v的路径都经过a和b的二元组 (u,v) 的对数。假设被标记的点的数量为na,那么未被标记的点的数量为n-na,注意a点是不能选中的,所以满足要求的点为n-na-1。我们可以从b点开始进行dfs,碰到a点就返回,剩下未被标记的点就是走到b点是必须经过a点的点。显然图中标红的点走到b点是必须经过a点的,那么如何找到这些点呢?

2024-02-22 19:20:22 327 1

原创 Codeforces Round 841 (Div. 2)C. Even Subarrays(位运算,数学)

给定一段序列,求有多少个连续子区间满足:区间异或和的因子数量为偶数(规定0的因子数量为奇数)。前置知识:平方数的因子数量为奇数,其他数的因子数量均为偶数。最后用子区间总数减去异或和为平方数的区间数量即可。因此只需要算出有多少个区间的异或和为平方数即可。由异或的性质:a⊕b=c⇔a⊕c=a,可得s。⊕p⋅p的数量求出区间的异或和为平方数的数量。由异或的性质,整个数组的异或和不会超过2*n。我们可以先求出前缀异或和s,即s。求出区间异或和,进而得到s。

2024-02-19 23:55:28 382 1

原创 Codeforces Round 900 (Div. 3)F. Vasilije Loves Number Theory(数学)

分析题目,由于gcd(a,n)=1,推出a,n不可能有相同的质因子,因此d(n⋅a)=d(n)⋅d(a),而a只需要取整数个对n质因数分解得不到的质因子即可达到,所以只需要考虑n是否是d(n)的整数倍即可。首先开两个map,分别为mp和now,mp用来维护原始n的质因子个数,now用来存当前n⋅x的质因子个数,这样就不用每次都算一遍n⋅x的质因子,直接对x进行质因数分解即可。例如:对72进行质因数的分解,得到2,2,2,3,3。:令 d(x) 表示 x 的正因子数量,给定 n,q。然后对n进行质因数分解。

2024-02-19 23:00:47 377 1

原创 Educational Codeforces Round 135 (Rated for Div. 2)D. Letter Picking(区间dp)

先从小区间考虑,加上两个字符后再作判断,由此拓展到n,考虑用区间dp来维护小区间的胜负。在一次行动中,玩家可以取 s 首或尾字符,将其从s 中移除后加入到自己的字符串的最前面。给出一个长度为偶数的,非空的且仅含小写字母的字符串 s。当 s 为空时游戏结束,拥有字典序更小的字符串的玩家获胜。若 Alice 和 Bob 都足够聪明,判断谁会取胜,或者游戏为平局。dp[1][n]为0 Alice 赢,为 1平局,为 2 Bob 赢。考虑令 Alice 赢为 0,平局为 1,Bob 赢为 2。

2024-02-19 18:44:48 344

原创 Codeforces Round 682 (Div. 2)D. Powerful Ksenia(位运算,构造)

n为偶数有解时,可以先对前面n-1个数进行操作,把数组构造成[a,a,b,b,c,c,c,e]的形式,操作次数为(n-2)/2 次,然后同奇数把前n-1个数操作成相同的数,操作次数为(n-4)/2次,因为此时有解,所以此时最后一个数一定与前面n-1个数相等,不用考虑。.当n为奇数时,假设n为5时,原数组为[a,b,c,d,e],可以采取以下步骤构造,[a,b,c,d,e] -> [x,x,x,d,e] -> [x,x,y,y,y],此时由于x⊕x⊕y=y,可以选择索引1,2,5操作,使得所有数相等。

2024-02-19 17:51:10 335 1

原创 Codeforces Round #920 (Div. 3) F. Sum of Progression(根号分治)

*题目大意:**给你一个由 n个数字组成的数组 a。还有 q个形式为 s,d,k的查询。**解题思路:**若采用暴力做法,时间复杂度为O(t·q·k),会超时,考虑根号分治。即数组中从 s开始的 k个元素的和,步长为 d,乘以所得序列中元素的序号。**一.**当d大于√n时,时间复杂度不会超过O(√n),可以直接暴力求解。二.当d小于√n时,对数组作后缀和预处理,时间复杂度为O(n√n)所求的答案即为三角形减去右上角和右下角的数。对于每个查询 q,求元素 a。

2024-02-14 22:46:08 385 1

空空如也

空空如也

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

TA关注的人

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