- 博客(58)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 ACM-ICPC/CCPC/JSCPC板子总结(不断更新ing)
ACM-ICPC/CCPC/JSCPC板子Team: Three alchemists(三个炼金师)@zhoubo,18CS,Suzhou University of Science and Technology@huangyangbang,20ICS,Suzhou University of Science and Technology@shiweichun,20CS,Suzhou University of Science and Technology一、数论1.试除法判定质数bool
2020-11-12 21:20:26
2772
原创 dp入门day3[LeetCode55&&LeetCode45]
LeetCode 55. 跳跃游戏贪心:1.贪心+正序对于数组中的任意一个位置y,如何判断它是否可以到达?根据题目描述,只要存在一个位置x,它本身可以到达,而且它跳跃的最大长度为nums[x],那么x+nums[x],如果x+nums[x]>=y,那么位置y也可以到达。也就是说,对于每一个可到达的位置x,它使得x+1,x+2,… ,x+nums[x]>=y,那么位置y也可以到达。这样依次遍历数组中的每一个位置,并实时维护可以到达的最远位置。对于当前到达的位置x,如果它在最远可以到达的位
2022-01-17 16:59:31
2240
原创 dp入门day1[Leetcode509&&LeetCode1137]
从简单的一道题目开始讲起,递归->回溯->记忆化搜索->dp->滚动数组+dp,体会dp算法的源头思想
2022-01-14 22:49:48
318
2
原创 985考研上岸之数据结构部分(很全,抓住重点)
考研数据结构-Data Structure of Kao YanZhou Bo(Suzhou University of Science and Technology)Email:xh_zhoubo@163.com QQ:2364339378主要王道代码风格太乱了(怀疑不是一个人敲的,我统一了一下)有问题的地方欢迎评论区指正~ 参考:王道+一些算法模板线性表那一块应该主要考察算法要不就是双指针,要不就是分治,实在不行就是暴力,自己主要练一下链表那块的规范因此主要整理树(重中之重)、图、串这一
2021-11-01 10:31:46
1911
2
原创 AtCoder Regular Contest 112 题解
A. A - B = CA题题目链接【题解】题意要求符合题意的对数。我们考虑对于每一个C而言,有如下的对数:(L, L + C), … ,(R - C, R), 即总共R - L + 1 - C对。而L <= C <= R 且 C <= R - L(如果C > R - L则没有符合题意的对数),则 L <= C <= R - L,但是显然L, R - L谁大谁小是不清楚的,需要讨论情况。如果L > R - L,则没有符合题意的对数,输出为0;否则即存在若干个C,
2021-11-01 10:24:48
209
原创 Atcoder Beginner Contest 203 题解
A.B略C-Friends and Travel costs(思维)思路:题目限定了从i村庄到(i+1)村庄有path,其他村庄之间无path,限定了此道题就是一维坐标轴的情况(直线步行),不是图。你有k元(ans=k,用ans存),而你每从i村庄到(i+1)村庄你就要花费1元,此时你在0村庄,自己想一下,比如,你现在身上有3元,那么你可以从0村庄到3村庄,0->1->2->3,也就是说你身上的钱对应着你能走到第几个村庄(路上没有朋友的情况);但是路上如果有你的朋友的话,你就可以补充身
2021-05-31 12:40:03
584
原创 Atcoder Beginner Contest 202 题解
A.B比较简单,主要想说下C.D的做法C-Made Up题目链接有三个数组AAA=(A1A_1A1,A2A_2A2,…),BBB=(B1B_1B1,B2B_2B2,…),CCC=(C1C_1C1,C2C_2C2,…),问有多少对AiA_iAi=BCjB_{C_j}BCj?(有点逆过来做的思想)我的做法是用cnt数组记录A数组中出现的每个数的个数,cnt[a[i]]++,最后对C数组遍历,因为C数组中的数是B数组中的索引,ans+=cnt[b[c[i]]].#include<
2021-05-23 23:31:23
613
原创 AtCoder Beginner Contest 200 题解
A.B比较简单,题解就不放了,主要想说下C的几种做法C-Ringo’s Favorite Numbers 2题目链接本题我在比赛中用的是类似埃氏筛的思想,用一个vis[]数组来标记。但是赛后看队友的做法和editorial提供的做法时,感觉有所启发,故记录一下,感觉还蛮有意思的,主要想分享一下一步步优化的过程。具体做法见我的代码。#include<bits/stdc++.h>using namespace std;/*//1.法1:埃氏筛的思想,我的做法,核心是统计每一类的个数,然
2021-05-09 10:29:30
817
3
原创 AtCoder Regular Contest 109 题解
A.HandsA题题目链接【题解】首先自己按照题意画一下图示,求从A楼的a层到B楼的b层的最少时间。可以观察到,我们可以根据讨论a, b的大小。a = b, 显然ans是x(时间单位略去)a > b, 你不妨就先设a = 4, b = 2来看,首先我们知道肯定要从A楼的第4层走到B楼的第3层,需要x; 再由B楼第3层走到B楼的第2层,耗时(a - b - 1) * min(2*x, y),则ans = x + (a - b - 1)*min(2x, y)a < b, 你不妨先设a =
2021-03-10 10:03:54
191
原创 云计算与大数据考试重点
云计算与大数据重要考点By Suzhou University of Science and Technology, CS1812, zhouboEmail: usts.zhoubo@gmail.com; xh_zhoubo@163.com1.云计算概论1.1什么是云计算1.云计算(Cloud Computing)是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。2.现阶段最广为接受的是NIST的定义:云计算是
2020-11-28 18:37:17
1466
1
原创 [算法笔记-最全的PAT解答]PAT甲级 1100 Mars Numbers
#include<cstdio> #include<iostream>#include<string>#include<map>using namespace std; string geDigit[13] = {"tret", "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec"};string tenDigit[13] = {"t
2020-07-20 15:54:46
150
原创 [算法笔记-最全的PAT解答]PAT甲级 1063 Set Similarity
#include<cstdio>#include<set>using namespace std;const int N = 51;set<int> st[N];//the sets are numbered from 1 to N void compare(int a, int b){//比较集合a与集合b //sameNum用来记录相同元素的个数 distinctNum用来记录不同元素的个数 int distinctNum = st[b].size
2020-07-20 11:34:53
128
原创 [算法笔记-最全的PAT解答]PAT甲级 1037 Magic Coupon
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 100010;int coupon[maxn], product[maxn];int main(){ int nc, np; scanf("%d", &nc); for(int i = 0; i < nc; i++){ scanf("%d",&coupon[i]); } scanf("%d",&a
2020-07-19 17:00:13
167
原创 [算法笔记-最全的PAT解答]PAT甲级 1085 Perfect Sequence
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 100010;int n, p, a[maxn];//(long long)a[i]*p传给参数x //在[i+1,n-1]范围内查找第一个大于x的数的位置 int binarySearch(int i,long long x){ if(a[n-1] <= x)return n;//如果所有数都不大于x,返回n in
2020-07-18 10:40:33
111
原创 [算法笔记-最全的PAT解答]PAT甲级 1093 Count PAT‘s
#include<cstdio>#include<cstring>#include<iostream>using namespace std;//数据结构:数组 const int MAXN = 100010;const int MOD = 1000000007;char str[MAXN];//字符串数组 int leftNumP[MAXN] = {0};//每一位左边(含)P的个数int rightNumT[MAXN] = {0};int main
2020-07-16 15:55:03
138
原创 IDEA快捷键整理
alt+enter 导入包,自动修正代码ctrl+Y 删除光标所在行ctrl+D 复制光标所在行的内容,插入光标位置下面ctrl+alt+L 格式化代码ctrl+/ 单行注释,再按取消注释ctrl+shift+/ 选中代码注释,多行注释,再按取消注释alt+Ins 自动生成代码–>toString,get,set等方法alt+shift+上下箭头 移动当前代码行shift+f6 修改同一个变量的名字...
2020-07-05 09:49:27
100
原创 C++实现二叉树的存储结构与基本操作
一般来说,二叉树使用链表来定义。和普通链表的区别是,由于二叉树每个结点有两条出边,因此指针域变成了两个结点–分别指向左子树的根结点地址和右子树的根结点地址。如果某个子数不存在,则指向struct node{ typename data;//数据域 node* lchild;//指向左子树根结点的指针 node* rchild;//指向右子树根结点的指针}; //由于在二叉树建树前...
2020-04-17 22:11:24
954
原创 STL库中的queue使用注意事项
复制粘贴运行程序 比较注释部分和非注释部分的区别//当使用STL的queue时,元素入队的push操作只是制造了该元素的一个副本入队//因此在入队后对原元素的修改不会影响队列中的副本 //而队列中副本的修改也不会改变原元素,需要注意由此可能引入的bug(一般由结构体产生) //所以是啥bug??? //#include<cstdio>//#include<queue&...
2020-04-15 17:32:58
265
原创 用两种DFS(一种最基本的,一种通过剪枝)解决0-1背包问题
DFS实现0-1背包问题有两种方式,第一种方式效率较低,因为每次都有两种选择,且总是把n件物品的选择全部确定之后才去更新最大价值,但是事实上忽视了背包容量不超过V这个特点。也就是说,完全可以把对sumW+w[index]<=V的判断加入到“岔道口”中,只有当sumW+w[index]<=V时才进入岔道,这样效率会高很多,也就是我们的第二种方式。这种通过题目条件的限制来节省DFS的计算量...
2020-04-14 11:17:17
342
原创 静态链表【初学者不太熟练动态链表时采取的一种替代手段】
我们知道,动态链表需要指针来建立结点之间的连接关系,但事实上,对有些问题来说,结点的地址是比较小的整数(比如5位整数),那么这时我们大可不必建立动态链表,建立静态链表就足够了,这样程序编写的时候也会减少许多问题。静态链表的原理是hash,即通过建立一个结构体数组,并令数组的下标直接表示结点的地址,来达到直接访问数组中的元素就能访问结点的效果。另外,由于结点的访问非常方便,因此静态链表是不需要建立...
2020-04-12 16:05:34
169
原创 C++实现链表的四个基本操作
链表的基本操作无非四种情况:1.创建链表;2.查找元素;3.插入元素;4.删除元素。下面对这四个操作用C++实现一波。已调试验证完毕,读者仔细领会!!!#include<stdio.h>#include<stdlib.h>struct node{ int data; node* next;};//创建链表 node* create(int array[]...
2020-04-11 22:07:12
471
1
原创 [codeup1918]简单计算器
题目描述:读入一个只包含+,-,*,/的非负整数计算表达式,计算该表达式的值。输入格式:测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间有一个空格。没有非法表达式。当一行中只有0输入时结束,相应的结果不要输出。输出格式:对每个测试用例输出1行,即该表达式的值,精确到小数点后两位。源程序:#include<iostream>#include...
2020-04-10 22:45:58
145
原创 [算法笔记-最全的PAT解答]PAT乙级1021-1025题解
每天进步一点点,一年进步很多点1021 个位数统计给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0(0≤di≤9, i=0,⋯,k−1, dk−1 >0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。输入格式:每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。输...
2020-03-26 21:03:34
2120
原创 [算法笔记-最全的PAT解答]PAT乙级1016-1020题解
旨在分享自己从菜鸡一步步提高的历程,题解所思均是自己所想,如有错误欢迎指正1016 部分A+B正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA组成的新整数 PA 。例如:给定 A=3862767,DA=6,则 A 的“6 部分”PA是 66,因为 A 中有 2 个 6。现给定 A、DA、B、DB,请编写程序计算 PA +PB。输入格式:输入在一行中依次给出...
2020-03-22 10:25:57
295
原创 [算法笔记-最全的PAT解答]PAT乙级1011-1015题解
1011 A+B和C给定区间 [−2^31, 2 ^31] 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #...
2020-03-13 16:03:00
320
原创 [算法笔记-最全的PAT解答]PAT乙级1006-1010题解
1006 换个格式输出整数让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输...
2020-03-11 15:35:24
681
原创 [算法笔记-最全的PAT解答]PAT乙级1001-1005题解
1001 害死人不偿命的(3n+1)猜想卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有...
2020-03-07 23:00:38
497
转载 UML图各种符号合集
类(Class)类(图A )是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接...
2020-03-06 22:23:10
5637
原创 Python国内pip指令下载包速度过慢一行解决方案
国内不少童鞋都遇到过使用pycharm/anaconda3下载所需包过慢的问题,这是因为这些包都在国外,而国内又有wall,因而速度会过慢,最终常常导致失败。其实不用着急,国内有很多与之对应的镜像网站,如豆瓣,清华,阿里等等。下面以设置清华镜像网站为例,给出解决方案。conda和pip默认使用国外站点来下载MXNet和相关软件,我们可以配置国内镜像来加速下载。配置清华PyPI镜像(如无法运行,将...
2020-03-06 09:04:45
184
原创 堆与堆排序在优先级队列中的应用
1.堆1.1 堆的定义与基本操作堆是一颗完全二叉树,数中每个结点的值都不小于(或不大于)其左右孩子的结点的值。其中,如果父亲结点的值大于等于孩子结点的值,那么称这样的堆为大顶堆,这时每个结点的值都是以它为根结点的子数的最大值;如果父亲结点的值小于等于孩子结点的值,那么称这样的堆为小顶堆,这时每个结点的值都是以它为根结点的子数的最小值。堆一般用于优先队列的实现,而优先队列默认使用大顶堆,因此我以...
2020-02-28 11:46:30
160
原创 并查集与路径压缩
1.1并查集的定义所谓并查集就是“Union(合并)”,“Find(查找)”,“Set(集合)”对应的中文翻译,集合是指对集合操作的,而支持的操作就是Union和Find:1)合并:合并两个集合。2)查找:判断两个元素是否在一个集合。好,定义我们知道了,那么并查集是如何实现的呢?其实就是一个数组:int father[N];其中father[i]表示元素i的父亲结点,而父亲结点本身也...
2020-02-27 20:27:29
511
原创 迷宫问题之BFS
迷宫问题是BFS的经典应用题目:给定一个nm大小的迷宫,其中代表不可通过的墙壁,而‘.代表平地,S表示起点,T表示终点。移动过程中,如果当前位置是(x,y)(下标从0开始),且每次只能前往上下左右四个位置的平地,求从起点S到达终点T的最少步数。样例:. . . . .. * . * .. * S * .. * * * .. . . T *在上面样例中,S的坐标为(2,2),T...
2020-02-20 18:07:37
246
原创 从一道题目体会BFS思想
题目描述:给出一个m*n的矩阵,矩阵中的元素为0或1。称位置(x,y)与其上下左右四个位置是相邻的。如果矩阵中有若干个1相邻(不必两两相邻),则称这些1构成了一个块。求给定矩阵中的块数。输入:0 1 1 1 0 0 10 0 1 0 0 0 00 0 0 0 1 0 00 0 0 1 1 1 01 1 1 0 1 0 01 1 1 1 0 0 0输出:4思路1.首先根据输入输...
2020-02-18 21:09:02
204
原创 素数表获取的朴素算法与埃氏筛法
朴素算法可以先来看看一道简单的题目:试打印 1 - n 范围内的素数表。分析:好,我们从1~n进行枚举,判断每个素数是否是素数,如果是素数,则加入素数表。那么这个算法的时间复杂度是多少呢?可以看到,枚举部分的复杂度是O(n),而判断素数的算法是O(n^1/2),因此总复杂度是O(n * n ^1/2)。但是显然这个复杂度对n超过10 ^ 5的情况来说是有问题的。因为对一般的oj系统来说,一...
2019-10-23 08:12:00
185
原创 DP(动态规划)解决01背包问题
背包问题背包问题是一类经典的动态规划问题(DP问题),非常灵活、变体多样,然我想最基础的背包问题透彻理解之后,变体问题自然迎刃而解。下面介绍两类最简单的背包问题:01背包问题和完全背包问题,而两类问题之中,又以01背包问题为重。01背包问题我们先来看看01背包问题的题目吧:有n件物品,每件物品的重量为w[i],价值为c[i]。现有一个容量为V的背包,问如何选取物品放入背包,使得背包内物品的...
2019-10-19 14:57:40
681
原创 打表与活用递推
本篇博客主要介绍一些编程技巧:一个是打表,一个则是活用递推1、打表打表是一种典型的用空间换时间的技巧,是指将所有可能需要用到的结果事先计算出来,这样后面需要用到时就可以直接查表获得。打表常见的用法有如下几种:在程序中一次性计算处所有需要用到的结果,之后的查询直接取这些结果这个是最常用到的用法,例如在一个需要查询大量Fibonacci数F(n)的问题中,显然每次从头开始计算是非常耗时的,...
2019-10-15 20:19:52
189
原创 递归
我们先来看一个另外的名词的定义:分治。什么叫分治,顾名思义:“分而治之”,也就是说,分治法将原问题分成若干个规模较小而结构与原问题相同或相似的子问题,然后分别解决这些问题,最后合并子问题的解,即可得到原问题的解。好,我们言归正传,先来看看一个看似玩笑的对递归的定义:“要理解递归,你要先理解递归,直到你能理解递归”。是不是有点绕?然而这对递归的解释却是十分直观的。递归就在于反复调用自身函数,但是每...
2019-10-12 15:05:56
230
原创 Python:全国必胜客餐厅信息爬取及其商业价值分析
**这学期开的课程设计是python的课程设计,大概是让我们对全国必胜客餐厅进行信息爬取以及商业价值分析。三人一组,因而东西是大家一起做的。我只不过是写到博客里对这一学期的课程设计总结一下,也供后来者学习与交流。**1 课程设计任务概述1.1目的(1)理解和巩固程序设计的基本理论、原理和方法的重要实践环节(2)综合应用所学知识,结合Python语言在大数据、人工智能应用场景中的特点,建...
2019-07-07 16:31:08
1290
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人