自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (12)
  • 问答 (12)
  • 收藏
  • 关注

原创 22行代码AC——例题7-1除法(Division UVa 725)——解题报告

励志用尽量少的代码做高效的表达题目大意:0-9不重复的组成两个5位数,如果数A/数B=n,则为可行解。思路分析:本题实质是通过巧妙分析的暴力求解法。下等解法:直接枚举0-9的全排列,枚举量为10!,效率极低。中等解法:在下等解法的基础上思考,如果我们只遍历一个数的5位,判断该数*n是否小于10W且两个数中各位是否重复,则最大只需遍历10^5次。上等解法:在中等解法的基础上思考,被除...

2020-03-29 10:45:18 1124 3

原创 18行代码AC——PTA 二叉树的遍历 (10分)——解题报告

励志用尽量少的代码做高效的表达。根据输入构造二叉树,输出该二叉树的先序序列。二叉树共有N个节点,节点编号是1到N。约定1号节点是根节点。输入格式:第一行输入整数N。 接下来有N行,依次给出1到N节点的左孩子和右孩子。对于这N行中的每一行,有两个整数。第i(i=1, 2, …, N)行中,第一个整数指出左孩子的编号,第二个整数指出右孩子的编号。如果整数值为0,表示没有左孩子或右孩子。输出格...

2020-03-15 21:50:22 2097

原创 31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告

励志用尽量少的代码做高效的表达。以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数。输入格式:输入二叉树的先序序列。提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。输出格式:输出有两行:第一行是二叉树的中序遍历序列;第二行是二叉树的叶子结点个数。输入样例:ABC##DE#G##F###输出样例:CBEGDFA...

2020-03-15 20:38:18 1719

原创 43行代码AC——例题6-8 树(Tree,UVa 548)——解题报告

励志用尽量少的代码做高效的表达。题目大意给定二叉树的中序和后序遍历序列,求该二叉树中根到叶子的路径和最小者,若存在多个解,则选择叶子权值最小者(叶子权值不重复)。思路分析此题本质是中后序建树+求路径最小权。(PS:书上的数组建树用不习惯,于是自己写了一个指针建树。)关键在于中序和后序建树,后序遍历序列的最后一个元素来确定根(前序的话是第一个元素确定根),中序序列来划分左右子树,如此递...

2020-03-15 16:15:02 672

原创 应该掌握的神奇函数——sscanf的用法

概述:sscanf的作用:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。sscanf和scanf的区别:scanf是以键盘作为输入源,sscanf是以字符串作为输入源。sscanf:原型:int sscanf(const char *str, const char *format,......);说明:sscanf()会将参数str的字符...

2020-03-14 22:03:35 890

原创 12行代码AC——例题6-6 小球下落(Droppint Balls, UVa 679)——解题报告

励志用尽量少的代码做高效的表达。提交(题目)链接→UVa-679题目大意:有一颗满二叉树,每个节点是一个开关,初始全是关闭的,小球从顶点落下,如果开关打开,则落向该节点的右子树,如果开关关闭,则落向该节点的左子树。小球每次经过开关就会把它的状态置反,问第k个球下落到d层时经过的开关编号。思路分析;最初的想法是:使用一维数组模拟树的遍历。因为题目比较简单,就没有估算时间复杂度。 ...

2020-03-14 12:25:07 864

转载 33行代码AC——例题6-5 移动盒子(Boxes in a Line, UVa 12657)——解题报告

题目大意对升序排列的n个数字(1开始编号)进行一系列操作,输出最终序列的奇位数之和。操作如下:1 X Y:把X移到Y左侧2 X Y:把X移到Y右侧3 X Y:交换X和Y4:反转序列(逆置)思路分析若是直接用链表模拟,在查找和反转时会消耗大量时间,导致超时,因此,如何解决这两个问题是关键。查找:为了简化,可用STL的list模拟链表,同时定义pos存储每个数对应的链表指针,在查...

2020-03-13 17:19:54 654

原创 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告

励志用尽量少的代码做高效的表达。题目(提交)链接→UVa-11988题目大意:输入一个字符串,输出在原本应该是怎么样的?具体方法是:若读取到‘[’, 则执行Home键:将光标移到行首。若读取到’]’, 则执行End键:将光标移到行尾。思路:此题的本质是模拟鼠标光标处理线性序列。基于这个核心思想,我们只需要定义一个类型做光标,若读到’[’,则该值移动到序列头部,若读到‘]’,...

2020-03-13 12:50:12 892

原创 30行代码AC——例题6-3 矩阵链乘(Maxtrix Chain Multiplication, UVa 442)——解题报告

励志用尽量少的代码做高效的表达。题目(提交)链接→UVa-442储备知识:矩阵相乘次数:如图:A矩阵*B矩阵得到C矩阵。 C矩阵中元素个数=A矩阵行数*B矩阵列数。得到C矩阵中任意元素都需要运算A矩阵的列数次。因此,总运算次数为:A矩阵行数*B矩阵列数*A矩阵列数(B矩阵行数)=2*2*3=12次。同理:求A(BC)的运算次数:设BC矩阵相乘后得D矩阵。则总次数=BC相乘后的...

2020-03-13 11:11:45 751

原创 19行代码AC——例题 6-2 铁轨(Rails, UVa 514)——解题报告

励志用尽量少的代码做高效的表达。提交(题目)链接→UVa-514此题的本质是:给出“入栈顺序”,判断给定序列是否可以出栈。 有点像这种题:因此思路也类似:思路:数组存储列车调度顺序, 栈存储正常入栈顺序, 若数组头=栈顶,数组移到下一位,栈顶元素弹出遍历完毕后, 若栈空,则说明全部调度完毕, 输出Yes注意点:1、输出的是Yes不是YES!(最开始看错,哭晕在厕所)2、每...

2020-03-12 23:56:31 925 1

原创 大数系列三——斐波那契数列——高效万进制,亿进制

浅谈万进制思想:日常生活中我们习惯用十进制去运算;为了方便电脑识别开发出了二进制,又因为2^3=8 , 2^4=16,因此应运而生了八进制与16进制。世上本没有路,走的人多了,也便成了路,那么既然二进制可以衍生出8,16进制,为什么十进制不可以衍生更大的进制呢?因此聪明的人们开发出了万进制,也就是10^4=10000 模仿二进制与十六进制的运算。渐渐的,我们发现万进制在进行大数运算方面有着...

2020-03-11 23:19:40 1130

原创 25行代码AC——习题5-7 打印队列(Printer Queue,UVa 12100)——解题报告

励志用尽量少的代码做高效的表达。题目(提交)链接→UVa-12100题目描述:我们需要用打印机打印任务。每个任务都有1~9间的优先级,优先级越高,任务越急。打印机的运作方式:从打印队列里取出一个任务j,如果队列里有比j更急的任务,则直接把j放到打印队列尾部,否则打印任务j。每次打印都消耗一分钟的时间,但调整任务位置不消耗时间。输入:第一行:n个测试用例第二行:m1(任务个数) ...

2020-03-11 15:27:55 1898

原创 22行代码AC——习题5-6 对称轴(Symmetry,UVa1595)——解题报告

励志用尽量少的代码做高效的表达。题目(提交)链接→UVa-1595思路:此题本质是一道笛卡尔坐标系上的对称性问题。判定性问题:由于只要能判别图像是否左右对称即可,无需确认关于哪条垂直线对称,那么问题可以这样解决:将坐标升序排序后,若两侧坐标和都等于sum,再判断二者y值相同。就说明关于某条线对称。最开始想到用pair结构体,p.first存储x坐标,p.second存储y坐标。重写c...

2020-03-10 23:40:42 884

原创 15行代码AC——习题5-5 复合词(Compound Words, UVa 10391)——解题报告

励志用少的代码做高效的表达题目(提交)链接→UVA-10391本题实质是#include<string>头文件的substr()字符串分割函数与#include<algorithm>头文件的find()函数联用。基本思路:单词(字符串)存入容器后,逐位分解(substr()),查找(find())按每一位分解后其前后分别组成的字符串是否在容器中出现。 若皆出现...

2020-03-10 17:02:14 777

原创 14行代码AC——习题5-4 交换学生(Foreign Exchange, UVa 10763)——解题报告

励志用少的代码做高效的表达题目(提交)链接→UVa-10763本题为水题,因此侧重点由解题转向优化。题意:判断第一列的数字是否与第二列的数字相同(乱序)。解题方向多样,值得探究:1、map哈希表解法:定义map<int, int> cnt;,其中cnt[i]表示学校i对应的人数增减变化量,若有人把学校i作为出发地,则cnt[i]--;若作为目的地,则cnt[i]++。最终若...

2020-03-10 15:59:29 993 1

原创 17行代码AC——习题5-3 卡片游戏(Throwing cards away I, UVa 10935,约瑟夫环)_解题报告

励志用少的代码做高效的表达题目(提交)链接→UVa-10935 本题为水题,因此侧重点由解题转向优化。思路:最开始想到用string存储,利用插入,删除快速计算。但却发现如果输入>=10的数,给string赋值就非常麻烦。如:输入时我们要把11转化成"11",而输出是要把"11"再转化成11。于是换了一个思路:用vector存储,同样可以实现插入、删除等 。后知后觉:此题...

2020-03-10 11:12:06 923

原创 21行代码AC——例题5-2 Ducci序列(Ducci Sequence,UVa1594)——解题报告

励志用少的代码做高效的表达。题目(提交)链接→UVa-1594本题为水题,因此侧重点从解题转变为优化。注意点:1、下一轮是按照上一轮的每个数做运算,但下一轮每次运算都会改变数列的值,造成运算不准确,我的做法是:事先拷贝一个数列b,用数列b的值做运算,而后赋值给a。2、我判断0序列的方法是:用#include<algorithm>中的count()函数,如果0的数量等于数组...

2020-03-10 09:15:27 2114 2

原创 21行代码AC——习题5-1 代码对齐(Alignment of Code, UVa1593)——解题报告

题意:输入若干行代码,要求各列单词的左边界对齐且尽量靠左,单词之间至少要空一格,每个单词不超过80个字符,每行不超过180个字符,一共最多1000行。思路:1、输入内容存入二维数组2、找出每列最长的单词做域宽。3、按域宽输出单词。注意点:这道题本质就是在考get型函数处理输入+按域宽和左对齐输出。1、读取输入内容有两种方法:getline()逐行读取后用stringstream分割...

2020-03-09 21:43:05 1881

原创 解题报告——例题5-8 Unix is 命令(UVa 400)——26行代码解决

题目大意:读入n个字符串,按字典序排序,再按列优先输出,附加条件每行最多输出60个字符,在此条件下要求行最少。(最开始没仔细看题,以为在一行中,每个单词相隔最长单词的长度+2,最后一列单词空间长度为最长单词的长度,不够用空格补齐。o(╥﹏╥)o。)注意点:1、求行数和列数时,容易想到的方法是O(n)复杂度的遍历求法,但可以优化为复杂度为O(1)的求法。2、如果对本题求解过程有清晰的阶段划分...

2020-03-08 19:56:16 777

原创 比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告

题意:丑数是一些因子只有2,3,5的数。数列1,2,3,4,5,6,8,9,10,12,15……写出了从小到大的前11个丑数,1属于丑数。现在请你编写程序,找出第1500个丑数是什么。没有输入输出:The 1500’th ugly number is <…>.(<…>为你找到的第1500个丑数) 注意:<…>是你找到的数,输出中没有尖括号; 2、输出完应...

2020-03-08 16:52:05 857

原创 解题报告——例题 5-6团体队列(Team Queue UVa 540)——31行代码解决

题目大意:有t个团队的人正在排一个长队,每次新来一个人时,如果他有队友在排队,那么这个新人会插队到最后一个队友的身后。如果没有任何一个队友排队,那么他会排到长队的队尾。输入每个团队中所有队员的编号,要求支持如下三种指令(前两种指令可穿插进行):*ENQUEUE x:编号为x的人进入长队*DEQUEUE:长队的队首出队*STOR:停止模拟对于每个DEQUEUE指令,输出出队的人的编号。样...

2020-03-07 21:50:14 972 2

原创 解题报告——例题5-5 集合栈计算机 UVa12096

五个操作:1、PUSH:空集{}入栈2、DUP:当前栈顶元素复制一份在入栈3、UNION:出栈两个集合,然后把二者的并集入栈4、INTERSECT:出栈两个元素,然后把二者的交集入栈5、ADD:出栈两个集合,把先出栈的集合加入到后出栈的集合中,结果入栈心路历程:这道题当真卡了我好久好久,因为涉及到了4个容器的搭配使用,最开始总是搞不懂其中的逻辑,一度想要放弃,两次都从椅子上站起来不想...

2020-03-07 12:20:33 1072 2

原创 解题报告——蓝桥杯 试题 基础练习 字符串对比——16行代码AC

励志用尽量少的代码做高效的表达储备知识:1、转化字母大小写→cctype头文件函数详解注意点:1、本题按要求4个if语句层层嵌套,一定要做到清晰、易懂,才能快速解题。3、判断第三点时,用#include<cctyp>中的toupper()函数将两个字符串全部转化为大写,再判断两个字符串是否相等,就可以很方便的解决这个问题。这种方法叫做“标准化”。#include<b...

2020-03-02 20:01:30 911

原创 解题报告——试题 基础练习 分解质因数——31行代码AC

励志用少的代码做高效的表达PS:如果大脑被僵尸吃掉了,那么本文最下面有不需要动脑子的求素数方法储备知识:1、预处理:预处理的意思是将可能用到的数据先行处理,形成一张表,如果想要调用某个数,直接去表里查找。2、筛选法:筛选法是预处理的一种。 一般用筛选法来求某一区间内的素数用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数...

2020-03-02 18:21:05 2169

原创 解题报告——蓝桥 试题 基础练习 矩阵乘法——27行代码AC

储备知识:矩阵:我们回顾一下矩阵的乘法:也就是说,结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和。 矩阵的n次幂同理。不过是自己乘自己。本题注意点:1、矩阵是有0阶的!矩阵是有0阶的!!矩阵是有0阶的!!!(数学不好的我哭晕在厕所o(╥﹏╥)o)类似这样:代码:#include<bits/stdc++.h>...

2020-03-02 16:15:59 2149

原创 解题报告+优化——试题 基础练习 矩形面积交——16行代码AC

心路历程:第一阶段:最初想独立AC出这题来着,但考虑来考虑去,总觉得没想到点子上,缺点什么似的。于是搜网,果不其然,是一种全新的算法“线段交”。当然这是简化版的。 下面说一下判断线段交的方法;线段交:先判断两个矩形是否相交,如果不相交直接输出0。反之,则输出4个横坐标中中间两个横坐标值之差, 4个纵坐标中中间两个纵坐标值之差。好大一坨知识!学习了!第二阶段:明确思路后,对题的重心就从...

2020-03-02 13:00:15 610

原创 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC

贪心算法的定义:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。贪心在本题的应用:对于本题,应用贪心算法的思路就是:每次改动,都确保离标准的答案更近了一步。 比...

2020-03-01 21:09:02 838

原创 如何快速理解递归——看这个就可以了

例题:问题描述FJ在沙盘上写了这样一些字符串:  A1 = “A”  A2 = “ABA”  A3 = “ABACABA”  A4 = “ABACABADABACABA”      … …   你能找出其中的规律并写所有的数列AN吗?输入格式 仅有一个数:N ≤ 26。样例输入:3样例输出ABACABA解:1、规律:  2、说一下递归函数:递...

2020-03-01 09:59:12 1260 1

【最新2021版】阿里巴巴Java开发手册

《阿里巴巴 Java 开发手册》始于阿里内部规约,在全球Java开发者共同努力下,已成为业界普遍遵循的开发规范,涉及到如变量的命名、类和方法的使用、不同结构的定义方法等,让初学者在刚刚接触开发时就以最正确的姿态来学习,达到事半功倍的效果。 毫不夸张的说,每一位编程者都需要这样一本开发手册。

2021-06-03

紫书第三章习题源码.zip

紫书第三章习题源码,里面有我对例题的一些心得、总结和感悟。 所选代码都是可以找到的最优解。

2020-05-15

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

TA关注的人

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