自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2020.8.24阿里笔试第2题

#include<bits/stdc++.h>using namespace std;typedef long long ll;#define INF 0x3f3f3f3fconst int maxn=10050;const int maxm=500050;const ll mod=1e9+7;int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};struct node{ int x,y,val; bool operator &lt...

2020-08-24 20:45:11 843 3

原创 muduo网络库学习笔记(十一):base库之 CurrentThread & Thread

CurrentThread主要就是为了获得当前线程的id和获取调用堆栈,Thread封装了创建线程及相关的apiCurrentThread.h中声明的一些函数在Thread.cpp中定义,两者关系紧密,所以可以放在一起看CurrentThread.h 源码注释#ifndef MUDUO_BASE_CURRENTTHREAD_H#define MUDUO_BASE_CURRENTTHREAD_H​#include "Types.h"​namespace muduo{//线程局部变量.

2020-08-11 12:59:55 348 1

原创 muduo网络库学习笔记(十):base库之 Logging

工作流程首先使用宏定义写日志#define LOG_TRACE if (muduo::Logger::logLevel() <= muduo::Logger::TRACE) \ muduo::Logger(__FILE__, __LINE__, muduo::Logger::TRACE, __func__).stream()#define LOG_DEBUG if (muduo::Logger::logLevel() <= muduo::Logger::DEBUG) \ mu..

2020-08-11 11:45:38 337

原创 muduo网络库学习笔记(九):base库之 CountDownLatch

类 CountDownLatch倒计时计数器CountDownLatch.h 源码注释/*倒计时计数器​1. 首先,创建一个计数器,设置 count 的初始值,程序中的数值设置为3;​2. 在执行了线程 D 之后,调用 countDownLatch.wait()方法,将会进入阻塞状态,直到 countDownLatch 的 count 参数值为 0;​3. 在其他线程里,调用 countDownLatch.countDown() 方法,调用该方法会将计数值 减 1;​4.

2020-08-11 08:49:46 175

原创 muduo网络库学习笔记(八):base库之 Condition

类 Condition是muduo库中对系统线程条件变量类函数进行的封装;往往跟mutexlock配合使用,但也不控制其对象的生存期。使用规范线程1锁住mutexwhile(条件)wait解锁mutex线程2锁住mutex更改条件signal或broadcast解锁mutex整个condition类主要为方便用户使用,封装了condition的api,notify() 封装了 pthread_cond_signalnotifyAll() 封装了pt

2020-08-10 20:52:23 128

原创 muduo网络库学习笔记(七):base库之 Mutex

互斥器Mutex.h中只用到了CurrentThread中的获取当前线程id的方法,就下面一句holder_ = CurrentThread::tid();其实就是调用了系统调用syscall来获取线程id。static_cast<pid_t>(::syscall(SYS_gettid))所以可以先不用看CurrentThread的源代码,只要看当前Mutex.h的源代码即可Mutex的使用方法可以看注释里,或者测试程序Mutex.h 源码注释#ifnd.

2020-08-10 18:07:12 207

原创 muduo网络库学习笔记(六):base库之 StringPiece

C++里面有string和char*,如果你用const string &s 做函数形参,可以同时兼容两种字符串。但当你传入一个很长的char * 时,char转string,创建一个临时string对象,同时开辟一个内存空间,拷贝字符串, 开销比较大。如果你的目的仅仅是读取字符串的值,用这个StringPiece的话,仅仅是4+一个指针的内存开销,而且也保证了兼容性。所以这个类的目的是传入字符串的字面值,它内部的ptr_ 这块内存不归他所有。所以不能做任何改动。归根结底,是处于性能的考虑,用以实现

2020-08-10 18:02:07 232

原创 Leetcode 第 201 场周赛 (2020 滴滴校招专场)

整理字符串 找出第N个二进制字符串中的第K位 和为目标值的最大数目不重叠非空子数组数目 切棍子的最小成本 3分 简单 4分 中等 6分 中等 7分 困难 √ √ √ √ 5483 统计好三元组用栈维护,类似于合法括号的抵消枚举字符串s,与栈顶元素比较,符合条件的就弹出栈顶否则加入栈顶复杂度O(n)执行用时4ms内存消耗6.5MBclass Solution {public: string m..

2020-08-09 12:12:02 169

原创 muduo网络库学习笔记(五):base库之 TimeZone

这部分源代码还有部分未搞懂的,日后填坑作用:时区与夏令时,方便时区之间的转换,以及时令之间的转换前置知识:先阅读过Data,noncopyable,copyable 系列源代码#include <time.h>struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ int tm_hour; /* 时 - 取值区间为[0,...

2020-08-08 19:55:02 393

原创 muduo网络库学习笔记(四):base库之 Date

作用:julian日历库(即公历)成员结构体 YearMonthDay struct YearMonthDay { int year; // [1900..2500] int month; // [1..12] int day; // [1..31] }; 该结构体表示通用的日期格式成员函数 Date() 构造函数 Date(int year, int month, int day); 用年月日初始化 julianDayNumber_ Date(int .

2020-08-07 19:25:37 192

原创 muduo网络库学习笔记(三):base库之 Timestamp

作用:UTC 时间戳前置知识:先阅读过Types,copyable 系列源代码常量 kMicroSecondPerSecond 每秒所对应的微秒数成员函数 swap() 交换函数 toString() 将时间转换为string类型string Timestamp::toString()const{ char buf[32]={0}; int64_t seconds=microSecondsSinceEpoch_/kMicroSecondPerS...

2020-08-07 15:24:17 229

原创 muduo网络库学习笔记(二):base库之 Types.h

基本类型的声明,包括muduo::string类型转换 implicit_cast 和 down_cast1. 基本类型的声明using std::string;//简化了用 memset 初始化的使用inline void memZero(void* p,size_t n){ memset(p,0,n);}隐式类型转换:隐式类型转化是编译器默默地、隐式地、偷偷地进行的类型转换,这种转换不需要程序员干预,会自动发生,比如赋值转换 float f = 100;强制类型转换:..

2020-08-06 14:42:50 258

原创 muduo网络库学习笔记(一):base库之noncopyable.h & copyable.h

muduo 中的大多数 class 都是不可拷贝的,有小部分是可拷贝的。不可拷贝的 class 将继承 类 noncopyable可拷贝的 class 将继承 类 copyablenoncopyable.hnoncopyable (const noncopyable&) = delete;void operator=(const noncopyable&) = delete;在拷贝构造函数和赋值函数定义后面加上 =delete 表示基类以及其派生类无法进行拷贝构造和赋

2020-08-06 14:10:20 324

原创 muduo网络库学习笔记(零):前言

在购买《Linux多线程服务端编程 使用muduo C++ 网络库》该书籍后,书上对于muduo网络库的解释只对于net库,直接使用了base库,而在阅读base库中的文件时,有些文件的功能,所写的代码对于我这样的新手来说不好理解,而网上也没有对于base库中的文件非常详细的说明,所以我将一边阅读源码,一边通过搜索搞懂未读懂的代码,添加注释。读完一个文件后,写一篇博客讲述这个文件的详细信息,以此来提高自己对muduo网络库的理解。源代码的注释版本和每个文件对应的说明markdown文件保存在我GitHu

2020-08-06 13:56:33 206

原创 leetcode 第199场周赛 [阿里云]

重新排列字符串 灯泡开关Ⅳ 好叶子节点对的数量 压缩字符串Ⅱ 3分 简单 4分 中等 5分 中等 8分 困难 √ √ √ 写的时候傻逼了,结束后立马过了 5472 重新排列字符串签到题复杂度O(n)执行用时24ms内存消耗15.4MBclass Solution {public: string restoreString(string s, vector<int>& indice..

2020-07-26 12:53:36 146

原创 面试题 字符串表达式展开

题意给出一个表达式s,此表达式包括数字,字母以及方括号,在方括号前面的数字表示方括号里面的内容重复的次数(括号内的内容可以是字符串或另一个表达式),请编写程序将这个表达式展开成一个字符串。输入样例:(每一行输入一个表达式)abc3[a]3[abc]4[ac]dy输出样例:(每一行输出表达式s展开成的字符串)abcaaaabcabcabcacacacacdy这道题是春招时,参加字节跳动面试时遇到的,当时没有现场敲出来之后搜索该题,找到一个博客有这道题的题解(博..

2020-07-08 16:57:07 379

原创 leetcode 第190场周赛

检查单词是否为句中其他单词的前缀 定长子串中元音的最大数目 二叉树中的伪回文路径 两个子序列的最大点积 3分 简单 4分 中等 5分 中等 6分 困难 1455 数组中两元素的最大乘积解题思路:以空格分割字符串,seartchword跟每个字符串作比较,匹配了直接返回index记录现在是第几个字符串复杂度:遍历了字符串sentence一遍,故为O(n)class Solution {public: int isPrefixOfW..

2020-06-23 13:52:00 118

原创 leetcode 第191场周赛

数组中两元素的最大乘积 切割后面积最大的蛋糕 重新规划路线 两个盒子中球的颜色数相同的概率 3分 简单 4分 中等 5分 中等 7分 困难 1464 数组中两元素的最大乘积解题思路:其实就是题目就是要求数组中两个最大的值维护最大值first_mx,第二大值second_mx遍历数组更新这两值即可复杂度:相当于遍历了一遍nums数组,故为O(n)class Solution {public: int maxProduct(ve..

2020-06-23 13:51:18 112

原创 leetcode 第188场周赛

用栈操作构建数组 形成两个异或相等数组的三元组数目 收集树上所有苹果的最少时间 切披萨的方案数 3分 简单 4分 中等 5分 中等 7分 困难 1441 用栈操作构建数组枚举i,从1-n,用st记录当前匹配到目标数组的哪个位置如果当前i==target[st],表示匹配,进行Push操作否则,表示不匹配,先Push,Pop,这样就不产生影响class Solution {public: vector<string>...

2020-06-20 21:47:25 153

原创 leetcode 第27场双周赛

通过翻转子数组使两个数组相等 检查一个字符串是否包含所有长度为K的二进制子串 课程安排Ⅳ 摘樱桃Ⅱ 3分 简单 4分 中等 5分 中等 6分 困难 1460 重新排列数组解题思路:翻译下题意,其实就是问我们两个数组是否相等,判断数组是否相等有很多方法,这边我直接排序,遍历一遍看是否有不一样的元素复杂度:数组排序的复杂度,故为O(nlogn)class Solution {public: bool canBeEqual(ve...

2020-06-20 15:22:33 119

原创 leetcode 第193场周赛

一维数组的动态和 不同整数的最少数目 制作m束花所需的最少天数 树节点的第K个祖先 3分 简单 4分 中等 5分 中等 6分 困难 1480 一维数组的动态和class Solution {public: vector<int> runningSum(vector<int>& nums) { int sum=0; vector<int>ans; for...

2020-06-18 22:17:17 119

原创 leetcode 第192场周赛 题解

重新排列数组 数组中的k个最强值 设计浏览器历史记录 给房子涂色Ⅲ 3分 简单 4分 中等 5分 中等 6分 困难 1470 重新排列数组解题思路:st1为x1的位置,st2为y1的位置,依次放入目标容器ans中即可复杂度:相当于遍历了一遍nums数组,故为O(n)class Solution {public: vector<int> shuffle(vector<int>& nums, int n)..

2020-06-18 22:14:56 111

原创 LeetCode 第28场双周赛

商品折扣后的最终价格 子矩形查询 找两个和为目标值且不重叠的子数组 安排邮筒 3分 简单 4分 中等 5分 中等 6分 困难 1475 商品折扣后的最终价格用结构体node存商品,index为第i件商品,val是价格从0到n,依次将商品丢入优先队列按价格从大到小排,每次队首的价格大于等于当前第i件商品的价格时,此时(now.val-prices[i])为题目所要求的最终需要支付的价格,然后将队首元素弹出class Solution {struct

2020-06-16 23:02:05 145

原创 快手2020校园招聘秋招笔试--工程A试卷 (编程题题解全)

“好序列”的个数反着求,先求出所有序列个数,再减去不符合的个数。黑边把图分成一个,一个的连通分量。所以我们只要用dfs求出每个不包含黑边的连通分量的个数sz,sz^k就是该集合不符合的个数#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=100050;...

2020-03-20 21:51:25 346

原创 快手2020校园招聘秋招笔试--工程C试卷 (编程题题解全)

1.病毒检测滑动窗口题例子:20101010(第一位下标为1)1)找到第一个最短的满足k条件的子串,即s[2~4],l=2,r=42)找出这个子串左右连续的0的个数,分别为a,b,则对于这个子串的贡献为(a+1)*(b+1)3)之后就是滑动窗口,r到下一个1的位置,l向右移动到第一个一的位置,重复2)计算贡献#include <bits/stdc++.h&g...

2020-03-20 21:40:43 602

原创 美团点评2020校招系统开发方向笔试题(编程题题解)

这套笔试题的编程题很简单,感觉没什么可以写的题解的[编程题]大数加法注意下负号的情况#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1000050;char a[150],b[150],ans[150];int main(){ scanf("...

2020-03-20 10:19:53 875

原创 Codeforces 1326D2 - Prefix-Suffix Palindrome 马拉车

几个月没写马拉车了,比赛的时候调了半天,代码也写的极丑题意:给你字符串s,让你找到一个最长的回文串a+b,字符串a为s的前缀,b为s的后缀题解:先对s做一遍马拉车细分有四种情况:1.b为空,即最长的回文串就是某前缀,代码中该长度记为le2.a为空,即最长的回文串就是某后缀,代码中该长度记为ri3.a>=b,a的前b个字符与b对应为回文串,a串后(a-b)为回文...

2020-03-20 09:12:03 280

原创 Codeforces 1323B Count Subrectangles (Codeforces Round #626 )

题意:给你一个a数组,让你求下式的值(a1+a2)⊕(a1+a3)⊕…⊕(a1+an)⊕(a2+a3)⊕…⊕(a2+an)…⊕(an−1+an)题解:按二进制每一位来处理对于当前位p,只有a[i]+a[j],两数中只有一个数在当前位为1的情况下,两数相加这一位为1.sum记录a[]中在当前位有1的个数,有sum*(n-sum)个(i,j)对数,由该式得su...

2020-03-08 10:25:00 134

原创 CodeCraft-20 (Div. 2)

自从上紫后打的四场四连跪,总共掉了200分,开始怀疑人生。昨天晚上5点打组队赛,然后10点半打cf,当时就比较困了,但这div2过了2题也太说不过去了,跟上一场犯的错误一模一样,当C做不出来就死磕,应该果断点放弃的,D题明显是个简单题,最后又因为没有时间而敲不完。A - Grade Allocation#include<bits/stdc++.h>using names...

2020-03-05 10:26:36 148

原创 UCF Local Programming Contest 2012(Practice)E. Pete's Pantry 【模拟】

题意:n个罐子,每个罐子印了几行字,一行以#为界,最长的的一行记为w,每个罐子是高为6,宽为w的矩形+外面一圈#。按输入顺序将罐子叠放起来,规则为:罐子A(宽度w)只能放在宽度比它大的其他罐子上。从左往右遍历栈,如果当前最高栈罐子的宽度大于w,该罐子叠放到这一栈上。如果找不到这种栈,在最右边开辟一个新栈。另外,每个罐子叠放的位置和字的位置尽可能居中对齐,若不能,可以偏左或偏上一格。最后让你输出...

2020-03-05 09:42:32 485

原创 SWERC 2019-20 K - Birdwatchin

题意:给你n个点,m条边的有向图和一个t,问你有多少个s,s->t有且仅有一条路径(s,t直接相连)题解:反向建图存与t直接连边的特殊节点,从每个特殊点it开始dfs,f[u]维护有几个特殊节点能到达点u,若个数大于1,则有多条路径,不符合题意,剪枝即可。还有对于每个特殊节点的dfs,每个能被遍历到的点只能被遍历一遍。所以通过剪枝,最后的复杂度最高是O(2nlogn)...

2020-03-02 16:13:15 582

原创 Codeforces Round #625 (Div. 1, based on Technocup 2020 Final Round)

第一次打div1,整场裂开,告别了紫名。A题一眼题,却看了10分钟。B题wa到怀疑人生,赛中一直以为思路没问题,也没造样例,凭感觉看代码瞎改,其实交的几份代码都是等价的,错误一点都没改出来。最后半小时,随便造了个样例,就找出问题了,马上改了就A了,说到底还是思考不够周全。C题一眼就是维护线段树搞一下就行,最后时间来不及了。A - Journey Planning只要a[i]-i,即减去...

2020-03-02 10:05:32 129

原创 ICPC North Central NA Contest 2017 D+E+F

D. Smooth Array根据题意,显然是长度为k的循环节,所以按数组下标对k的余数进行分组问题转换为:k组元素,每组选择一个要变换为的数值w,其价值为本组元素与w相 同的个数,且k组数值w的和为S.最终使(N− 总价值)最小,即修改次数最 少。分K组做一下背包。c[i]为该组i出现的次数。f[i]为体积为i时的最大价值。g[i]为上一组元素,到i这个体积的最大f[]值...

2020-03-01 20:52:15 200

原创 2020 CCPC Wannafly Winter Camp Day6 J.K重排列

牛客官方题解每个环的大小都是K的约数即可。枚举编号最小的点所在的环的大小,用组合数学的方法计算题解:C[][]:组合数;fac[]:阶乘一个环的所有排列数为(n-1)!(n为环的长度)f[i]代表总共有i个数的所有方案数新加入一个数i,枚举属于的环的长度j,在剩下的(i-1)个数中取(j-1)个数;取完j个数,剩下(i-j)个数,所以要乘上f[i-j]。算的时候...

2020-02-06 10:48:32 182

原创 codeforces E - Martian Strings 后缀数组

题意:一个主串s,q个短串w,问有多少个短串使得w [1..i]和w [i + 1..end]都出现在s中,而w [1..i]出现在w之前[i + 1..end](没有重叠)题解:只要考虑w [1..i]的最左侧出现和w [i + 1..end]的最右侧位置就行了。因此,记g[j][i]是第j个串,w [1..i]在s中最左边出现的位置,而f[j][i]是第j个串,w [i + 1..e...

2019-11-26 19:40:03 229

原创 codefoces 1250C 线段树 2019NERC

题意:n份工作l,r,p,起始时间,终止时间,报酬。问你从哪一天开始S到哪一天结束T,赚的最多,在工作的时候,每一天都要减k钱,可同时做多份工作,工作必须做完才能拿到报酬,工作期间不能停止。题解:先建线段树,一开始,第l天的值是-l*k。这样子就消除了每天减k的影响。工作按起始时间从小到大排序,记pos为位置。记last 为200000,区间最右端。因为要每份工作要做完才能...

2019-11-16 11:14:10 154

原创 hdu 6704 后缀数组+RMQ+主席树

今年CCPC的第一场网络赛,到现在才补掉。。。当时还没学后缀数组,AC自动机,然后赛场上觉得这题一定是用其中一个算法做的,搜AC自动机是干什么的,偶然就查到一道类似的可以解决这种题的模板,然后直接学习AC自动机,魔改模板,还过了样例,最后wa了一下午,现在还不知道为什么wa,大概是AC自动机的trie树根本建不下吧。题意:给你一个串,q个询问,问你这l到r的子串在这个串中出现了k次的起始位...

2019-11-16 10:46:53 154

原创 主席树题目清单

codeforces 840D (2400)codeforces 813E (2300)

2019-11-14 12:23:47 171

原创 codeforces 802I. Fake News (hard) 后缀数组

题意:求一个串中,所有本质不同子串的出现次数的平方和。题解:对于只出现一次的串的贡献,SA[i]与SA[i−1]、SA[i]与SA[i+1]的LCP的max表示这个串的前max个是不止出现一次,所以该串的长度−max就是只出现一次的串的个数,for一遍,求出每个sa[i]对应的贡献加起来即可对于出现多次的串的贡献。对于i,l[i]表示左边第一个数使height[l[i]]&...

2019-11-08 14:36:03 218

原创 codeforces 452E. Three strings 后缀数组

题意:给三个串s1,s2,s3,对于每个长度L(1<=L<=min(length(s1,s2,s3)))求有多少个三元组<p1,p2,p3>使得s1[p1...p1+L-1]==s2[p2..p2+L-1]==s3[p3..p3+L-1],求出所有L对应的答案对1e9+7取模。题解:先把串连在一起,记录每个位置所属的串,跑一下后缀数组求出height数组。如果从...

2019-11-08 13:31:29 198

空空如也

空空如也

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

TA关注的人

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