![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
其他补题
文章平均质量分 81
徒手装机甲
这个作者很懒,什么都没留下…
展开
-
Codeforce Round #762 Div3 题解报告
Codeforce Round #762 Div3今天vp了下这套div3,前三题倒很顺利,做d的时候看错题,mn读反了,并且搞了一个错误的维护次大和最大的方案,虽然这个方案好像也能做,但是确实很麻烦,然后看E也没顺利调出来,没有想清楚具体操作的过程,F,G赛后都补了A.Square String?问有没有相同的字符串,可以简单的考虑奇数不行,偶数就切一般就行#include<bits/stdc++.h>using namespace std;using ll=long long;原创 2022-03-23 02:29:54 · 438 阅读 · 0 评论 -
最小生成树刷题汇总
Acwing 346 走廊泼水节给定一棵 N 个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。求增加的边的权值总和最小是多少。注意: 树中的所有边权均为整数,且新加的所有边权也必须为整数。输入格式第一行包含整数 tt,表示共有 tt 组测试数据。对于每组测试数据,第一行包含整数 NN。接下来 N−1N−1 行,每行三个整数 X,Y,ZX,Y,Z,表示 XX 节点与 YY 节点之间存在一条边,长度为 ZZ。输出格式每组数据输出一个整数,表示权值总和最原创 2021-07-16 06:03:41 · 1569 阅读 · 1 评论 -
2021-天梯赛(cccc)比赛题解
写在前面今年的天梯赛因为四月事多,没有参加,后面抽空把题做了一下,难度不大,但是有不少细节需要注意。写一篇博客来稍微总结一下这套比赛的一些坑点吧。第一部分题目没什么好说的,贴一份代码放着。L-1-1 人与神#include<bits/stdc++.h>using namespace std;int main(){ cout<<"To iterate is human, to recurse divine."; return 0;}L-1-2 两小原创 2021-05-12 20:33:43 · 3758 阅读 · 3 评论 -
牛客算法周周练1ABE(前缀和,二分)
A题意为给定一个长度为n的递增数列,该数列的价值由图示公式决定,现要求将某个位置的数向前移动k个单位,问现在所能达到的最高价值是多少,刚做这道题的时候我选择将所有可能交换的起点即1到n-k作为起点内部直接比较交换前后的部分的价值的差值,因为n-k和1到k在n和k相等是取最大值即51e4最后计算量为1e9,导致这个n²的算法TLE了,之后继续观察性质,我们不难发现在实现模拟的过程中,减少的价值为...原创 2020-04-08 00:59:39 · 261 阅读 · 0 评论 -
字符串中的子串
在字符串中找某个子串数量,如果枚举一定超时,所以我们采用记录的方法,用一个值时刻记录c出现的次数,遇到h后,让该h和前面所有的a结合所以备选二元组加当前c出现的次数,每遇到一次就加一次,遇到n时就使答案加上当前的二元组个数即可所有数据均不用清空只需循环扫一遍o(n)即可解决问题代码也很简单#include <stdio.h>int main(){ char a[100...原创 2020-02-24 15:33:02 · 491 阅读 · 0 评论 -
牛客寒假五 d牛牛与牛妹的约会(贪心)
这道题很明显是一个贪心问题,每一次我们尽可能选可以让我们距离更近的方法,因为开立方根一定是前面比后面好,所以可以先给ans赋初值fabs(a-b)然后用循环表示闪现次数,每次用cbrt,min函数比较所能节约的距离。即可得到答案#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>...原创 2020-02-14 19:21:41 · 325 阅读 · 0 评论 -
牛客寒假五 b战队比赛地(三分)
对于这个问题,我们要找出离最远的训练基地最短距离的比赛地,我们可以用一个函数算出任意一个基地离最远训练基地的距离。然后我们不能直接遍历,需要在整个数轴范围内找到合适的位置,那么我们采取三分法,先定一个很小的左顶点和一个很大的右顶点,比较左顶点和右顶点的最大距离,每次排除三分之一的错误选项,可以按时求出答案,需要注意本题所有坐标都可以是小数,注意精度#include<bits/stdc++...原创 2020-02-14 19:17:53 · 119 阅读 · 0 评论 -
牛客寒假4 e最小表达式
这道题其实是一个很明显的贪心问题,就是让数值大的字符尽可能处于权重较小的位置,有n个加号每次选择n+1个位置放置数按位存储,直到所有字符都被利用,读入时统计一下+个数,在循环中注意边界问题2个加号可以把所有数字分成3个区域,代码如下#include<bits/stdc++.h>using namespace std;char s[500005];int ans[500004]...原创 2020-02-12 00:44:33 · 128 阅读 · 0 评论 -
牛客寒假4 d 字段异或
这道题是利用前缀和来求解的,sum从头开始不断^表示现在的状态,原理是如果sum[l-1]=sum[r]就说明l到r的子段异或和为0,那么我们用一个map存储某一个输出所出现个数,因为每一次出现这个数都会产生这个数出现次数的新子集(只有首尾相等就说明这段可行·)至于为什么一定要用map是因为数组可能出现的范围过大,直接用数组存会爆栈‘代码很简短# include <bits/stdc++...原创 2020-02-12 00:25:00 · 113 阅读 · 0 评论 -
牛客寒假3 f k合因字数(埃氏筛的扩展应用)
这道题第一遍写的写的简单暴力,不给过。后面了解到要用埃氏筛算法。在这我先介绍一下这种算法的思想,其实埃拉托斯特尼筛法是一种很古老的算法,它的原理很简单,先标记所有数是质数,从二开始,把所有二的倍数重新标记成合数,知道n为止,每次都能保证我正在选择的质数没有比它本身和1以外其他的因子,也可以保证所有非质数都被排除。如果我们要求n以内的范围只需遍历到根号n它的复杂度是O(n+log(log n...原创 2020-02-09 17:47:04 · 166 阅读 · 0 评论 -
牛客寒假3 c 数组越界
做题的时候因为题目太长,就没有关注这道题直接跳过了它,回过头看,其实只是一个背景比较长的模拟,用两个符号实时记录变化过程即可,有几点需要注意,就是本题可以直接开一维数组替代二维数组,所有下标都用m*x+y表示即可#include<bits/stdc++.h>using namespace std;int a[2000000];int main(){ int n,m...原创 2020-02-09 16:22:19 · 127 阅读 · 0 评论 -
牛客寒假2 f 选物品
赛后补完这道题可以说有两个收获,一个就是关于贪心算法的正确性的证明,和结构体的实际应用先从简单说起,因为学完结构体之后一直没有什么机会使用,所以对结构体的知识也挺生疏的,但这道题需要用结构体把编号和价值联系起来,需要注意的是结构体内的变量种类也可变,使用时在定义后加.即可然后讲讲这道题的贪心策略,这个题的状态是空的,你要预判那这个物品会带来的影响,你会多获得价值a并且你的对手少了获得价值b的...原创 2020-02-07 04:19:29 · 100 阅读 · 0 评论 -
牛客寒假2 e 做计数
这道题的如果直接枚举铁定超时,所以我们需要观察规律,首先把题目给的式子转换一下开平方,发现式子变成I+J+2根号IJ=K所以因为k可以无限大只需保证根号IJ为整数并且IJ<N即可那么我们只需枚举所有小于n的完全平方数的因子数每一个因子都相当与一组i与j可以换顺序把ans+2即可,在考虑完全平方数一定会有i=j的情况,把ans-1就是答案代码如下#include<bits/st...原创 2020-02-07 03:31:13 · 115 阅读 · 0 评论 -
牛客寒假2 d数三角
这道题很基础,输入数据后只需判断是否共线和夹角是否大于90度即可可以用向量的数量级去表示x1x2+y1y2<0 即可说明所求值为钝角。同理x1y2+x2y1!=0保证不共线即可#include<bits/stdc++.h>using namespace std;long long int x[505],y[505];int cheak(int i,int j,int...原创 2020-02-07 03:03:26 · 85 阅读 · 0 评论 -
牛客寒假赛2 c 算概率(概率dp+逆元)
题目描述牛牛刚刚考完了期末,尽管 牛牛 做答了所有 n 道题目,但他不知道有多少题是正确的。 不过,牛牛 知道第 i 道题的正确率是 pi。 牛牛 想知道这 n 题里恰好有 0,1,…,n 题正确的概率分别是多少,对 1e9+7取模。输入描述:第一行,一个正整数 n。第二行,n 个整数 p1,p2,pn,在模 1e9+7 意义下给出。保证 1≤n≤2000输出描述:输出一行 n+1 ...原创 2020-02-07 02:35:34 · 232 阅读 · 0 评论 -
牛客寒假小白赛1 g 字符串
对于这道题,我们可以建立一个二维数组存储每一个字母第i次出现的具体位置是整个字符串的第几个,s一维数组来存储该字符出现的次数,对于每一个字母,从第一个开始扫一遍(j的意义是该字符目前正处于第几次),只要还有可能出现k次就与原来比较,如果一直没比过就-1.#include<bits/stdc++.h>using namespace std;int a[30][200010],t[...原创 2020-02-05 19:55:51 · 125 阅读 · 0 评论