自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

独钓门前月

欲买桂花同载酒,终不似,少年游

  • 博客(742)
  • 收藏
  • 关注

原创 NOIP / ACM 选手必知的编程技巧及常用C++头文件模板

前言      平时做题或者比赛掌握一些有用的技巧会方便我们调试,使程序可读性更强,另外模板也比较省时,所以我就从网上整理了一下。 重载运算符重载运算符是通过对运算符的重新定义,使得其支持特定数据类型的运算操作。有的时候,我们构造了一种新的数据类型(高精度数,矩阵),当然可以将数据类型的运算操作用函数的形式写出来。但采用重载运算符的方式,可以让程序更为自然。当然,重载运算符...

2018-11-19 10:53:45 1787

原创 LeetCode 216周赛题解

这场比赛题目比较简单,真*手速场B题读错题意wa了一发,改了就过了。D题手滑运行点成提交了也wa了一发,,还好改了都过了。5605. 检查两个字符串数组是否相等题意:给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。思路:string直接连接起来比较就ok了。Code:class Solution {public: bool array

2020-11-22 22:57:41 643

原创 剑指offer题解【全】

最近把之前刷过的剑指offer题目总结一下,先列举一部分,待更新……剑指 Offer 03. 数组中重复的数字题意:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。思路:假设当前值为x,我们将其放在下标为x的位置,也就是令nums[x] = x;如果在交换前发现nums[x]=x,即已经存在x这个数了就找到重复的数字了。时间复杂度

2020-11-19 14:19:19 701

原创 LeetCode 183. 从不订购的客户【mysql】

183. 从不订购的客户题意:某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。Customers 表:+----+-------+| Id | Name |+----+-------+| 1 | Joe || 2 | Henry || 3 | Sam || 4 | Max |+----+-------+Orders 表:+----+------------+| Id | Custome

2020-11-09 22:33:20 318

原创 LeetCode 182. 查找重复的电子邮箱【MySQL】

182. 查找重复的电子邮箱题意:编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。+----+---------+| Id | Email |+----+---------+| 1 | [email protected] || 2 | [email protected] || 3 | [email protected] |+----+---------+思路:首先通过子查询将其按照邮箱进行分组然后筛选出出现次数大于1的邮箱,再挑选出不重复的即可。Code:select distinct Email f

2020-11-09 22:32:48 301

原创 LeetCode 181. 超过经理收入的员工【MySQL】

181. 超过经理收入的员工题意:Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。+----+-------+--------+-----------+| Id | Name | Salary | ManagerId |+----+-------+--------+-----------+| 1 | Joe | 70000 | 3 || 2 | Henry | 80000 | 4

2020-11-09 22:32:07 184

原创 LeetCode180. 连续出现的数字【MySQL】

180. 连续出现的数字题意:编写一个 SQL 查询,查找所有至少连续出现三次的数字。+----+-----+| Id | Num |+----+-----+| 1 | 1 || 2 | 1 || 3 | 1 || 4 | 2 || 5 | 1 || 6 | 2 || 7 | 2 |+----+-----+例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。+-----------------+| Consecuti

2020-11-09 22:29:39 200

原创 LeetCode178. 分数排名【MySQL】

178. 分数排名题意:编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 | 4.00 || 6 | 3.65 |+----+-------+例

2020-11-09 22:28:52 251

原创 LeetCode 176. 第二高的薪水【MySQL】

176. 第二高的薪水题意编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。±—±-------+| Id | Salary |±—±-------+| 1 | 100 || 2 | 200 || 3 | 300 |±—±-------+例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。±--------------------+| SecondH

2020-11-09 22:28:13 201

原创 LeetCode175. 组合两个表【MySQL】

175. 组合两个表题意:表1: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address+-------------+-------

2020-11-09 22:27:39 192

原创 LeetCode 1115. 交替打印FooBar【互斥量、条件变量】

1115. 交替打印FooBar题意:我们提供一个类:class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } }}两个不同的线程将会共用一个 FooBar 实例。其中一个

2020-11-07 23:46:27 269

原创 LeetCode 1114.按序打印【多线程互斥量】

1114. 按序打印题意:我们提供了一个类:public class Foo {public void first() { print(“first”); }public void second() { print(“second”); }public void third() { print(“third”); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 first() 方法线程 B 将会调用 second() 方法线程 C 将会调用 third() 方法请

2020-11-07 23:44:25 271

原创 C++11多线程之condition_variable(条件变量)

头文件#include <condition_variable>概述condition_variable 类是同步原语,能用于阻塞一个线程,或同时阻塞多个线程,直至另一线程修改共享变量(条件)并通知 condition_variable 。其不可复制赋值。构造函数// 1.构造 condition_variable 类型对象。condition_variable();//2.复制构造函数被删除。condition_variable(const condition_variab

2020-11-07 23:43:29 668

原创 MySQL连接查询

数据准备# 创建一个person表create table person( id int, name varchar(20), card_id int);# 创建一个card表create table card( id int, name varchar(20));# 插入数据insert into card values (1, '饭卡'), (2, '建行卡'), (3, '农行卡'), (4, '工商卡'), (5, '邮政卡');insert in

2020-11-04 18:28:34 143

原创 MySQL查询编程实战

文章目录数据准备插入数据查询查询教师单位不重复的列查询score表中成绩60到80之间的所有记录查询score表中成绩85、86或88的所有记录以class降序查询student表的所有记录查询班级‘95031’的人数查询score表中成绩最高的学生的学号查询每门课程的平均成绩查询score表中至少有2名学生选修的课并以3开头的课程的平均分数查询所有学生的sname,cno和degree列查询所有学生的sname,cname和degree列查询 95031 班学生每门课程的平均成绩查询在 `3-105` 课

2020-11-04 18:22:50 208

原创 数据库三大范式

第一范式-1NF第一范式要求属性具有原子性,字段不可再分割。表:字段1,字段2(字段2.1、字段2.2)……字段n假设一个人的地址是一个字段,那么它又可再分割为省、市、区,那么就不满足1NF。否则就是。第二范式-2NF2NF是需要在满足1NF的前提下,除主键外所有列都必须完全依赖主键,即不存在部分依赖。表:学号、姓名、课程号、学分这个表说明两个事物:学生信息和课程信息。一个人的学分依赖于课程号,姓名依赖于学号,所以不满足第二范式。可能会存在问题:数据冗余:每条记录都含有相同信息;

2020-11-03 23:10:20 448

原创 LeetCode 1114.按序打印【互斥量】

1114. 按序打印题意:我们提供了一个类:public class Foo {public void first() { print(“first”); }public void second() { print(“second”); }public void third() { print(“third”); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 first() 方法线程 B 将会调用 second() 方法线程 C 将会调用 third() 方法请

2020-11-02 22:09:53 322

原创 C++11多线程之unique_lock

概述类 unique_lock 是通用互斥包装器,允许延迟锁定、锁定的有时限尝试、递归锁定、所有权转移和与条件变量一同使用。类 unique_lock 可移动,但不可复制。构造// 构造无关联互斥的 unique_lock unique_lock() noexcept;//移动构造函数。以 other 的内容初始化 unique_lock 。令 other 无关联互斥。unique_lock( unique_lock&& other ) noexcept;//通过调用 m

2020-11-02 22:09:16 1044 1

原创 C++11多线程之mutex

概述mutex 类是能用于保护共享数据免受从多个线程同时访问的同步原语。调用方线程从它成功调用 lock 或 try_lock 开始,到它调用 unlock 为止占有 mutex 。线程占有 mutex 时,所有其他线程若试图要求 mutex 的所有权,则将阻塞(对于 lock 的调用)或收到 false 返回值(对于 try_lock )。调用方线程在调用 lock 或 try_lock 前必须不占有 mutex 。mutex 既不可复制亦不可移动。构造//构造互斥。调用后互斥在未锁定状

2020-11-02 22:08:44 535

原创 C++11多线程之thread

头文件需要添加头文件#include<thread>构造//构造不表示线程的新 thread 对象。thread() noexcept; //移动构造函数。构造表示曾为 other 所表示的执行线程的 thread 对象。此调用后 other 不再表示执行线程。thread(thread&& other) noexcept; // 复制构造函数被删除; thread 不可复制。没有二个 std::thread 对象可表示同一执行线程。thread( con

2020-11-02 22:08:01 889

原创 LeetCode 213周赛题解

A-1640. 能否连接形成数组题意:给你一个整数数组 arr ,数组中的每个整数 互不相同 。另有一个由整数数组构成的数组 pieces,其中的整数也 互不相同 。请你以 任意顺序 连接 pieces 中的数组以形成 arr 。但是,不允许 对每个数组 pieces[i] 中的整数重新排序。如果可以连接 pieces 中的数组形成 arr ,返回 true ;否则,返回 false 。思路:由于每个数字都不相同,所以我们只要看每个子数组在arr中是否连续出现即可。Code:class

2020-11-02 14:44:44 1128

原创 leetcode 寻找两个正序数组的中位数

题意:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。思路:首先假设两个数组大小分别为n和m,如果(n + m)为奇数的话我们需要找到第(n + m + 1) / 2个元素;如果(n + m)为偶数的话我们需要找到第(n + m) / 2 和 (n + m) / 2 + 1个元素,现在我们定义一个函数来找到两个数组中第k大的

2020-11-02 14:43:21 164

原创 LeetCode215. 数组中的第K个最大元素

题意:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。思路:利用快排来完成这个操作,对于某次快排操作后我们可以得到一个下标p,小于p的都位于p的左边,大于p的都位于p的右边。如果p==k,说明正好是我们要寻找的数,返回即可。如果p<k,那么我们就再对右数组进行快排操作。代码:class Solution {public: int slove(vector<int>& nums, in

2020-11-02 14:41:48 140

原创 MySQL键表约束

文章目录主键约束外键约束唯一约束默认约束非空约束主键约束主键(Primary Key)是唯一标识表中每行的列或一组列。当定义表的主键时,必须遵循以下规则:主键必须包含唯一值。如果主键由多个列组成,则这些列中的值的组合必须是唯一的。主键列不能包含NULL值。 这意味着必须使用NOT NULL属性声明主键列。如果没有指定NOT NULL,MySQL将强制为主键列为NOT NULL。一张表只有一个主键。例子:创建一个学生表,其中id为主键create table student( id int

2020-11-01 22:29:41 215

原创 MySQL基础二

文章目录SELECT查询WHERE语句UPDATE更新DELETE删除LIKE子句UNION操作符排序分组SELECT查询格式:SELECT column_name,column_name FROM table_name[WHERE Clause][LIMIT N][ OFFSET M]例子:查询数据表student的所有记录select * from student;例子:查询数据表student中所有学生的学号和姓名select cno, name from student;

2020-11-01 22:29:04 89

原创 MySQL基础一

文章目录创建数据库删除数据库选择数据库MySQL数据类型数值类型日期和时间类型字符串类型创建数据表删除数据表insert语句创建数据库CREATE DATABASE db_name;例子:创建数据库CREATE DATABASE DB1;例子:查询数据库SHOW DB1;删除数据库DROP DATABASE db_name;例子:删除数据库DB1DROP DATABASE DB1;选择数据库USE db_name;例子:选择数据库USE DB1;MySQL数据类型

2020-11-01 22:25:35 81

原创 C++智能指针

引言在C++中,动态内存的管理是由new/delete运算符完成的,new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针。delete:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。但是经常会出现以下两种问题:一是忘记释放内存,会造成内存泄露;二是尚有指针引用内存的情况下释放了它,就会产生引用非法内存的指针。为了更加安全的使用动态内存,引入了智能指针的概念。一:auto_ptrauto_ptr是C++标准库中的智能指针模板类,头文件auto_ptr的出现,主要是为了解决“有

2020-10-29 22:38:36 120

原创 Linux基本命令

cd:切换当前目录,路径可以是绝对/相对路径。cd /root/file # 切换到目录/root/filecd ./path # 切换到当前目录下/path目录中,'.'表示当前目录cd ../path # 切换到上层目录中的path目录中,'.'表示上层目录cp:用于复制文件或目录。cp [options] source dest常用参数如下:-a:保留文件特性,复制目录下所有内容-d:复制时保留链接-f:覆盖已经存在的目标文件-i:覆盖目标文件..

2020-09-01 20:42:33 106

原创 牛客NC93-设计LRU缓存结构

题意设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能:set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来一个整数x,

2020-08-31 22:09:05 267

原创 HDU - 4417 Super Mario 主席树

题目链接:https://vjudge.net/problem/HDU-4417#author=0题意:多次询问区间小于等于k的数目。思路:考虑用主席树,离散化要记得将k的值也添入,其余就是主席树常规操作了。#include<bits/stdc++.h>using namespace std;typedef long long ll;#define fi first#define se second#define ls rt << 1#define rs rt

2020-06-29 20:59:56 206

原创 洛谷P1972 [SDOI2009]HH的项链 离线+树状数组 主席树

题目链接:https://www.luogu.com.cn/problem/P1972题意:区间不同数的个数。思路:第一种写法:离线询问,将其按照r大小排序,然后对于ai,将当前位置+1,上一次出现位置-1,求前缀和就是答案。#include<bits/stdc++.h>using namespace std;typedef long long ll;#define fi first#define se second#define ls rt << 1#def

2020-06-29 16:43:33 289

原创 CF600E Lomsat gelral 树上启发式合并

题目链接:https://www.luogu.com.cn/problem/CF600E题意:一棵树有n个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和。思路:我们首先处理出每个结点的重链,然后每次先处理轻链,计算贡献,然后再消去贡献,当最后处理到重链时保留贡献,就这样启发式地合并,可以将复杂度降到nlogn。#include<bits/stdc++.h>using namespace std;typedef long long ll;#d.

2020-06-22 21:29:46 208

原创 牛客网 月出皎兮,佼人僚兮。 树上启发式合并

题目链接:https://ac.nowcoder.com/acm/contest/6037/F题意:给一棵树有n个节点,根节点为1。每个点有一个颜色,并且有一个权值,为当前这个节点颜色的数量。对每个点输出,当前点以及子树中的最大匹配数。当且仅当颜色不同可以匹配。思路:记录每个子树的所有颜色数量sum和以及最多的那个种类的颜色个数max,如果max大于sum/2,那么说明最多只能有sum - max对能够匹配,否则的话说明可以将其都两两配对。#include<bits/stdc++.h&g

2020-06-22 21:23:53 193

原创 洛谷U41492 树上数颜色 树上启发式合并

题目链接:https://www.luogu.com.cn/problem/U41492题意:给一棵根为1的树,每次询问子树颜色种类数思路:树上启发式合并,每次计算时如果是第一次出现就计算贡献,轻链的话要消除贡献#include<bits/stdc++.h>using namespace std;typedef long long ll;#define fi first#define se second#define ls rt << 1#define rs .

2020-06-22 21:17:31 325

原创 51nod 1202 子序列个数 【计数DP】

子序列的定义:对于一个序列a=a[1],a[2],......a[n]。则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1<=p1<p2<.....<pm<=n。例如4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。对于给出序列a,有些子序列可能是相同的,这里只算做1个,请输出a的不同子序列的数量。由于答案比较大,输出Mod 10^9 + 7的结果即可。题目链接:http://www.51nod.com/Cha.

2020-06-04 21:44:14 217

原创 Codeforces Round #620 E 1-Trees and Queries LCA

题目链接:https://codeforces.com/contest/1304/problem/E题意:给你一颗树,多次询问,每次给你一条连边x,y的机会,问你a到b是否存在k条边的路其中某些边可以重复任意次思路;不加边时只要k>= dis(a, b) 并且奇偶性相同就行,因为边可以重复走,考虑加边时带来的影响是多了dis(a, x) + dis(y, b) + 1, dis(a...

2020-04-30 20:59:22 253 1

原创 Codeforces Global Round 7 D2. Prefix-Suffix Palindrome (Hard version) 马拉车

题目链接:http://codeforces.com/contest/1326/problem/D2题意:给你一个字符串,找到该字符串的前缀s和后缀t连接,使得组成的字符串是回文串且最长思路:因为一个是前缀一个是后缀,所以我们先找到两端的可以组成回文串的字符,然后把剩下的中间的字符正反分别用马拉车求最长回文串且是端点开始的回文串,这样才满足要求。#include<bits/st...

2020-04-30 20:54:49 250 1

原创 Codeforces Round #636 (Div. 3) E. Weights Distributing BFS + 枚举

题目链接:http://codeforces.com/contest/1343/problem/E题意:给你一个图和边权集合让你分配每条边的权值使得a->b->c的路径和最小思路:枚举经过的中间点x,也就是a->x->b->x->c, 所以我们分别以a,b,c为起点跑最短路然后贪心着分配边权取最小值就行了#include<bits/stdc+...

2020-04-30 15:30:12 200

原创 Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 线段树区间修改 差分

题目链接:http://codeforces.com/contest/1343/problem/D题意:给你n个元素的序列,你可以每次将一个数变成[1, k]的值,现在要求a[i] + a[n - i + 1] = 定值问最少修改几个数就可以得到满足条件的序列思路:这个定值一定是某对和,所以我们考虑将a[i] + a[n - i + 1]的和改为某个值需要修改0,1还是2个数可以发现是在某...

2020-04-30 15:20:25 199

原创 Codeforces Round #637 (Div. 2) D. Nastya and Scoreboard 线性DP

题目链接:http://codeforces.com/contest/1341/problem/D题意:0~9的数字是由图中的木棒组成的,现在给你若干个显示屏,你可以恰好添加k个木棒问你能够组成的最大数字是多少思路:num[i][j]表示i加j个木棒能凑成的最大的数,我们先初始化num数组,f[i][j]表示前i个用了j个木棒的最大值我们从后往前考虑,这样保证前面的一定最大,从前往后考虑...

2020-04-29 20:58:53 227

空空如也

空空如也

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

TA关注的人

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