自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客-模拟、枚举、贪心 2022.11.18

从样例可以发现,首先可以假设所有的奶牛都为最高值,然后对于每一对给出的奶牛的区间,在这区间之间编号的奶牛需要高度减去一(区间为左开右开)。经过一番操作之后,即可得到所有奶牛可能的最高值。(当然可能重复出现的区间,对于重复出现的区间不需要进行重复操作即可)从高位到低位依次枚举,优先考虑从0变为1,就是说尽可能的让这个数小一点。可以考虑最开始每一位为 0/1,然后到最后是否可以变回 1。贪心排序花和道路所需时间即可。

2022-11-18 16:46:12 138 1

原创 牛客-模拟、枚举与贪心 2022.11.16

分成三类,稳定值增加,不变,减少。考虑从后往前遍历减少的情况,可以发现最后一个要符号条件,需要当前值大于消耗值,而恢复值是不需要看的,因为消耗完就结束了,所以恢复值不是那么重要。看到异或操作其实第一反应就是将数据改写成二进制形式,之后再观察样例的输出结果,可以发现如果当前二进制位零的个数超过了数据个数的一半,就讲结果这一位二进制写为零,否则写为一(因为需要多组可行解的情况下,数值尽可能小)(零的个数正好为一半时可以为零,也可以为一,但是为了数值尽可能小,所以选择为零)但是直接遍历只能过60%,还需要优化。

2022-11-16 22:07:17 278

原创 牛客-模拟、枚举、贪心 2022.11.15

之后对于每个名字的查询,从名字的第一个字母出现的第一个位置开始,二分查找之后每个字母的位置是否大于当前的位置,如果大于,更新当前位置,直至名字数组结束,说明存在子序列,否则不存在。如果二者最高位相同,则比较下一位,直到出现不同的二进制位置,那么从这一位置开始往后到二进制的最低位,存在全为一的最大值,之前的高位置都相同,异或结果为0。对于药剂的数值,按照从大到小排序,对于奶牛的区间,按照区间最小值从大到小排序,之后遍历奶牛,对于每头奶牛,遍历药剂看是否存在符合条件的药剂,记录结果即可。模拟遍历01串即可。

2022-11-15 23:30:20 201

原创 牛客-模拟、枚举、贪心 2022.11.14

第一个点无雷,第二个点有雷;这里由于已经假设了第一个点和第二个点的数值(有雷为1,无雷为0),那么可以根据第二列的第二个值推导出第一行第三个点的情况,第四个点同理,......最后还需要进行验证,那么只需要将最后两个值和第二列的最后一个数值进行判定是否相等,如果相等说明这种放置地雷的情况是一种结果,否则不是。查看题解后,思路无误,只是可以在每次移动的时候也进行礼物类型的记录,即构建一个结构体,存储所有的礼物种类和位置,对于结构体按照位置从小到大排序,之后遍历结构体,记录当前的礼物种类类型。

2022-11-14 16:15:44 130

原创 牛客-模拟、枚举、贪心 2022.11.12

第一遍写的思路是:统计连续的1和0的个数,1的个数为正数记录,0的个数为负数记录,之后遍历连续数组每个位置,以当前位置为起点,寻找最后的端点。但是总是超时,于是考虑能否二分,但是二分其实判定的函数时间复杂度也是O(n).之后再想,其实不需要做一个连续化,直接在原本数组上进行滑动窗口操作,即可判定。对数组数据按照从小打大排序,前缀和记录相邻数据之间的差值,经过k次操作如果需要相同数据出现的次数最多,那么肯定是变化为数组中已经存在的数字,以当前数组位置作为左端点,二分求解右端点的位置。

2022-11-12 23:17:46 113

原创 牛客-模拟、枚举与贪心 2022.11.11

二维前缀和,如果k*k区域的前缀和为0,说明当前区域一个建筑都没有,不会影响,否则会影响。记录所有有货物xu qi。

2022-11-11 17:32:24 89

原创 牛客-模拟、枚举与贪心 2022.11.02

枚举每个点,之后记录以这个点为末尾的所有区间的异或和,然后枚举所有以这个点为起点的区间的值,当存在二者数值相等时,说明异或和为零,此时结果数目+1即可。首先可利用前缀和求取区间的异或和,然后,我就写了一个四重循环然后TLE了。一年前不会写这道题,一年后还是不会,属于是属于是了。

2022-11-02 22:31:29 108

原创 牛客-模拟、枚举与贪心 2022.10.31

当我们希望对原数组的某一个区间[l,r]施加一个增量inc时,差分数组d对应的变化是:d[l]增加inc,d[r+1]减少inc,并且这种操作是可以叠加的。这道题目中,每次增量的数目为1。之后对于每个位置的不同货物的种数,进行一个前缀和,即可得到每个位置的不同货物的数目。当我们需要对原数组的不同区间施加不同的增量,我们只要按规则修改差分数组即可。(新学了差分数组这一数据结构,初次接触,之后好好复习)

2022-10-31 19:40:12 159

原创 牛客-模拟、枚举、贪心 2022.10.27

【代码】牛客-模拟、枚举、贪心 2022.10.27。

2022-10-27 20:58:39 153

原创 牛客-模拟、枚举与贪心 2022.10.25

根据这个关注点可以知道,这里我们不用从后先前逐个进行四舍五入。a.i-1位的值为9,那么将该位置置0,向前进1;如果首位为9加1那么先输出一个1在输出数字。1、若i 的值是四,那么可以继续五入并继续检查i-1是否为4,如果为4那么继续进行五入。2、i的值为小数点,那么将此位置为结束位。同时查看i-1位即小数点前一位的值。先mark,还在求解中,感觉这周可能都调试不出,提高组水平的题。b.i-1的值不为9,该位加1.让他的成绩可以在小数点后的。

2022-10-25 21:55:25 112

原创 牛客-模拟、枚举与贪心 2022.10.24

直接贪心,直接算出平均的水温,再分类讨论一下即可。假如平均的水温比n个杯子里的都小,那么肯定大水缸是降温的.假如平均的水温比最大的要大,说明大水缸是升温的,不然我的大水缸的温度夹在max和min中间,那么一定是不能调节的。记录每行,每列可以分隔的同桌人数,然后按照行号,列号从小到大的顺序输出前k行,前l列最大的数值即可。如果是正数,直接将其放到到第一个进行删除是最优的,如果是负数,将其在当前位置删除则是最优的。

2022-10-24 11:47:53 108

原创 牛客-模拟、枚举与贪心 2022.10.23

先对数组按照从小打到排序,第一次,先让第一个数和第二个数大小相等,即相加的n-1个数只除了第二个数字,第二次,让第一第二个数和第三个数大小相等,即相加的n-1个数只除了第三个数字,之后每次相加同理,相加n-1次,即可得到答案,最后的结果就是最大的数字加上每次两个数字的差值,做一个前缀和相加。简单模拟输出,一眼可知,凳子消除最贵的商品,所以比较凳子和购物车两者的最小值,即可以得到最终的结果。一开始的想法是从前往后相加相同的数字,然后删除,但是会导致之后的数字也相同,导致并不是最少的次数。

2022-10-23 16:23:00 302

原创 牛客-模拟、枚举与贪心 2022.10.22

由于全是小写字符串,使用一个数组,记录每个字母存在的最后一个位置。从最大字母开始遍历到最小字符,这一过程中遍历原字符串,输出其中的当前最大字符,即可得到最终的结果。昨天写的题目较为简单,和今天写的一起做一个总结。构建哈夫曼树,哈夫曼编码。

2022-10-22 20:50:36 119

原创 牛客-模拟、枚举与贪心 2022.10.20

可以看到,当将第一行的答案放在第一列的时候,剩下的就是求的答题卡规模为(n - 1) * (n - 1) 的所有方案,当第一行的答案放在第二列的时候,剩下的就是求答题卡规模为(n - 2) * (n - 2) 的所有方案(因为此时根据答案横竖相同要求的对称性,确定了一行的同时也就确定了一列,所以此时有两行和两列都不能进行选择),同理将第一行的答案放在第三列也是一样的。所以横答题卡某一行的答案确定之后,对应的竖答题卡的某一列的答案也就确定了,并且交于这两个答案的行和列也已经确定了。在棋盘规模为 的情况下,

2022-10-20 14:56:02 185

原创 牛客-模拟、枚举与贪心 2022.10.19

递推 用res[i]表示iloveyou匹配了前i个的字符的子序列数,当遇到第i个字符,则之前匹配了前i-1个的字符的子序列都可以变为匹配了前i个的字符的子序列,即res[i]=res[i]+res[i-1]递推+高精度(所以python)

2022-10-19 19:44:24 341

原创 牛客-模拟、枚举与贪心 2022.10.19

用res[i]表示iloveyou匹配了前i个的字符的子序列数,当遇到第i个字符,则之前匹配了前i-1个的字符的子序列都可以变为匹配了前i个的字符的子序列,即res[i]=res[i]+res[i-1]递推问题,但高精度(因为太麻烦所以python)

2022-10-19 19:34:13 214

原创 牛客-模拟、枚举与贪心-2022.10.18

输出第一个最小的非零的数字,如果存在零,只输出一个,然后输出零个数的一半,之后继续从小到大输出即可。昨天和今天写的题都比较简单,本来都不想挂,但是还是觉得浅浅记录一下。

2022-10-18 21:55:00 125

原创 牛客-栈、队列和stl 2022.10.16

统计最长的,连续的红色球数目。给定的数据是每个红色球和蓝色球和位置,其中一个位置上可以有多个红色球或者蓝色球。利用map能够自动排序的特性,进行遍历,统计当前区间内红色球的数目,当遇到蓝色球时,直接清零即可。

2022-10-16 23:24:28 103

原创 牛客-栈、队列和stl-2022.10.14

用数组模拟队列,用unordered_map记录每个名字的同学的位置,之后判断当前队列的第一个名字和出队的人的名字是否相同,如果相同则将头指针下标移动到下一个,符合排队规则的人数+1,否则更新当前位置之后的所有人的名字的位置(更新unordered_map)先记录小于最大数值的所有的质数,然后对于这些质数进行2次方,3次方,4次方求和的三重循环遍历,考虑到最大的质数数据范围小于一万,数据范围为10^3,所以直接遍历记录相加求和的结果即可。

2022-10-14 11:00:22 113

原创 【无标题】

利用栈的特点,每次对于'o'进行合并后重新入栈,对于'O'进行消除出栈。最后逆序记录栈中元素即可。简单的栈的性质的应用。

2022-10-13 22:10:18 82

原创 牛客-栈、队列和stl 2022.10.12

一开始的想法是寻找从n开始到1的序列,但是只能过7.51%,题解区的做法是:贪心思想,记录一个后缀的最大值数组,每次将数组元素入栈,然后比较栈顶元素和当前最大值,如果栈顶元素大于当前最大值,则出栈,直到小于为止。(还是没想明白为何一开始做法不对,明后几天继续想想)昨天面试和笔试有点多,没时间刷了,写了两道水题感觉没必要记录,所以没有写。今天面了两家,笔了三家,抽空写了这么一道可以记录的题。

2022-10-12 22:31:25 251

原创 黑马程序员-IOS开发基础班之Objective-C第二天学习笔记

【代码】黑马程序员-IOS开发基础班之Objective-C第二天学习笔记。

2022-10-10 12:27:35 1211

原创 牛客-函数与递归 2022.10.10

其实就是简单的根据字符串序列,每次使用前半段构建左子树,后半段构建右子树,当前字符串判定是I,B,F串然后按照后序遍历的顺序输出。每次截取可以使用开始下标和结束下标进行标记,在这个范围内判断字符串输出什么即可。

2022-10-10 11:16:47 232

原创 牛客-函数与递归 2022.10.9

看见%2可反应和奇偶有关,再看/2反应应该和二进制有关,第一个出现的数,经过列举几个数字后,发现只要二进制位上一的个数相等,结果就相等,那么第一个数就是全一的二进制数表示的十进制数大小。根据向量计算叉积还是乘积,具体我也没搞明白,只知道就是这么一个固定写法。

2022-10-09 22:03:54 57

原创 黑马程序员-IOS开发基础班之Objective-C第一天学习笔记

和C语言函数的定义和调用一摸一样。

2022-10-08 22:26:08 1220

原创 牛客-数组、字符串及数据批量存储 2022.10.8

将方程式分为左边和右边两个部分,分别计算记录左右两边各自的符号数值和与常数数值和。再对结果为零的两种情况分别进行特判,最后按照要求输出结果即可。其他情况都是参差不齐。

2022-10-08 16:22:50 81

原创 牛客-数组、字符串及数据批量存储 2022.10.7

可以在纸上模拟一下,当两个蚂蚁碰撞后,两个蚂蚁调转方向,但是可以看作是两个蚂蚁没有调转方向,而是进行了一次互换,这样只需要记录所有蚂蚁的位置,然后求取一个离两端出口都距离最远的一个蚂蚁距离即可。昨日刷的题目较为简单,没有需要做笔记记录的,所以没有进行记录。今日的题目也很简单,都是暴力能过,不过记录一下之后数据量大的做法。求逆序数最常规的做法就是一个个遍历,其次就是根据归并排序的思想求取。这里记录一下使用归并排序的做法。

2022-10-07 22:36:14 91

原创 牛客-语法入门-循环结构程序设计 2022.10.5

负数进制转换规则:如果余数mod为负数,余数mod减去除数base进制基数,之后数字n减去余数mod再除以进制基数base,循环往复即可。记录上下限求取差值,还需要前缀和进行差值累加。

2022-10-05 17:01:19 166

原创 牛客-语法入门-顺序结构程序设计 2022.10.4

赛瓦维斯特定理:a,b > 1 gcd(a, b) == 1 使得ax + by = c的最大无整数解C的取值为 a * b - a - b。数学题,比较繁琐的是误差和精度。

2022-10-04 23:44:41 144

原创 牛客算法竞赛入门课第一节习题 2022.10.3

01串,即通过二进制位表示当前要选择的行或者列的状态。这样可以等价于进行深度优先搜索的返回结果,但是相较于深度优先搜索写法更加简单,同时对于状态记录更加容易去除一些重复记录的值。对于行或者列,先进行行选取,选择某些行的权值求和,之后再对列进行选取,记录相应的状态并求和。之后对于求和记录最大值。每次对数组中的数据进行操作后,之后都要记得恢复。

2022-10-03 20:11:04 991

原创 牛客算法竞赛入门课第一节习题 2020.10.2

由于坐标的范围是固定的,所以可以根据固定的坐标范围进行二维前缀和求取在边长R的范围内,能够取到的价值最大值。贪心思想,按照结尾排序,每趟记录开始点和结束点,每趟将已切分开的序列进行标记。在序列的头和尾结点切分不能算切分,不能算。贪心思想,按照结束时间排序,然后统计个数即可。

2022-10-02 14:45:27 153

原创 牛客算法竞赛入门课第一节习题 2022.10.1

先求取一个前缀和数组,通过前缀和数组求取各个k个数序列的大小。之后先从前往后更新记录k个数序列的最大值,再从后往前更新记录k个数序列的最小值,最后从前往后或者从后往前遍历一次所有序列,对每次能取到的最大值求和,更新,得到最后的结果。通过每次对当前数值n的大小进行更新,从而能够逐步缩小范围从而规避第三种情况。对输入数字进行分解质因数。

2022-10-01 17:58:10 164

原创 MySQL必知必会习题笔记

​​​​​​SQL1 从 Customers 表中检索所有的 IDSQL2 检索并列出已订购产品的清单去重关键字:DISTINCT 此关键字指示MySQL只返回不同(唯一)的值。不能部分使用DISTINCT DISTINCT关键字应用于所有列而 不仅是前置它的列。如果给出SELECT DISTINCT vend_id, prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。SQL3 检索所有列排序检索数据SQL4 检索顾客名称并且排序DESC 按降序排序 从高到低

2022-06-09 20:16:34 840

原创 2021_02_05 LeetCode刷题

807. 保持城市天际线简单模拟题。统计每行最大值和每列最大值,遍历矩阵,当前位置能够相加的最大数值为:该行最大值和该列最大值中的较小值与当前位置上数的差。class Solution {public: int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) { int n = grid.size(); vector<int> row(n, 0);

2021-02-05 14:53:10 121

原创 2020_02_04 LeetCode刷题

1551. 使数组中所有元素相等的最小操作数简单模拟题。根据n为奇数偶数可以找到规律,然后分情况讨论即可。class Solution {public: int minOperations(int n) { int ans = 0; if(n % 2 == 0) { for(int i = 0; i < n / 2; i++) { int sum1 = 2 * i + 1;

2021-02-04 21:54:11 96

原创 2021_02_03 LeetCode刷题

1523. 在区间范围内统计奇数数目简单模拟题。分情况讨论边界奇偶数即可。class Solution {public: int countOdds(int low, int high) { int ans = 0; if(low % 2 == 0) { if(high % 2 == 0) ans = (high - low) / 2; else

2021-02-03 13:30:42 132

原创 2021_02_02 LeetCode刷题

1437. 是否所有 1 都至少相隔 k 个元素简单模拟题。遍历数组判定即可。class Solution {public: bool kLengthApart(vector<int>& nums, int k) { int n = nums.size(); int prev = -1; for (int i = 0; i < n; ++i) { if (nums[i] == 1) {

2021-02-02 14:09:53 101

原创 2021_02_01 LeetCode刷题

1736. 替换隐藏数字得到的最晚时间简单模拟题。就一个个判定即可。class Solution {public: string maximumTime(string time) { if(time[0] == '?') { if(time[1] == '?') time[0] = '2', time[1] = '3'; else { if(time[1] &g

2021-02-01 14:21:54 105

原创 2021_01_29 LeetCode刷题

LCP 02. 分式化简简单模拟题。找到循环体,之后循环即可实现,最后需要约去最大公约数。class Solution {public: vector<int> fraction(vector<int>& cont) { vector<int> ans; int fenmu = 0, fenzi = 0, len1 = cont.size(); if(len1 == 1)

2021-01-29 22:35:32 86

原创 2021_01_28 LeetCode刷题回顾

1700. 无法吃午餐的学生数量简单模拟题。按照题目意思进行模拟即可。class Solution {public: int countStudents(vector<int>& students, vector<int>& sandwiches) { int m = students.size(); int n = sandwiches.size(); vector<int> e

2021-01-28 14:06:28 109

空空如也

空空如也

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

TA关注的人

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