自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (1)
  • 收藏
  • 关注

原创 2024杭电多校01——1003树

蒟蒻不太理解后面说的话,只能讲点自己会的,对于一个集合和一个加入的点,会有大于集合元素的贡献和小于集合元素的贡献(贡献就是f(u,v)要我们求和的东西),如何快速求出贡献,可以用三个树状数组去维护,t1代表小于等于x的元素个数,tx代表所有元素的和,txx代表大于x的元素平方和。小于等于x的元素个数存储在t1里,大于x的元素的平方和存储在txx里,要减去的部分全在tx里,这样就可以跑树上启发式合并了。杭电多校的题解好少啊,官方题解又看不懂QAQ。,这样通过上述式子就可以求出。每次合并答案的时候,

2024-07-31 19:28:12 169

原创 2024杭电多校3——1001深度自同构

然后想到了对每个数枚举倍数预处理因子的话计算的话,时间复杂度是。发现还是TLE,STL常数太大了,队友突然想到可以直接算。已经算过了,可以进行转移,另外特殊处理因子是。一开始和队友想出来的式子,太菜啦QAQ,少用STL。的dp显然是过不了的。

2024-07-26 17:19:30 334 3

原创 Bouquet-Codeforces Round 961 (Div. 2)B2

如果说当前还可以买的花(花瓣数为x+1)和已经买的x的花大于等于left,说明可以用x+1代替x把钱花完,所以答案就是m。easy版本我写了个长度为2的滑动窗口,限制条件有不超过m元,差值不为一,所以只要排个序,再写一个滑动窗口即可,时间复杂度。如果不可以的话,就替代min(g0,c[x+1]-g1),可能被替代的x和可以用来替代的x+1的最小值,答案取max。有m块钱,买花只能买花瓣数差值不超过1的花,有多少花瓣就花多少钱,问最多能买到多少花瓣。这么多,代表着有的花,和能买的花的最小值。

2024-07-24 14:29:03 660

原创 Mad MAD Sum-Codeforces Round 960 (Div. 2)

只有连续的数段可以向右传递,做一次虽然非递减,但是会有只有单个的情况这是不可以向右传递的。经过一次运算总可以得到非递减的序列,因为MAD函数非递减,最大值只会越来越大。进行上述操作,知道全变为0为止,对每次操作的数组进行求和,记为。我们可以再做一次计算去除这些数,剩下就是可以向右传递的。MAD函数返回出现次数。读错题目了好难受qaq。

2024-07-21 10:58:08 602

原创 Chat Screenshots-Codeforces Round 925 (Div. 3)

我们可以让相对位置连单向边,代表位置关系,如果有环就说明有冲突了,判环用拓扑排序即可。告诉除自己以外的相对位置,判断绝对位置是否有冲突。

2024-07-18 10:28:31 102

原创 Packmen

的算法,自然地可以猜测是二分答案+验证的套路,问题是验证的么验证,我们先记录每个豆子右边最近的人在什么位置,然后从左往右记录能移动的最大位置,对于豆子看是否可以有人在二分的时间内过来,有两种情况,一种是先向向左到豆子再尽量往右走,第二种是先向右走再向左走,取向右走位置的max。的地图有豆子和人,每个豆子每一秒可以往左或右移动一个单位长度,吃豆子不消耗时间,最短吃完所有豆子的时间。如果先遇到的是人直接向右走即可(因为是从左往右遍历的)

2024-07-15 11:52:46 381

原创 Happy Birthday! 2

所以8个数构成的子序列必定有相同的子序列,状态压缩枚举min(8,n)的状态,如果第二次碰到某个数则输出yes,并输出序列。找两个不同的序列使得他们在mod 200的意义下相等。

2024-07-15 10:21:53 121

原创 Minimal Height Tree

处理手法还算常见的贪心,记录上一层还没有孩子的节点和当前层有几个节点了,然后模拟就行(要想高度尽可能低,那么每一层最好都填满)给定一棵树的遍历顺序,一个节点的子树遍历顺序是递增的,问这棵树的最小高度是多少。

2024-07-11 15:12:20 124

原创 Rudolf and k Bridges——Codeforces Round 933 (Div. 3) E

每座桥的代价如果用传统dp会超时,考虑优化,如果一个位置等更加靠后且代价更小,是更优的,可以考虑用单调队列来维护,(维护一个单调递减队列),对于每个。建一座桥要安装支架,支架之间的距离不能超过d(两个位置之间),建支架的代价是。看是否和单调队列的距离满足d,满足的话计算价值添加到队列中,若不满足队头出队。先求每座桥的代价,用前缀和算出连续k座(也可以用滑动窗口)问建连续相邻的k座桥的最小代价是多少。

2024-07-10 11:54:31 374

原创 牛客小白月赛96 D 最小连通代价

如果既有奇数点又有偶数点,则它们之间的所有边都要,否则我只要n-1条边因为代价大于0。如果全是技术点或者偶数点,则不需要奇数点和偶数点连一条边。这题就是一个分类讨论,先读进来统计奇数点和偶数点。加边是所有点连通,没有重边和自环,问最小代价。加边规则:两点权值奇偶性相同代价为a,否则为b。如果全是奇数或者偶数点,只取n-1条边即可。没开long long WA了好几发。为奇偶性相同的点的连边,为奇偶性不同的点的连边,所有可以连的边都连上。

2024-06-16 16:45:14 765

原创 Codeforces 1354B

那我前面的a完全可以不要,b只要1个然后去找。只有1,2,3,求最小的子串三者都包含.通过归纳,最终的答案形式值只能是。这种形式.感性的想如果现在是。思路有了,写法就很多样。

2024-06-12 17:32:02 825

原创 Codeforces Round 949 div2 B

区间或值怎么算,一个结论是l,r按二进制从高位往低位找,第一个l是0,r是1的位置,从它到后面都变成1。**分析:**题目理解清楚了,发现就是一个区间或起来的数值是多少,区间是。或运算的范围往左和右扩展一个数,问经过。**题目大意:**每过一秒。

2024-06-01 13:51:04 561

原创 Codeforces Round 946 E dp

一个人每月会有x的钱,m个月,每个月可以用钱换幸福值,问最多能获得幸福值多少,有多组测试。简单的背包问题都是问什么设什么,但是这题。即所需花费比我有的钱少。

2024-05-29 19:18:49 712

原创 筛子游戏(概率DP) 牛客

有三个面数给定的骰子,每次投出前进x+y+z(三个骰子投出的数字),开始位置在0点,问位置>n的期望步数?但是f[0]是一个未知数,所以需要使用一种常见手法进行转化。设f[i]表示分数到达i的期望步数。可以递推求解A[0]和B[0]b&&z==c会回到0点。

2024-05-22 21:14:20 714

原创 Bingbong的奇偶世界

dp[i-1][1]会对dp[i][2]有贡献:任意数字添上一个偶数就变成偶数了。dp[i-1][1]会对dp[i][2]有贡献:任意数字添上一个偶数就变成偶数。给定以字符串,问从中选出任意多个数字可以得到多少不含前导零偶数(可以重复)dp[i][1] 表示[1…dp[i][1]+1(相当于选第一个数,不能有前导零)dp[i][2] 表示前i个数字不含前导零偶数的个数。dp[i-1][1]会对dp[i][1]有贡献。dp[i-1][1]会对dp[i][1]有贡献。最后答案为ans+dp[n][2]

2024-05-16 20:24:50 148

原创 牛客周赛41 D(小红的好串)

给你一个字符串,有q次询问,每次询问给一个区间l到r,问最少修改多少次使得区间内的字符串是好串。也有三种情况(r,e)多一个,(r,d)多一个,(e,d)多一个,也求个min。可以发现red子序列最多的情况一定是rrr…好串的定义:长度和自身相同的,拥有red子序列最多的字符串。r,e,d的个数均分,用前缀和查询和理想情况差多少即可。有三种情况,r多一个,e多一个,d多一个,求个min。总的来说如果想到了就是一道靠代码基本功的题目。可以分三种情况:设字符串长度为len。

2024-05-07 17:21:28 209

原创 Find 3-friendly Integers

可以发现三位数都是可以的,那么4位数及以上也是可以的,可以看成三位数和另一个数拼起来,只要预处理1-99即可。Def of 3-friendly:数字中只要子串mod 3==0即可,0也算。多组询问给定l ,r 问区间内有多少数满足条件。

2024-05-04 16:59:47 184 1

原创 Groundhog Looking Dowdy

每天穿的衣服有数值val,从n天选m天使得val_max-val_min最小。尺取,维护一个m天的滑动窗口即可。

2024-05-03 17:45:42 208

原创 The Flee Plan of Groundhog

先dfs处理出y从n走到图上任意一点所需要的时间。再在t时x所处的位置bfs处理出x从t时位置到图上各点的时间,如果x和y同时到某点或比y晚到某点,则会被b抓住,维护一个被抓时间的最大值即可。x从1号往n号点走t秒,秒之后y从n开始追x,y速度比x快。

2024-05-03 10:58:57 240

原创 Tree 牛客

然后再考虑计算答案,由向上部分的贡献*子树除了自身的贡献,ans[x]表示x节点的答案,(y是x的一个儿子)ans[y] = (dp[y]*ans[x]+1) / (dp[y]+1) ,除的部分用逆元算。然后还有一个坑,如果dp[y]+1 是1e9+7的倍数,用之前的办法暴力算。(f[y_m]+1) (+1是不选这可子树的情况)给定一棵树,对于每个点求包含该点的连通点集的数量。设f[x] 以x为根节点子树的联通子集个数。先只向下考虑,只考虑子树的情况,每个点的结果对1e9+7取余。设y_i是x的子节点。

2024-03-31 22:47:10 183 1

原创 Greedy Gift Takers

怎么判二分的位置是不是可行的呢,就是取判断二分的mid能不能到到队首即可。记num为mid后面的数,如果ci<=num则num++(相当于移到后面去了),否则返回false,如果都满足就返回true.分析问题,发现是由于队伍前面的一些数形成循环导致后面的数不可到达,这具有二段性.n头牛排队领礼物,每头牛有自己的ci,当它得到礼物后会插到倒数第ci个位置,问会有多少牛领不到礼物。(如果本来就可以的话),所以就有一个贪心的想法,对mid前面的ci进行升序,更高效的处理.

2024-03-23 14:31:39 257

原创 旅行城市(dp)

对于平面上两点ab,ab的距离是线段ab的距离,可以使用sqrt函数计算:sqrt((xa−xb)∗(xa−xb)+(ya−yb)∗(ya−yb))。你正在一个城市里旅游,这个城市里有n个景点,你需要从1号点出发,按顺序访问2号点、3号点…现在你希望跳过0个或者若干个点,使得自己的跳过景点的花费+路上总花费最小。所需的花费为f[i]【k】(原有花费)+dis(i,j)(i到j的距离)+新增跳点的花费。需要注意的是,你必须1号点出发,n号点结束,故1号点和n号点不允许跳过。若k>0,则花费为2k−1。

2024-03-20 15:54:30 233 1

原创 去郊游 (01dfs+二分)

这题的体积x和价值w的范围非常大所以用01背包的板子数组开不下,看到n非常小,考虑dfs,但是n最大40,2^40也比较大,dfs一般1e6多会爆,2的20次是1,048,576刚好1e6多一点,可以分两次来做。然后扫一遍o[i].w = max(o[i].w,w[i-1].w)使得第二遍二分搜索m-sumx的价值是最大价值。:每个物品有自己的体积和价值,要求体积xi不超过m的情况下获得的最大价值W,(w,x特别大)接下来n行每行两个整数,xi,wi,表示第i个物品的体积和价值。第一行两个整数n,m。

2024-03-17 17:42:22 312 1

原创 树上求和 牛客

取余运算没有每个都写导致爆了long long,其实改一下就行,我比较懒就开了int128,然后修改和查询操作因为我没有记录每个点出去的时间,我是用的一个siz数组存子树大小,在区间修改个查询的时候应该是dfn[x]-----dfn[x]+siz[x]-1,一开始没有减一导致答案错误,还是记录出去的位置更方便。2 x:询问x所在子树的所有节点的权值的平方和,答案模23333后输出。1 x y:将节点x所在的子树的所有节点的权值加上y。给你一棵根为1的有N个节点的树,以及Q次操作。第一行两个整数N,Q。

2024-03-12 19:54:31 279 1

原创 24牛客寒假训练营1 H

对于case 2,假设m=10110101,那么最大重量就是01111111,如果w[j] | 01111111=01111111,那么这个物品就可以选上(为什么不可以是w[j]<01111111呢?对于case 4:最大重量是10011111,如果用小于判断的话,无法保证m的第二,第三位二进制数是0,所以需要那样判断。n件物品每个物品有重量和价值,但所选物品的总重量并不是每件物品的重量和,而是所有所选物品的重量进行按位或运算的结果。如果w[i]的最高位位数比m的最高位位数高,或之后会比m大,不用考虑。

2024-02-28 15:57:10 249

原创 牛客寒假训练营5 G/H

那么7放第4个,6放第5个直到4放第7个,剩下的是n = 3的问题。还有考虑有没有解这个问题,质数有个性质:对于a(>1),在a-2a之间必定存在一个质数,可以保证有解。尝试之后发现,找到离pi最近的质数,就会有一溜数可以放好,然后便是规模更小的问题,例如 n = 7,最近的质数是11。有一个排列p,对于i属于1-n,pi = pi+i,且pi要是质数。可能是我太弱了,写的打表+二分没有暴力快。easy和hard不同就只有n的范围。

2024-02-23 21:06:12 265

原创 牛客寒假训练营5 C

证明太菜了,不会,贪心的策略大概就是左右两边加起来0的个数不超过x-1,能放左边尽量放左边。要求除全 0 连续子数组外的每个连续子数组的平均数都大于等于 1,0最多有多少个。

2024-02-23 20:51:54 167

原创 牛客小白月赛87 F

首先确定做&运算的只选最后一个,其次我不知道在第一段和第二段的分界点在哪里最优,枚举分界点,每次不需要重新计算结果,提前维护一个xor前缀数组,or后缀数组。一个数组分三段,,第一段做异或运算,第二段做或运算,第三段做与运算,求三者和的最大值。

2024-02-17 15:45:01 386 1

原创 牛客小白月赛87 E

一道贪心,首先对数组b整体加或者减一个数,对答案没有影响,那就令b[1]=0。其次对一个数做减法可以转化为对另外一个数做加法,所以可以令bi>0。从而确定贪心策略,如果一个数小于前面的最大值变加上一个数。有一个数组a,存在数组b,使ai = ai+bi,使得a有序(非递减),同时max{b1,b2,b3…}-min{b1,b2,b3…

2024-02-17 15:15:00 271 1

原创 牛客小白月赛87 B

长度小于n,那就选n-1的长度区间,如果选择1至n-1,a[n]需要是最大值,若选择2至n,a[1]需是最小值。的区间按非降序排列,问能否用一次操作使得整个数组非降序。错因:太菜了,比赛的时候也石乐志。

2024-02-17 14:50:59 169 1

原创 牛客 数星星 Stars

线段树经典题目,由于输入的顺序保证了后面的点不会增加前面的点的级数,可以在每次输入的时候就进行操作,每次操作只要找小于等于当前x的值即可,那可以对x的值域建树。需要注意的是,x从零开始,我们给它加一方便操作。给定n个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。x,y的给定值域是需要考虑清楚并处理的,总的来说是一道比较简单的题目。第一行一个整数N,表示星星的数目;(1<=N<=1.5×1e4)接下来N行给出每颗星星的坐标,坐标用两个整数x,y表示;

2024-02-15 12:46:08 467 1

原创 牛客周赛 Round 32 D 题

一个01串从第i个位置出发到第j个位置结尾且第j个位置为1的路径条数,只能从父亲走到儿子。:树形dp或者说dfs,O(n)的复杂度。2.长度为n的01串。

2024-02-14 21:18:25 191

原创 24牛客寒假营E题解

题目说用贪心,结果就傻傻的相信,比赛的时候太蠢了,后来自己写,因为存比赛数据索引用的是1-m,但是一开始写dfs传的参数是0导致debug半小时。一开始n个人已经有各自积分,经过m次比赛,问一号选手最高能排到第几名。:题目数据给的比较小,用dfs暴力即可求解,剪枝优化什么的也不用考虑。n个数字初始积分ai n属于2-10 ai

2024-02-03 20:05:25 170

原创 递归的一次奇奇怪怪

一次递归的做题经历,菜鸡的记录

2022-07-31 22:06:38 57

原创 一次新的体验——局部变量

今天我的一个同学给我发了个问题学校里学python也没有多长时间,不是很会,经过我的思考,一开始我写成了这样然后它出现了这样的问题:赋值前引用局部变量当我写成这样时:下面展示一些 内联代码片。import randomlist = []n = int(input())def examination(n): j = 0 o = 0 for i in range(n): list.append(random.randint(0,1000))

2021-08-17 18:26:02 50

空空如也

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

TA关注的人

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