牛客
文章平均质量分 52
记录平时在牛客写的题目
是基德吖
计算机科学与技术专业的大学生
展开
-
【牛客】[NOIP2012]借教室
【代码】[NOIP2012]借教室。原创 2024-05-03 17:49:31 · 318 阅读 · 0 评论 -
【牛客】排列计算
如果直接涂色来计算单点权重,2e5*2e5必然超时。所以用差分进行优化。原创 2024-05-02 17:16:49 · 524 阅读 · 0 评论 -
【牛客】值周
唯一需要注意的点就是前面给b[0]单独赋值为1(因为如果在循环中给b[0]赋值(也就是如果i取0~n),当 i==0时,b[0]=a[0]-a[-1],这样数组越界了)。所以b[0]需要单独赋值为1。一开始将a数组所有元素都赋值为1,然后用差分标记,如果b[i]=0,说明这个点被移除了。所以对b数组差分标记后,再前缀和,最后再遍历b数组,如果b[i]>0,说明当前点i没被移除,则ans++。最后输出ans即可。原创 2024-05-02 16:14:20 · 553 阅读 · 0 评论 -
【牛客】【模板】差分
差分标记:b[l]+=k,b[r+1]-=k;对差分数组做前缀和,就是操作后的原数组。原创 2024-05-02 15:01:11 · 458 阅读 · 1 评论 -
【牛客】[HNOI2003]激光炸弹
因为m的范围最大为5000,每次又是一个边长为r的正方形,所以先用两重for循环求二维前缀和,再用两重循环(外层循环枚举矩阵右下角横坐标,内层循环枚举矩阵右下角纵坐标)求每个矩阵的和,然后不断更新最大值ans即可。注意从(1,1)开始存即可,所以每次输入x,y之后,要x++,y++。原创 2024-05-01 23:07:54 · 550 阅读 · 0 评论 -
【牛客】【模板】二维前缀和
二维前缀和:pre[i][j]=a[i][j]+pre[i-1][j]+pre[i][j-1]-pre[i-1][j-1];原创 2024-05-01 20:47:56 · 487 阅读 · 0 评论 -
【牛客】Tokitsukaze and Average of Substring
之后从1~26遍历 j(其实就是在遍历字符‘a’~'z'共26个字符),如果当前字符和上一个字符相同(即j==tmp),我们就让前缀和+1,即pre[j][i]=pre[j][i-1]+1;否则pre[j][i]=pre[j][i-1]。因为n最大是5000。再从1~26遍历k(还是从'a'遍历到‘z’),开一个变量tmp记录此时的pre[k][r]-pre[k][l-1](也就是字符k对应的数字在 l~r区间的个数),再通过tmp*(tmp-1) 算相同字符对数,并累加到cnt。原创 2024-05-01 16:03:26 · 937 阅读 · 0 评论 -
【牛客】【模板】前缀和
某段区间 [l,r]的和:pre[r]-pre[l-1]前缀和:pre[i]=pre[i-1]+a[i];前缀和中数组下标为1~n。原创 2024-05-01 14:41:00 · 315 阅读 · 0 评论 -
【牛客】第K小表示数
依次删除set的第一个元素,然后再插入t+a和t+b,重复k次即可。原创 2024-04-16 23:57:22 · 158 阅读 · 0 评论 -
【牛客】DP4 最小花费爬楼梯
因为最后要求到顶楼的最低费用,每次只能走一格或走两格,所以我们要求走一格到当前格的费用和走两个到当前格的费用的最小值。开一个dp数组和a数组。dp[i]表示在当前这一格所需要的费用。在第0格和第1格时不需要费用。原创 2024-04-16 23:30:25 · 278 阅读 · 0 评论 -
【牛客】AB5 点击消除
遍历完字符串后,如果栈为空,说明最终字符串是空串,根据题意,输出0即可。否则,用一个vector存栈中所有元素,因为栈是先进后出的,所以最后用reverse() 函数翻转vector,遍历vector依次输出元素即可。如果栈为空或者当前字符与栈顶元素不等,就压栈。否则如果当前字符与堆顶元素相同,就出栈。原创 2024-04-16 23:17:13 · 233 阅读 · 0 评论