自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PAT (Basic Level) Practice (中文)1003 我要通过! (20 分)

PAT (Basic Level) Practice (中文)1003 我要通过! (20 分)“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的,

2021-09-02 19:37:19 244

原创 PAT (Basic Level) Practice (中文)1002 写出这个数 (20 分)

卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单

2021-09-02 16:37:44 175

原创 快速排序&归并排序&逆序对数量模板及分析

快速排序思路1. 确定分界点的值x三种选择:取左边界q[l],取中间值q[(r + 1)/2],取右边界q[r]2. 调整区间把该序列分为两部分,使得所有小于等于x的在左边部分,大于等于x的在右边部分实现方法1-略暴力定义两个数组a,b扫描数组q,把小于x的放入a数组,把大于等于x的放入b数组把a,b赋值给q实现方法2-推荐定义两个指针i, j分别指向q的左右两端i向左移动,直到遇到q[i] > x暂停随后,j向右移动,直到遇到q[j] < x暂停

2021-07-10 23:25:16 462

原创 什么是数据结构,什么是算法,最大子列和问题

文章目录Part 1 什么是数据结构例1:如何在书架上摆放图书?例2:写一个函数`PrintN()`根据参数N打印1~N全部整数例3:写程序计算给定多项式f(x)=∑i=09i⋅xif(x)=\sum_{i=0}^{9} i \cdot x^{i}f(x)=∑i=09​i⋅xi在给定点x处的值小结抽象数据类型 ADT例4:矩阵的抽象数据类型定义Part 2 什么是算法Algorithm定义例1:选择排序算法的伪码描述什么是好算法?复杂度的渐进表示法感性认识一下不同复杂度复杂度分析窍门两段算法拼接两端算法嵌套

2021-07-09 18:28:48 346

原创 第一讲 操作系统概述-笔记

第一讲 操作系统概述-笔记文章目录第一讲 操作系统概述-笔记1.1 操作系统的定义操作系统是一个控制程序操作系统是一个资源管理器1.2 操作系统的地位1.3 操作系统软件的组成1.4 操作系统内核特征1.5 操作系统的演变单用户系统(1945-1955)单道批处理系统(1955-1965)多道批处理系统(1965-1980)分时系统(1970-)分布式操作系统分布式操作系统1.1 操作系统的定义教材上的定义:OS是一组控制和管理计算机硬件和软件的资源,合理地对各类作业进行调度,以及方便用户使用计算机的

2021-03-29 20:46:59 196

原创 P1060 [NOIP2006 普及组] 开心的金明

P1060 [NOIP2006 普及组] 开心的金明状态f[i][j]表示前i件物品使用j元可以得到的物品价格c[i] * 物品重要度w[i]最大值,f[m][n]即本题的解求f[i][j]:如果不购买第i件物品,f[i][j] = f[i - 1][j]如果购买第i件物品,f[i][j] = f[i - 1][j - c[i]] + c[i] * w[i]边界条件:f[i][j] = 0 (i == 0 || j == 0)#include<bits/stdc++.h>us

2021-03-23 15:37:36 168

原创 P1164 小A点菜

P1164 小A点菜状态f[i][j]为吃前i种菜,恰花j元的方案数,自然f[N][M]就是我们要求的结果若第i种菜恰可以买(j > c[i]),问题转换为前i - 1种菜恰花j - c[i]元的方案数和前i - 1种种菜恰花j元方案数之和,即f[i][j] = f[i - 1][j - c[i]] + f[i - 1][j]若只能买第i种菜,即j == c[i],f[i][j] = f[i - 1][j] + 1若第i种菜不可买(j < c[i]),问题转换为前i - 1种菜恰花j元

2021-03-22 19:54:13 206

原创 P1049 [NOIP2001 普及组] 装箱问题

P1049 [NOIP2001 普及组] 装箱问题01背包简化版,这里的w[i]就等价于c[i],稍作修改即可#include <bits/stdc++.h>using namespace::std;int V, N;int f[20005], c[35];void ZeroOnePack(){ for(int i = 0; i <= V; ++i) f[i] = 0; for(int i = 1; i <= N; ++i)

2021-03-21 18:32:45 349

原创 P1048 [NOIP2005 普及组] 采药

P1048 [NOIP2005 普及组] 采药题目#include <bits/stdc++.h>using namespace std;int f[1005], c[105], w[105], N, V;void ZeroOnePack(){ for(int i = 0; i <= N; ++i) f[i] = 0; for(int i = 1; i <= N; ++i) for(int v = V; c[i] <=

2021-03-21 17:02:52 383

原创 计算机组成原理-Chapter1 计算机系统概述

Chapter1 计算机系统概述1.1 冯·诺伊曼结构计算机工作原理及层次结构分析1. 冯·诺伊曼简介2. 冯·诺伊曼计算机的工作原理存储程序:将程序存放在计算机的存储器中后续课程围绕:存储系统构建与快速访问 展开程序控制:按指令地址访问存储器并取出指令,经译码依次产生指令执行所需的控制信号,实现对计算的控制,完成指令的功能后续课程围绕:指令系统、控制器设计等 展开3. 冯·诺伊曼计算机的组成(硬件+软件)(1)硬件系统Ⅰ总体图主机:CPU(运算器 + 控制器)、内存

2021-03-19 11:53:39 533 1

原创 贪心

贪心简单贪心贪心法是求解一类最优化问题的方法,它总是考虑在当前状态下局部最优的策略,以使全局最优思路是: 从问题的某个初始解出发一步一步地进行,根据某个优化测度每一步都要确保获得局部最优解. 如果下一个数据和部分最优解连在一起不再是可行解时, 就不把该数据添加到部分解中, 直到把所有数据枚举完, 或者不能再添加算法停止, 这样找到的第一个解通常就是最优的PAT B1020月饼/PAT A1070Mooncake题意已知月饼需求量D, n种月饼各自的总售价和库存量, 问怎样销售这些月饼, 使总销

2021-03-16 13:40:23 156

原创 素数筛/分解质因数

素数筛/分解质因数什么是素数/质数除了1和本身之外不能被其他数整除的一类数为质数(满足对任意1 < a < n,n % a != 0),除了素数和1外的正整数都是合数,合数一定有素因子1既不是素数也不是合数素数的判断根据素数的特点,我们要遍历2, 3, 4, …, n - 1,判断是否满足n % a != 0,这样判断简单直接,但复杂度在O(n),这对于一道题的一小部分来说的确有些大了我们发现,如果在1 < a < n中,存在n的约数k 即n % k == 0,那么必有

2021-03-12 23:31:24 224

原创 蓝桥训练系统-基础训练-非VIP题

蓝桥训练系统-基础训练-非VIP题数列排列#include <bits/stdc++.h>using namespace::std;int a[205];int main(){ int n; cin >> n; for(int i = 1; i <= n; ++i) cin >> a[i]; sort(a + 1, a + n + 1); for(int i = 1; i <= n - 1;

2021-03-11 23:09:30 189

原创 P1121环状最大两段子段和

P1121环状最大两段子段和题目假定一个小白看这道题,一步步了解相关知识最大子段和(DP,O(n))状态dp[i]表示以A[i]作结尾的最大连续子序列和,求出dp数组的最大值即题解dp[1] = a[1]; //边界条件for(int i = 2; i <= n; ++i){ dp[i] = max(dp[i - 1] + a[i], a[i]); //状态转移方程}sort(dp + 1, dp + n + 1); //找到dp数组的最大值ans1 = dp[n];

2021-03-08 12:57:06 1411

原创 动态规划解LIS(数据规模小于10^4)/贪心+二分解LIS(数据规模小于10^7)

最大不下降子序列LISLongest Increasing Sequence:在一个数字序列中,找到一个最长子序列(可以不连续),使得这个子序列是不下降的(非递减)例如序列A = {1,2,3,-1,-2,7,9},它的LIS就是{1,2,3,7,9},长度为5,当然还有短一些的不下降子序列{1,2,3},{-1,7,9}等,它们不是最长的最暴力的办法,我们枚举所有子序列,然后判断这个子序列是否是不下降的,是不下降子序列就更新最大长度。这种方法下,每个元素都有取或者不取两种可能,故总体复杂度高达O(

2021-03-07 09:35:49 217

原创 PAT甲级练习1045 Favorite Color Stripe (30 point(s)) dp解LIS

PAT甲级1045题目题意第一行给定一个n表示总颜色数,颜色种类用1 ~ n数字表示第二行第一个数是Eva喜欢的颜色数m,后面m个数代表Eva喜欢的颜色序列第三行第一个数是彩带的长度L,后面L个数代表彩带上的颜色序列我们要做的就是找出在彩带上符合Eva喜欢的颜色序列(符合顺序即可,可以缺少)的最大长度,例如Eva喜欢的颜色序列是{2, 3, 1, 5, 6},彩带序列是{2, 2, 4, 1, 5, 5, 6, 3, 1, 1, 5, 6},输出就是7思路(LIS)为了符合LIS的思路,我

2021-03-07 09:32:10 227

原创 最大连续子序列和DP解法

最大连续子序列和给定一个数字序列A1,A2,… ,An,求i,j(1 <= i <= j <= n),使得Ai + … + Aj最大,输出这个最大和暴力方法:枚举i和j的所有可能性,复杂度O(n2),并且O(n2)次计算Ai + … + Aj,总体复杂度为O(n3);就算我们采取前缀和的方法,将计算复杂度降为O(1),复杂度O(n2)仍然难以让我们接受Step1 :令状态dp[i]表示以A[i]作结尾的连续序列最大和,这样dp这个数组的最大值就是本题的解Step2:求解dp---

2021-03-07 09:25:26 662

原创 动态规划入门-重叠子问题-状态转移方程-数塔问题

记录重叠子问题的解以计算Fibonacci数列为例,最简单粗暴的算法是int F(int n){ if(n == 0 || n == 1) return 1; else return F(n - 1) + F(n - 2);}例如计算F(5)时,如图,有大量重复计算,造成效率低下,复杂度高达O(2n)如果我们建立一个数组dp[n]表示F(n)的数值,尚未计算的设置为-1,那么当碰到计算相同内容的时候,就可以直接使用之前的计算结果,即每个F(n)

2021-03-07 09:22:55 610

原创 PAT甲级练习1007 Maximum Subsequence Sum最大连续子序列和 (25 point(s))

题目题解个人见解#include <bits/stdc++.h>using namespace ::std;const int maxn = 10005;int dp[maxn], a[maxn];int main(){ int n; cin >> n; for(int i = 1; i <= n; ++i) //读入 cin >> a[i]; dp[1] = a[1]; //边界值 i

2021-03-01 08:52:18 208

原创 Chapter 1 复杂度分析和递归分析

第1章 绪论1.1 计算机与算法算法需要具备的要素输入、输出正确性确定性可行性有穷性有穷性反例:Hailstone SequenceHailstone(n)={{1}, if n equal 1{n}∪ Hailstone (n/2), if n is even {n}∪ Hailstone (3n+1), if is odd&

2020-09-24 20:01:49 418

原创 C++结合二分法分析迭代器的使用和运算(参考书籍C++primer第五版)

使用迭代器//迭代器是访问string对象的字符、vector对象的元素及其他容器元素的一种机制,所有标准库容器都可以使用迭代器,适用范围大于下标运算符#include <iostream>#include <vector>#include <string>#include <cctype>#include <fstream>using namespace::std;int main(){ //获取迭代器和指针不同,不使用取地址

2020-05-24 07:32:50 414

原创 C++标准库类型vector详述(参考书C++primer第五版)

1.vector(向量)概述标准库类型vector表示对象的集合,是一个类模板。vector容纳了一些对象,所以也常称之为容器,其中所有对象的类型都相同。这个集合中的每个对象都有一个与之对应的索引,用于访问指定的对象。编译器根据模板创建类或函数的过程称为实例化。因为引用不是对象,所以不存在包含引用的vector,除此之外的大部分内置类型和类类型都可以构成vector对象,甚至vector的元素也可以是vector。2.定义和初始化vector对象#include <vector>#inc

2020-05-20 19:00:31 503

原创 c++标准库类型string使用全解(参考书C++primer第五版)

初始化string对象#include <string>using namespace::std;int main(){ string s1;//默认初始化,s1是一个空字符 string s2 = s1;//s2是s1是副本 string s2(s1);//等价于上句 string s3 = "hiya";//s3是该字符串字面值的副本//拷贝初始化 string s3("hiya");//等价于上句//直接初始化 string s4(10, 'c');//s4的内容是cc

2020-05-19 17:37:08 298

原创 C++中decltype类型说明符及其与auto的区别

介绍//使用情况:希望从表达式的类型推断出要定义的变量类型,但又不想用该表达式的值初始化变量//C++引用第二种类型说明符decltype,它的作用是选择并返回操作数的数据类型//在这个过程中编译器分析表达式并得到它的类型,但并不计算表达式的值int main(){ //decltype返回该变量的类型(包括顶层const和引用在内) const int ci = 0, &cj = ci; decltype(ci) x = 0;//x的类型是const int decltype(c

2020-05-16 23:19:48 171

原创 C++中的auto类型说明符用法

用法介绍//C++11引入auto类型说明符,可以让编译器替我们分析表达式所属的类型//auto让编译器通过初始值推算变量的类型,因此auto定义的变量必须有初始值#include <iostream>int main(){ int val1 = 9; double val2 = 4.1; auto item = val1 + val2;//这里item是double类型 //一条语句中可以声明多个变量但是只能有一个基本数据类型 auto i = 0, *p = &

2020-05-16 23:16:54 482

原创 C++中typedef和using定义类型别名的方法

#include"Sales_item.h"int main(){ //传统的方法,使用关键字typedef定义类型别名 typedef double wages;//wages变成double的同义词 typedef wages base, *p;//base是double的同义词,p是double*的同义词 wages hourly, weekly; //C++11规定了一种新的方法,使用别名声明,关键字是using using SI = Sales_item;//SI是Sales_i

2020-05-16 23:14:31 271

原创 C++中的const使用应该注意的问题

#include<iostream>extern const double pi = 3.14;//定义,extern指明pi非本文件独有,可以共享extern const double pi;//声明//假设定义和声明不在一个文件里,不同文件的pi 是同一个piint main(){ //const对象必须初始化 const int i = 42;//正确 const int j;//错误 //const对象被设定仅在文件内有效 //如果需要在文件间共享无论定义还是声明都要

2020-05-16 17:13:59 226

原创 C++中的constexpr和常量表达式

int get_size(){ return 99;}constexpr int get_sizes(){ return 66;}int main(){ //常量表达式指值不会改变,且在编译过程就能得到计算结果的表达式 const int max_files = 20;//常量表达式 const int limit = max_files + 1;//常量表达式 int ac = 299;//ac不是常量表达式 const int size = get_size();//

2020-05-16 17:10:30 210

原创 C++中的顶层const

//顶层const表示指针本身是一个常量//底层const表示指针所指对象是一个常量int main(){ int i = 0; int *const p1 = &i;//不能改变p1的值,p1是一个顶层const const int ci = 42;//不能改变ci的值,ci是一个顶层const const int *p2 = &ci;//允许改变p2的值,这是一个底层const const int *const p3 = p2;//左边的const是底层const,右边的

2020-05-16 17:09:20 359

原创 C++中的const和指针

int main(){ //类似常量引用,指向常量的指针(pointer to const)不能用于改变其所指对象的值 //要想存放常量对象的地址,只能使用指向常量的指针 const double pi = 3.14159; double *ptr = &pi;//错误,ptr只是一个普通指针 const double *cptr = &pi;//正确 *cptr = 42;//错误 //指针类型必须与其所指对象的类型一致 //此处一个例外是允许令一个指向常量的指针指向一

2020-05-16 17:08:33 201

原创 C++中const的引用

#include<iostream>extern const double pi = 3.14;//定义,extern指明pi非本文件独有,可以共享extern const double pi;//声明//假设定义和声明不在一个文件里,不同文件的pi 是同一个piint main(){ //const对象必须初始化 const int i = 42;//正确 const int j;//错误 //const对象被设定仅在文件内有效 //如果需要在文件间共享无论定义还是声明都要

2020-05-16 17:07:01 251

原创 C++中的指针使用需要注意的地方

需要注意的一些地方int main(){ //对象是具有某种数据类型的内存空间 int *ip1, *ip2;//ip1和ip2都是指向int型对象的指针 double *dp, dp2;//dp是指向double型对象的指针,dp2是double型对象 //& * 的多重含义 int i = 42; int &r = i;//&紧随类型名出现,是声明的一部分,这里r是一个引用 int *p;//*紧随类型名出现,是声明的一部分,这里p是一个指针 p = &am

2020-05-16 10:32:41 316

原创 C++引用需要注意的问题

int main(){ //对象是具有某种数据类型的内存空间 int ival = 1024; //引用为对象起了另外一个名字,引用类型引用(指的是)另外一种类型 //一般初始化变量时初始化值会被拷贝到新建对象,而定义引用时程序把引用和它的初始值绑定(bind) //通过将声明符写成&d的形式来定义引用类型,d是声明的变量名 int &refVal = ival;//reVal指向ival,reVal成为了ival的别名 int &refVal2;//ERROR:引用

2020-05-15 11:52:50 408

原创 C++的变量作用域的区别与嵌套

#include <iostream>//十分不建议在函数内部定义和全局变量相同名字的新变量int reused = 42;//这里的resued有全局作用域int main(){ int unique = 0;//unique拥有块作用域 std::cout << reused << " " << unique << std::endl; int reused = 0;//新建局部变量reused覆盖了全局变量reused st

2020-05-15 11:02:13 277

原创 C++中声明和定义的区别

#include<iostream>int main(){ //声明使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含那个名字的声明 extern int i;//声明i,而非定义i //定义负责创建与名字关联的实体 int j;//声明并定义j //任何包含了显式初始化的声明即成为定义,即使加了extern也没用 //一个变量可以被多次声明,但只能被定义一次 //练习 extern int ix = 1024;//属于定义且会报错 ERROR:不允许对外部变

2020-05-15 10:44:49 177

原创 C语言统计单词数量程序 超详解

/*********************************************************************************************************************Author:RainGivingDate:2020-03-14Description:一个统计单词个数的小程序 1.我们选定一个文本中不常用...

2020-03-14 22:50:52 2336

原创 Linux SSH高级

免密登录设置配置远程计算机别名

2020-01-26 15:53:54 178

原创 Linux远程管理命令

通过管道直接找到IP地址(2)ssh客户端的使用ssh -p port user@remoteuser是在远程机器上的用户名,如果不指定的话默认为当前用户remote是远程机器地址,为IP或域名port 是ssh server监听窗口,如果不指定,-p port这部分省略即可,默认值为22使用exit退出当前用户的登录很多情况下,端口号可能不是22,需要用-p正确...

2020-01-25 19:52:48 148

原创 Linux操作文件的常用终端命令

终端命令格式command [-options] [parameter]说明:command :命令名,相应功能的英文单词或单词的缩写 [-options] :选项,可用来对命令进行控制,也可以省略 parameter :传给命令的参数,可以是 零个、一个 或者 多个[ ] 代表可选3. 查阅命令帮助信息(知道)提示现阶段只需要 知道 通过以下两种方式可以查询命令的帮助信息...

2020-01-23 23:55:37 788

原创 Python100Days-day10图形用户界面和游戏开发

基于tkinter模块的GUI1.GUI是图形用户界面的缩写2.python默认的GUI开发模块是tkinter3.基本上使用tkinter来开发GUI应用需要以下5个步骤:导入tkinter模块中我们需要的东西。创建一个顶层窗口对象并用它来承载整个GUI应用。在顶层窗口对象上添加GUI组件。通过代码将这些GUI组件的功能组织起来。进入主事件循环(main loop)。impo...

2020-01-19 22:57:48 331

空空如也

空空如也

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

TA关注的人

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