自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 问答 (1)
  • 收藏
  • 关注

转载 第十二届蓝桥杯省赛 —— 直线

#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<set>using namespace std;typedef pair<int, int> P;typedef pair<pair<int, int>, pair<int,int>> PII;int gcd(int a, .

2022-03-11 21:50:40 202

原创 第一章 计算机系统概论

计算机组成:计算机主要功能部件的组成结构、逻辑设计及功能不见间的相互连接关系。计算机系统结构:程序设计者(主要指低级语言程序员或编译程序设计者)所看到的计算机系统的属性,即计算机的功能特性和概念性结构。关系:具有相同计算机体系结构的计算机因为速度要求不同等因素可以采用不同的计算机组成(逻辑实现),一种计算机组成可以采用多种不同的计算机实现(物理实现)。1.1 计算机系统的基本组成计算机系统由硬件和软件两部分组成。硬件是具体物理装置的总称,软件包括运行在硬件装置上的程序和数据以及相关的文档。1..

2021-09-23 10:41:05 355 2

转载 利用stringstream实现数字与字符串相互转换

1.stringstream数字与字符串相互转换#include <sstream>#include <iostream>#include <string>#include <typeinfo>using namespace std;int main(){ stringstream stream; string buf = "1234"; int i; //1.字符串转换为整形 stream << buf;/

2021-09-13 17:53:14 462

原创 日期模拟题目方法总结

日期题目常用函数摸版//判断是否为闰年int is_leap(int year){ if(year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return 1; return 0;}//获取某一年某一月的天数int get_days(int year, int month){ if(month == 2) return months[month] + is_leap(year).

2021-09-13 10:58:08 226

原创 存在负权边的单源汇最短路(Ballman-Ford、SPFA)

(一)Ballman-FordBellman-Ford算法是求负权图的单源最短路径的一种算法,效率较低,代码难度小。其原理为连续进行松弛,在每次松弛时吧每条边都更新一下,若在n-1次松弛后还能更新,则说明图中有负环,因此无法得出结果,否则就完成。优点:可以计算有边数限制的最短路问题;但是处理负权图时往往使用SPFA。具体步骤:for(int i = 0; i < n; i ++ ) for(所有边 a, b, w) <-松弛操作 dist[b] = min(dist[b

2021-08-31 10:48:01 1744

转载 Dijkstra求最短路

文章目录(一)算法解析(二)模板例题(一)算法解析整体思路: 进行n次迭代(n为点的个数)去确定每个点到起点的最小值,最后输出我们要找的最短距离。按照以上思路,我们发现还需要存储两个变量dist [n] :用于存储每个点到起点的最短距离st[n] : 用于在更新最短距离时,判断当前的点是否确定,是否需要更新每次迭代的过程中,我们都先找到当前未确定的点中距离最短的点int t = -1;for(int j = 1; j <= n; j ++ ) if(!st[j] &a

2021-08-29 23:31:49 137

原创 ccf-csp 路径解析

题目题目背景在操作系统中,数据通常以文件的形式存储在文件系统中。文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。文件有内容,用于存储数据。目录是容器,可包含文件或其他目录。同一个目录下的所有文件和目录的名字各不相同,不同目录下可以有名字相同的文件或目录。为了指定文件系统中的某个文件,需要用路径来定位。在类 Unix 系统(Linux、Max OS X、FreeBSD等)中,路径由若干部分构成,每个部分是一个目录或者文件的名字,相邻两个部分之间用 / 符号

2021-08-24 16:41:15 257

原创 拓扑排序知识点+模板

文章目录知识点题目1题目2知识点定义:拓扑排序是一个有向无环图的所有顶点的线性序列。且该序列满足一下两个条件:每个顶点只出现一次;若存在一条顶点A到顶点B的路径,那么在序列中顶点A在顶点B的前面。算法流程:用队列来实现,初始化将所有入度为0的点加入队列。主要有一下两步循环执行,直到不存在入度为0的点为止。1.选择一个入度为0的顶点,并将他输出。2.删除途中从顶点连出的所有边循环结束,若输出的顶点数小于图中的顶点数,则表示该图存在回路,无法拓扑排序,反之,输出的即为拓扑排序(注:该拓扑

2021-08-23 18:27:57 209

转载 欧拉回路详解

文章目录知识点例题知识点欧拉通路和欧拉回路:欧拉通路:对于图G来说,如果存在一条通路包含G的所有边,则该通路称为欧拉通路,也称欧拉路径。欧拉回路:如果欧拉路径是一条回路,那么称其为欧拉回路。欧拉图:含有欧拉回路的图是欧拉图。对有向图G和无向图H:图G存在欧拉路径与欧拉回路的充要条件分别是:欧拉路径:图中所有奇度点的数量为0或2.欧拉回路:图中所有点的度数都是偶数。图H存在欧拉路径和欧拉回路的充要条件分别为:欧拉路径:所有点的入度等于出度或者存在一点出度比入度大1(起点),一点入

2021-08-23 16:23:44 10835 4

原创 ccf-csp 画图

题目描述用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术。例如,下图是用 ASCII 字符画出来的 CSPRO 字样。本题要求编程实现一个用 ASCII 字符来画图的程序,支持以下两种操作:画线:给出两个端点的坐标,画一条连接这两个端点的线段。简便起见题目保证要画的每条线段都是水平或者竖直的。水平线段用字符 - 来画,竖直线段用字符 | 来画。如果一条水平线段和一条竖直线段在某个位置相交,则相交位置用字符 + 代替。填充:给出填充的起始位置坐标和需要填

2021-08-20 11:13:58 319

原创 ccf-csp 模板生成系统

题目链接http://118.190.20.162/view.page?gpid=T30问题描述问题描述  成成最近在搭建一个网站,其中一些页面的部分内容来自数据库中不同的数据记录,但是页面的基本结构是相同的。例如,对于展示用户信息的页面,当用户为 Tom 时,网页的源代码是而当用户为 Jerry 时,网页的源代码是这样的例子在包含动态内容的网站中还有很多。为了简化生成网页的工作,成成觉得他需要引入一套模板生成系统。  模板是包含特殊标记的文本。成成用到的模板只包含一种特殊标记,格式为

2021-08-19 18:13:47 172

原创 ccf-csp 节日

题目题目描述:有一类节日的日期并不是固定的,而是以“a 月的第 b 个星期 c”的形式定下来的,比如说母亲节就定为每年的五月的第二个星期日。现在,给你 a,b,c 和 y1,y2,希望你输出从公元 y1 年到公元 y2 年间的每年的 a 月的第 b 个星期 c 的日期。提示:关于闰年的规则:年份是 400 的整数倍时是闰年,否则年份是 4 的倍数并且不是 100 的倍数时是闰年,其他年份都不是闰年。例如 1900 年就不是闰年,而 2000 年是闰年。为了方便你推算,已知 1850 年 1 月

2021-08-18 14:58:05 243

原创 bfs常见题型总结

文章目录(一)bfs模板题(二)Flood Fill(三)最短路模型(四)多源bfs(一)bfs模板题题目描述给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。输入格式

2021-08-15 14:25:53 1146

原创 ccf-csp 命令行选项

文章目录题目问题分析AC代码题目问题描述  请你写一个命令行分析程序,用以分析给定的命令行里包含哪些选项。每个命令行由若干个字符串组成,它们之间恰好由一个空格分隔。这些字符串中的第一个为该命令行工具的名字,由小写字母组成,你的程序不用对它进行处理。在工具名字之后可能会包含若干选项,然后可能会包含一 些不是选项的参数。  选项有两类:带参数的选项和不带参数的选项。一个合法的无参数选项的形式是一个减号后面跟单个小写字母,如"-a" 或"-b"。而带参数选项则由两个由空格分隔的字符串构成,前者的格式要求

2021-08-10 21:14:39 263

原创 组合数详解(递推、预处理)

文章目录(一)递推1.算法原理2.实例(二)预处理1.算法原理介绍2. 实例(一)递推1.算法原理题目中给定两个正整数,求CabC_{a}^{b}Cab​ mod q 的值,当数据很小时,即 0 < a <= b < 2000时,我们可以采用 n2n^2n2 的做法,即公式 CabC_{a}^{b}Cab​ = Ca−1bC_{a-1}^{b}Ca−1b​ + Ca−1b−1C_{a-1}^{b-1}Ca−1b−1​CabC_{a}^{b}Cab​ = Ca−1bC_{a-1}^

2021-08-09 22:40:57 1701

原创 数字组合(动态规划:01背包问题)

问题描述:给定N个正整数A1,A2,…,AN,从中选出若干个数,使它们的和为M,求有多少种选择方案。输入格式:第一行包含两个整数N和M。第二行包含N个整数,表示A1,A2,…,AN。输出格式:包含一个整数,表示可选方案数。数据范围:1≤N≤100,1≤M≤10000,1≤Ai≤1000输入样例:4 41 1 2 2输出样例:3思路详解:题目是01背包问题的一个应用。我们可以将体积看作数的总和M,可以将价值...

2021-07-24 22:27:46 407

原创 拦截导弹(最长上升子序列+贪心详解)

题目描述:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。输入格式:共一行,输入

2021-07-24 17:59:41 11002 1

原创 分组背包问题

题目描述:有N组物品和一个容量是V的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是vij,价值是wij,其中i是组号,j是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式:第一行有两个整数N,V,用空格隔开,分别表示物品组数和背包容量。接下来有N组数据:每组数据第一行有一个整数Si,表示第i个物品组的物品数量; 每组数据接下来有Si行,每行有两个整数vij,...

2021-07-15 18:03:35 296

原创 POJ-3278 Catch That Cow

问题描述:农夫知道一头牛的位置,想要抓住它。农夫和牛都于数轴上 ,农夫起始位于点 N(0<=N<=100000) ,牛位于点 K(0<=K<=100000) 。农夫有两种移动方式:1、从 X移动到 X-1或X+1 ,每次移动花费一分钟;2、从 X移动到 2*X ,每次移动花费一分钟;假设牛没有意识到农夫的行动,站在原地不动。最少要花多少时间才能抓住牛?输入:一行: 以空格分隔的两个字母:N和K输出:一行: 农夫抓住牛需要的最少时间。输入样例:...

2021-03-25 10:54:44 145

原创 小朋友排队(树状数组)

题目描述:n个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。如果有两个小朋友身高一样,则他们谁站在...

2021-03-19 20:00:22 247

原创 动态求连续区间和(树状数组 + 线段树详解)

题目描述:给定n个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列[a,b]的连续和。输入格式:第一行包含两个整数n和m,分别表示数的个数和操作次数。第二行包含n个整数,表示完整数列。接下来m行,每行包含三个整数k,a,b(k=0,表示求子数列[a,b]的和;k=1,表示第a个数加b)。数列从1开始计数。输出格式:输出若干行数字,表示k=0时,对应的子数列[a,b]的连续和。数据范围:1≤n≤100000...

2021-03-18 00:12:59 458

原创 递增三元组

问题描述给定三个整数数组A=[A1,A2,…AN]B=[B1,B2,…BN]C=[C1,C2,…CN]请你统计有多少个三元组(i,j,k) 满足:1≤i,j,k≤N Ai<Bj<Ck输入格式第一行包含一个整数N。第二行包含N个整数A1,A2,…AN。第三行包含N个整数B1,B2,…BN。第四行包含N个整数C1,C2,…CN。输出格式一个整数表示答案数据范围1≤N≤10^50≤Ai,Bi,Ci≤1...

2021-02-11 18:14:18 330

原创 石子合并(区间DP)

问题描述:设有N堆石子排成一排,其编号为1,2,3,…,N。每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同,合并的总代价也不相同。例如有4堆石子分别为 1 3 5 2, 我们可以先合并1、2堆,代价为4,得到4 5 2, 又合并 1,2堆,代价为9,得到9 2 ,再合并得到11,总代价为4+9+11=24;如果第二步是先合并2,3堆,

2021-01-29 21:58:42 235 2

原创 最长公共子序列(线性DP)

问题描述:给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。输入格式:第一行包含两个整数N和M。第二行包含一个长度为N的字符串,表示字符串A。第三行包含一个长度为M的字符串,表示字符串B。字符串均由小写字母构成。输出格式:输出一个整数,表示最大长度。数据范围:1≤N,M≤1000输入样例:4 5acbdabedc输出样例:3算法思路:集合表示:f[ i ][ j ]表示a的前

2021-01-29 17:26:51 378 2

原创 火星人(贪心+全排列)

问题描述:人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。火星人用一种非常简单的方式来表示数字——掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3……。火星人的任意两根手指都能随意交换位置,他们就是

2021-01-29 00:19:15 299

原创 摘花生

问题描述:Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。输入格式:第一行是一个整数T,代表一共有多少组数据。接下来是T组数据。每组数据的第一行是两个整数,分别代表花生苗的行数R和列

2021-01-28 21:23:41 156

原创 最长上升子序列(朴素法及其优化)

问题描述:给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式:第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式:输出一个整数,表示最大长度。数据范围:1≤N≤1000−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4基本思路:算法思想:动态规划(DP) 状态描述:f[ i ] 表示以 i 结尾的所有子序列的集合,其值表示为最大值MAX 状态划分:因为.

2021-01-28 18:24:01 216

原创 多重背包问题(朴素法+二进制优化)

问题描述:有N种物品和一个容量是V的背包。第i种物品最多有si件,每件体积是vi,价值是wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式:第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行三个整数vi,wi,sivi,wi,si,用空格隔开,分别表示第ii种物品的体积、价值和数量。输出格式:输出一个整数,表示最大价值。数据范围:...

2021-01-25 23:04:17 453

原创 完全背包问题

问题描述:有N种物品和一个容量是V的背包,每种物品都有无限件可用。第i种物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式:第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。接下来有NN行,每行两个整数vi,wivi,wi,用空格隔开,分别表示第ii种物品的体积和价值。输出格式:输出一个整数,表示最大价值。数据范围:0<...

2021-01-25 11:44:45 404

原创 01背包问题

问题描述:有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式:第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有N行,每行两个整数vi,wi,用空格隔开,分别表示第i件物品的体积和价值。输出格式:输出一个整数,表示最大价值。数据范围:0<N,V≤10000&l...

2021-01-24 19:54:01 383 2

转载 HDU1106排序【字符串+整数+排序】

问题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106问题分析: 这个问题主要是字符串处理和数字字符串转整数的问题。这里给出两种解题方法,方法一使用自动机来解决;方法二是用库函数strtok()来切割字符串后再将其转换为整数。程序说明: 方法二:使用C语言的库函数strtok()来切割字符串,并且以数字字符“5”作为分割符,处理起来就简单多了。数字字符串转整数使用库函数atoi()来实现,排序使用库函数qsort()来...

2020-10-24 15:00:18 178

转载 string与cin中的getline(),get总结

一、string中的getline不是string的成员函数,属于全局函数,使用需要使用include<string>,有两个重载版本:isrteam& getline(istream& is, string& str, char delim);istream& getline(istream& is, string& str);这两个getline读取cin流里的字符串到str中,直到遇到下列情况结束,并返回:(1)遇到文件结束符

2020-09-26 10:52:30 656

原创 排列组合问题模板

目录前言一、全排列二、组合问题前言排列组合问题实在暴力枚举的时候经常遇到的问题,是搜索技术的基础之一,是我们必须要掌握的算法。一、全排列递归求全排列:#include<bits/stdc++.h>using namespace std;int data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int num = 0;void solve(int begin, int end){ if(...

2020-09-02 12:05:00 372

原创 STL之关联式容器set、map

关联式容器1.管理元素集合的STL容器大致分为两类,序列式容器(有顺序的集合)和关联式容器(经过排序的集合)。2.关联式容器再管理数据的过程中会自动给元素排序。其优点在于可以随时采用二分搜索法,搜索元素的效率极高。set1.set是根据元素值进行排序的集合,所插入的元素在集合中唯一,不存在重复元素。1. #include<set> 用来将STL的set包含到程序中2. set<int> S; 一个声明。3. 成员函数:

2020-07-25 14:27:56 176

原创 二叉树的性质及遍历

二叉树的性质1.性质一:在二叉树的第i层上至多有2^(i-1)个结点(i >= 1)2.性质二:深度为k的二叉树至多有2^k-1个结点(k >= 1)3.性质三:对任何一颗二叉树T,如果其终端结点数为n0, 度为2的结点数为n2,则n0 = n2+1.4.性质四:具有n个结点的完全二叉树的深度为 log2n(向下取整)+1....

2020-07-19 17:04:09 371

原创 递归和分治及其应用(分治、快速排序)

分治法 定义:使用递归的技巧,可以将一个问题拆分成两个或更多较小的局部问题,利用递归函数求出每个局部问题的劫,然后再将结果整合,最终解决问题,这种编程手法称为分治法。 分治法的核心是将问题分割、拆解为同类的小问题(神似套娃),再进行整合。但是在设计时必须要留有终点。 高等排序当数据庞大或在一些体积庞大的数组面前,冒泡排序(复杂度高达o(n^2))的初等排序就失去了实用价值,通常在竞赛中会出现超时。由此就会用到高等排序。其中,包括归并排序、快速排序和计数排序(桶排序)。归并排序

2020-07-15 21:53:30 559

原创 二分搜索(lower_bound详解)

lower_bound是一种应用于有序数据范围内的算法,它可以返回一个迭代器,这个迭代器指向第一个不小于指定值value的元素。 用途:可以找出第一个能恰当插入value的位置,且能维持指定范围内的元素顺序(有序状态)。 用法:lower_bound()的前两个参数用来指定作为对象的数组或容器的范围。第三个参数用来指定value。 例题:ALDS1_4_B #include<stdio.h>#include<iostream>#include<algorithm&

2020-07-12 20:53:59 2629 1

原创 C++STL之栈、队列、vector、表

stack:栈1. #include<stack> //用来将STL的stack包含到程序中2. stack<int> s; //是一个声明,用于生成管理int型元素的栈。在<>中指定类型,从而定义管理该类型数据的容器3. 成员函数: size() 返回栈的元素数 top() 返回栈顶的元素 pop() 从栈中取出并删除元素 push(x)

2020-07-10 23:19:39 386

原创 数据结构概述(C++版)

1.1什么是数据结构数据结构是一种在程序中系统化管理数据集合的形式。通常由一下三个概念组成:数据集合。通过对象数据的本体(例如数组和结构体等基本数据结构)保存数据集合。规则。保证数据集合按照一定规矩进行正确操作、管理和保存的规则。操作。“插入元素”“取出元素”等对数据集合的操作。或“查询数据的元素数”等查询。1.1.1栈是一种临时保存数据的数据结构,按照最后进入栈的数据最先出栈的规则(先进后出)管理数据。操作1.push(x):在栈顶部添加元素。2.pop():从栈顶部取出元素。3.

2020-07-10 20:59:03 448

空空如也

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

TA关注的人

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