自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BJTU Tower of Hanoi 变种汉诺塔——每个型号盘子不止一个,每个型号盘子也要按序排放

Tower of Hanoi成绩: 5 / 折扣: 0.8题面描述变种汉诺塔问题和普通汉诺塔问题略有不同,规则描述如下:有三根柱子,在最左侧柱子上放置着若干圆盘。与传统汉诺塔不同的是,其中存在部分大小相同的圆盘。要求包括初始状态在内,每个圆盘上方放置的圆盘不得大于该圆盘,即圆盘上方只能放置小于自己或和自己相同大小的圆盘。每次移动只能将某柱子最顶部的一个圆盘移动到另一柱子的最顶部。需要注意的是,大小相同的圆盘具有的其他特征是不一样的,例如不同颜色。最后需要保证 2 号柱子上

2020-07-18 19:55:53 436

原创 滑动窗口的最大值&队列的最大值——单调栈/单调队列的应用

I. 滑动窗口的最大值给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]维护一个单调递减队列,维护区间为k;class Solution {public: vector<int> maxSlidingWindow(vect...

2020-02-20 07:34:39 395

原创 数组中数字出现的次数(位运算的运用)

背景知识:若x是任意整数, 则有:x^x=0;x^0=x;三道题:一个数组,其中只有一个数只出现一次,其他数字均出现两次,求只出现一次的数答:将所有数异或一遍,最终结果即所求一个数组,其中有两个数只出现一次,其他数字均出现两次,求只出现一次的数答:记只出现一次的数分别为a, b;所有数字异或和的值为a^b!=0;记a^b的二进制表示在inx位上为1;数组中在inx...

2020-02-19 08:28:35 427

原创 数组中出现次数超过一半的数字( O(n) 时间复杂度)

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2第一个方法排序后取中位数,很简单时间复杂度为O(nlogn);下面看一个O(n)的方法假设数组中出现次数最多的数字是x,则x的出现次数比其他数字出现次数之和还要多;用cnt记录x出现的...

2020-02-18 19:01:55 306

原创 包含min函数的栈(借用辅助栈)

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。借用一个辅助栈,用来存放当前最小值记存放所有元素的栈为s, 存放最小值的栈为mx元素入栈时当m为空时,s入栈的同时,m也入栈;当m不为空时,如果m的栈顶元素小于等于x,m入栈,否则m不入栈出栈时s栈顶元素与m栈顶元素相等时,s, m...

2020-02-18 14:30:13 163

原创 下一个排列(Leetcode)

实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路:题目大意就是找该数组的所有排列顺序中,字典序比给定顺序...

2020-02-15 08:49:01 158

原创 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), ne...

2020-02-14 16:55:35 223

原创 二维数组中的查找(剑指offer)

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。记数组为a[n][m],要查询的数记为x则若a[i][j]<x ,则x比存在于a[i][j]的右下方则若a[i][j]>x ,则x比存在于a[i][j]的左上方由a[n][0]开始查询,...

2020-02-09 22:13:29 159

原创 MySQL忘记密码后重置密码

第一步:关闭MySQL服务器操作: 在命令行(管理员模式下)键入net stop mysql第二步:跳过密码验证在DOS页面进入当初安装MySQL的安装目录的bin路径下执行mysqld --console --skip-grant-tables --shared-memory 命令然后保持此窗口不变,新打开一个DOS窗口进入MySQL目录下的bin路径,执行mysql -u ro...

2020-02-09 11:32:53 124

原创 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解法一:/*bool flag = x && y;对于上式,若x==0,不会判断y也即对于&&运算符,若左侧为false,那么不会对右侧进行运算*/int solve0(int n){ int sum = n; ...

2020-02-07 07:24:50 198

原创 不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。先来计算下面数之和:6 + 5 = 11二进制表示:110 + 101 = 1011列竖式:总结:a、b相加步骤:1. x=a^b, y=(a&b)<<1,其中y表示进位2. 若y==0, 结果为y3. 计算x, y相加,另a=x, b=y,到步骤1#include <bi...

2020-02-06 21:34:55 129

原创 数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。利用异或解决1^1 = 01^0 = 10^0 = 0x^x = 0设数组中只出现一次的数分别为a, b;记t=0;t与数组中所有数异或结果为result = a^b;又a!=b;则result!=0;设result的二进制表示的第inx位是1,则a和b的二进制表示的inx位上一个为1...

2020-02-06 20:53:42 165

原创 进制转换

import java.util.*;import java.lang.*;public class ConversionOfNumberSystems { public class Number{ String s; int x; Number(){} Number(String s, int x){ this.s=s; this.x=x; } ...

2019-12-29 17:36:58 159

原创 面向对象基础概述

一:面向对象语言基本特性:万物皆对象;程序是对象的集合,它们彼此通过发送消息调用对方;每个对象都拥有由其他对象所构成的存储;每个对象都拥有其类型(Type),每个对象都是某个类(Class)的实例(Instance);某一特定类型的所有对象都可以接受(Receive)同样的信息;二:对象对象拥有状态(State)、行为(Behaviour)、标识(Identity);这意味着每一个对...

2019-12-27 20:56:02 159

原创 JAVA基础杂谈

类的规范命名:以大写字母开头的骆驼命名法;(这只是行业内不成言的规范)注释://注释一行/多行注释//** 文档注释, 可用来注释类、接口、静态方法、成员方法、静态变量、成员变量、常量*/数据类型整型: 用于表示没有小数部分的数值,允许是负数;int: 4字节 -2147483648 ~ 2147483647 (2^32)short: ...

2019-12-27 20:54:55 168

原创 JAVA 项目目录

JDK目录:jdkbin 编译器和工具demo 演示docs HTML格式的类库文档include 用于编译本地方法的文件jre ...

2019-12-27 15:31:33 432

原创 杨辉三角

杨辉三角(也称帕斯卡三角)是一个无限对称的数字金字塔,从顶部的单个1开始,下面一行中的每个数字都是上面两个数字的和。杨辉三角,是二项式系数在三角形中的一种几何排列,在中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623—-1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。/**性质:最外层的数...

2019-12-27 15:30:30 1709

原创 JDK安装&JAVA环境配置

一: 下载安装JDK下载网址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载之后是这个样子:双击安装,默认安装位置在C:\Program Files\Java\jdk1.8.0_231以及C:\Program Files\Java\jre1.8.0_231;也可以...

2019-12-26 15:06:21 191

原创 ios::sync_with_stdio(false);

ios::sync_with_stdio(false);

2019-05-21 21:06:16 203

原创 1156D - 0-1-Tree 树形DP

题意:给出一棵树,每条边的权值要么是0, 要么是1;若有序数对<u, v>, u到v的路径中满足下列任一条件, 就称该有序数对有效:所经过的路径权值全为0;所经过的路径权值全为1;经过权值为1的路径后不会经过权值为0的路径,即在经过的路径中前半段权值全为1,后半段权值全为0;问:有多少呢有效有序数对;(注: <a, b> != <b, a>)定义...

2019-05-08 21:59:17 357

原创 树的遍历——前序,后序,中序的递归与迭代解法,以及层序的队列解法

#include<bits/stdc++.h>using namespace std;struct TreeNode{ int val; struct TreeNode *left, *right;};TreeNode* buildTree(TreeNode *root, int val){ TreeNode *T = (struct TreeNode*)malloc(s...

2019-03-28 20:53:39 483

原创 快速幂——原理及实现

这篇文章讲一下快速幂的问题;首先问一个简单的问题:23是几?很简单啊,是不是?答案是8;那么是怎么得来的呢?222=8;连续乘了3次2;再看下边的问题:213=?这个其实也很简单,不就是13个2相乘吗,连续计算13次就OK啦;但是大家有没有想过,其实我们可以减少运算次数,更快的得到答案;怎么做呢?先看一下216;216 = 28 * 28对于上式,我们可以先运算8次得到...

2019-03-23 11:10:17 8810 4

原创 二分图匹配——匈牙利算法

先上几个概念:二分图:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。如下图:最大匹配:在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。选择这样的边数最...

2019-03-19 21:50:33 250

原创 拓扑排序

一:定义:拓扑排序: 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之...

2019-03-18 20:39:56 163

原创 KMP学习篇——next数组计算及应用,KMP匹配

众所周知, KMP是个神奇的算法,不少人都会使用,但是大部分人只是只知其然不知其所以然(像今天之前的我,模板记得溜溜的,但是却不知道是怎样一步一步推导而来的),下面我就来详细探讨一下;首先学习一个算法,要首先知道该算的是什么,是用来做什么的;KMP算法,就是一个用来匹配字符串的优秀算法,由D.E.Knuth、J.H.Morris和V.R.Pratt三位大牛同时发现的,因此人们称它为克努特——莫...

2019-03-13 15:54:22 605

原创 HTTP状态码详解

状态码 含义 100 客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。服务器必须在请求完成后向客户端发送一个最终响应。 101 服务器已经理解了客户端的请求,并将通过Upgrade 消息头通知客户端采用不同的协议来完成这个请求。在发送完这个响应最后的空行后,服务器将会切换到在U...

2018-12-01 10:36:07 149

原创 RCB颜色对照表

在这里插入图片描述在这里插入图片描述

2018-12-01 10:29:29 2970

原创 A Chess Game POJ - 2425(SG函数)

POJ 2425题意:一个有向无环图,在若干点上有若干棋子,两人轮流移动棋子,每次只能将一个棋子移动一步,当无棋子可移动时输,即移动最后一枚棋子者胜;思路:假设只有一枚棋子,那么对于一个点的胜负局面其实就是其SG值;多枚棋子的胜负局面就是每个点的SG值异或和;现在就是要求每个点的SG值;SG(x)=mex(SG(y) | y是x的后继点);mex(minimal excludant...

2018-10-13 14:38:13 251

原创 Life Winner Bo HDU - 5754 博弈

HDU 5754题意:一个n*m的棋盘,左上角为(1, 1), 右下角为(n, m),棋子一开始在(1, 1),两人轮流移动棋子,先把棋子移动到(n, m)的获胜,如果无法将棋子移动到(n, m),则记为平局(棋子只能由左到右, 由上到下移动);有四种棋子:king:横、直、斜都可以走,但每次限走一步;rook:横、竖均可以走,步数不受限制,不能斜走;knight:每步棋先横走或直走一...

2018-10-13 12:13:11 208

原创 Frequent values POJ - 3368(线段树,区间合并)

Frequent values POJ - 3368题目链接题意:一个非递减序列,随机询问区间[l, r]中出现次数最多的数的出现次数; 思路:多次询问,首先就要想一下线段树;由题意可知数列中的数是连续的,既然是连续的就有合并的希望!!!那么就来一发线段树吧(RMQ也可以做,但是不会啊!!!还是蒟蒻); 首先,要用线段树维护哪些值? 题目要求区间内出现次数最多的数的出现...

2018-09-15 10:05:14 253

原创 How far away ? HDU - 2586(LCA Tarjan离线方法 or 倍增在线方法)

How far away ? HDU - 2586题目链接题意:给出一棵树,问任意两点的间的最小距离; 思路:考虑本题,若t时a, b的LCA,r是树根那么dis[a, b]=dis[r, a]+dis[r, b]-2*dis[r, t]; dis[r, p] (根到p点的距离) 可以通过dfs求得,那么找出[a, b]的LCA就万事大吉了; 首先是Tarjan离线方法:...

2018-09-14 19:57:04 202

原创 Balanced Lineup POJ - 3264(RMQ)

Balanced Lineup POJ - 3264题目连接题意:给出一个数列,Q个询问,问区间[A, B]中最大值与最小值的差; 思路:线段树可以做,维护最大最小值,直接查找就可以;但是现在要用RMQ做; 何为RMQ?(Range Minimum/Maximum Query) 区间最值询问,通过O(nlogn)的预处理可以在O(1)的时间内找到区间的最值;下面以最大值为例: 令Fm...

2018-09-14 19:28:50 272

原创 Snacks HDU - 5692 (线段树+dfs序)

Snacks HDU - 5692题目链接题意:n个点,n-1条边连接,使其形成一棵树;每个点有一个权值;m个询问: 0 x y:将x点的值改为y; 1 x :从0点出发,问经过x点的路径中能得到的最大全权值和是多少?思路:m个询问首先就想到线段树;但是此题并不是线性问题,而是树形问题,所以想用线段树就要先把树转换成线性问题;问0点出发经过x点得到的最大权值其实就是0到x的距离...

2018-09-14 16:10:41 232

原创 防溢出

#pragma comment(linker, "/STACK:1024000000,1024000000")

2018-09-14 14:56:36 312

原创 Codeforces Round #471 (Div. 2) C. Sad powers

题目链接题意:问区间[L, R]中有多少数字可以写成的形式;思路::当p&gt;=3时,x&lt;=1e6;只有p=2时x能达到1e9;但是[L, R]区间中满足的数有(int)sqrt(R)-(int)sqrt(L-1)个,所以对于区间[L, R]先找出p&gt;=3的情况,再加上(int)sqrt(R)-(int)sqrt(L-1),而对于p&gt;=3的情况打表找出来就可以了,然后排...

2018-09-08 10:37:13 246 1

原创 Educational Codeforces Round 50 (Rated for Div. 2) C. Classy Numbers(dfs构造某类数)

题目链接题意:找出区间[L, R]之间最多有三位是非零数字的十进制数的个数;思路:用构造出所有的满足题意的数,然后排序,二分找;#include &lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;vector&lt;ll&gt; vec;void dfs(ll cur, int cnt, int len...

2018-09-08 08:53:45 716

原创 素数回文 HDU - 1431

素数回文 题目链接:HDU - 1431 题意:找出区间[a, b]之间既是素数,又是回文数的所有数并打印;思路:很有意思的一道题,一开始竟然想着用数位DP,,,然而并不用,利用回文数的性质构造回文数,然后判断构造的数是不是回文数就ok了;#include &lt;bits/stdc++.h&gt;using namespace std;bool Isprime(int x)...

2018-09-07 17:33:55 407

原创 欧拉函数初步探寻

一:什么是欧拉函数?定义:在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目。(PS:,在小于等于8的数中与与8互质的数是:1, 3, 5, 7;共四个);二:欧拉函数有什么用?由定义可知,欧拉函数可以求出小于等于n的正整数中与n互质的数的个数;三:欧拉函数有什么性质?1:若n与m互质,则有;2:若n为奇数,则有;3:若p是素数,a是正整数,则有;...

2018-09-07 16:27:49 206

原创 Fibonacci Tree HDU - 4786 (生成树)

Fibonacci Tree 题目链接:HDU - 4786题意:给出一个图,每条边的权值要么是0,要么是1,问能否构成一棵生成树,使得这棵树的边权和为斐波那契数;思路:记图的最大生成树和最小生成树的边权和分别为max, min,那么,一定可以构造出合法的生成树,使得其边权和在区间[min, max];这是个值得思考的地方;当我们得到一个最小生成树后,想要向最大生成树转换时,必定是...

2018-09-06 09:05:05 359

原创 Codeforces Round #496 (Div. 3) D. Polycarp and Div 3

题目链接题意:给出一个数串,将其分割成若干块,使得分割后形成的数中整除3的数最多,输出其个数;思路:每个数对3取余有三种情况,0, 1, 2, 是0就直接被整除了;对于每相邻的两个数对三取余有9种, (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2);那么其中(0, 0), (1, 2), (2, 1...

2018-09-05 16:34:54 140

空空如也

空空如也

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

TA关注的人

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