c++
lh2018i
这个作者很懒,什么都没留下…
展开
-
Bell Labs and CSP Threads
本页是并发编程历史的一部分,重点介绍了 Hoare 的通信顺序进程 (CSP) [1] [1a]语言的一个特定血统。这种风格的并发编程很有趣,不是因为效率,而是因为清晰。也就是说,仅将并发编程视为提高性能的一种手段是一个普遍的错误, 例如,重叠磁盘 I/O 请求,通过将结果预取到预期查询来减少延迟,或者利用多个处理器。这些优势很重要,但与本次讨论无关。毕竟,它们可以以其他方式实现,例如异步事件驱动编程。相反,我们对并发编程很感兴趣,因为它提供了一种自然的抽象,可以使一些程序变得更简单。大多数计算机科学本科生翻译 2022-06-04 19:55:38 · 392 阅读 · 0 评论 -
每日一题 连续数组
给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。提示:1 <= nums.length <= 105nums[i] 不是 0 就是 1题解class Solution原创 2021-06-03 23:46:55 · 200 阅读 · 0 评论 -
每日一题:连续字数组和
给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。示例 1:输入:nums = [23,2,4,6,7], k = 6输出:true解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。示例 2:输入:nums = [2原创 2021-06-02 11:34:24 · 162 阅读 · 0 评论 -
子矩阵数量
给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x2 且 y1 <= y <= y2 的所有单元 matrix[x][y] 的集合。如果 (x1, y1, x2, y2) 和 (x1’, y1’, x2’, y2’) 两个子矩阵中部分坐标不同(如:x1 != x1’),那么这两个子矩阵也不同。示例 1:输入:matrix = [[0,1,0],[1,1,1],[0,1原创 2021-05-31 10:18:19 · 1262 阅读 · 0 评论 -
每日一题:汉明距离
461. 汉明距离难度简单448两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。1. 暴力解法class Solution {public: int hammingDistance(原创 2021-05-27 12:36:18 · 128 阅读 · 0 评论 -
L2-006 树的遍历 (25 分)
L2-006 树的遍历 (25 分)给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2代码#include&原创 2021-04-23 15:25:24 · 104 阅读 · 0 评论 -
蓝桥杯 货物摆放
#include<bits/stdc++.h>using namespace std;#define re register#define ull unsigned long longint main(){ ull res,res2; ull ct=0; ull maxn = 2021041820210418; for(re ull i =1;i<=300000;++i) { if(maxn%i==0) {原创 2021-04-19 10:13:20 · 770 阅读 · 0 评论 -
遗传算法求解八皇后问题C++实现
一. 实验问题简介问题表述为:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。本次实验利用遗传算法求解八皇后问题的一个可行解。二. 实验语言及算法实验语言: C++实验算法: 遗传算法三. 实验思路Random_formation函数杂交:利用初始化的两个父辈通过进行杂交,将通过父辈从某随机一点进行割分,通过两个for循环交换各部分拼接起来,生成两个子辈。(一代繁殖共生成16个子辈)变异:利用随机函数分别生成两原创 2021-04-07 23:46:45 · 1531 阅读 · 0 评论 -
CCF-CSP-202012-5 星际旅行 80分暴力题解
问题描述试题编号:202012-5试题名称:星际旅行时间限制:3.0s内存限制:512.0MB问题描述:题目描述乔帝要规划一次星际旅行,星际空间可以视为一个 3 维坐标系,乔帝有 n(n≤1,000,000,000) 个动力装置排成一行(下标从 1 到 n )。第 i 个动力装置可以让他的飞船 3 个维度的坐标分别增加 xi,yi,zi 。一开始这些动力装置的所有参数都是 0 。在规划过程中,乔帝可能会对动力装置进行调整,也可能会对一些动力装置的动力进行评估。原创 2021-04-01 19:43:24 · 1626 阅读 · 8 评论 -
L1-009 N个数求和 (20 分)
L1-009 N个数求和 (20 分)本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。输出格式:输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分原创 2021-03-22 15:38:41 · 158 阅读 · 0 评论 -
蓝桥杯试题 历届试题 子串分值和
试题 历届试题 子串分值和提交此题 评测记录资源限制时间限制:1.0s 内存限制:256.0MB问题描述对于一个字符串 S,我们定义 S 的分值 f(S) 为 S 中出现的不同的字符个数。例如 f("aba")=2,f("abc")=3, f("aaa")=1。现在给定一个字符串 S[0…n−1](长度为 n),请你计算对于所有 S 的非空子串 Si…j,f(S[i…j])的和是多少。输入格式输入一行包含一个由小写字母组成的字符串 S。输出格式输出一个整数表示答案。样例输入aba原创 2021-03-22 00:00:09 · 1236 阅读 · 2 评论 -
蓝桥杯 数字三角形动规题解
试题 历届试题 数字三角形提交此题 评测记录资源限制时间限制:1.0s 内存限制:256.0MB问题描述73 88 1 02 7 4 44 5 2 6 5上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。输入格式输入的第一行包含一个整数N (1<N≤10原创 2021-03-21 21:32:45 · 615 阅读 · 1 评论 -
人工智能——搜索算法
人工智能——搜索算法实验题目求解罗马尼亚度假问题,找到从Arad到Bucharest的一条路径实现两种搜索算法求解该问题罗马尼亚问题的状态空间图如下实验语言和算法实验语言:C/C++算法:Dfs DijkstraDfs\ \ \ DijkstraDfs Dijkstra(最小堆优化) A∗(Dijkstra优化)A^*(Dijkstra优化)A∗(Dijkstra优化)实验算法1.DFSDFSDFS算法原创 2021-03-18 19:46:35 · 430 阅读 · 0 评论 -
期末预测之最佳阈值(动规)
期末预测之最佳阈值思路通过输入时统计总共的result为1的个数按照y从小到大排序s[i].l为左侧的0的个数,s[i].r为右侧的1个数(包括本身)初始s[1].r=a,s[1].l=0通过状态转移方程有以下代码if(s[i-1].result==0){ s[i].r=s[i-1].r; s[i].l=s[i-1].l+1; if(s[i-1].y==s[i].y&&s[i].原创 2021-03-17 14:46:08 · 227 阅读 · 0 评论 -
选数
题目描述已知 nn 个整数 x_1,x_2,…,x_nx1 ,x2 ,…,xn ,以及11个整数kk(k<nk<n)。从nn个整数中任选kk个整数相加,可分别得到一系列的和。例如当n=4,k=3n=4,k=3,44个整数分别为3,7,12,193,7,12,19时,可得全部的组合与它们的和为:3+7+12=223+7+12=223+7+19=293+7+19=297+12+19=387+12+19=383+12+19=343+12+19=34。现在,要求你计算原创 2021-03-16 23:46:36 · 363 阅读 · 0 评论 -
L1-020 帅到没朋友 (20 分)
L1-020 帅到没朋友 (20 分)当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。输入格式:输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行,每行首先给出一个正整数K(≤1000),为朋友圈中的人数,然后列出一个朋友圈内的所有人——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(≤10000),为待查询的人数;随后一行中列出M个待查询的ID,以空格分隔。注原创 2021-03-13 16:41:15 · 68 阅读 · 0 评论 -
L2-004 这是二叉搜索树吗?
L2-004 这是二叉搜索树吗? (25 分)一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点,其左子树中所有结点的键值小于该结点的键值;其右子树中所有结点的键值大于等于该结点的键值;其左右子树都是二叉搜索树。所谓二叉搜索树的“镜像”,即将所有结点的左右子树对换位置后所得到的树。给定一个整数键值序列,现请你编写程序,判断这是否是对一棵二叉搜索树或其镜像进行前序遍历的结果。输入格式:输入的第一行给出正整数 N(≤1000)。随后一行给出 N 个整数键值,其间以空格分隔。输出格原创 2021-03-13 13:55:18 · 86 阅读 · 0 评论 -
最小生成树算法和切分定理
38.最小生成树1. Kruskal 算法算法步骤:把图中所有边从小到大排序for(int i=1;i<=m;i++) { cin>>e[i].in>>e[i].next>>e[i].w; } sort(e+1,e+m+1,cmp);然后从小到达依次选择边如果选择的边的两个端点在不同的树上,则增加该边(利用Union-find set 实现)bool cmp(const edge &a,co原创 2021-03-10 21:49:28 · 420 阅读 · 0 评论 -
Lucas定理
37. Lucas定理1. Definition Let n=sp+q,m=tp+r.(0≤,r≤p−1)n=sp+q,m=tp+r.(0\leq,r\le p-1)n=sp+q,m=tp+r.(0≤,r≤p−1)Then :Cnm≡CstCqr(mod p)C_n^m\equiv C_s^tC_q^r(mod\ p)Cnm≡CstCqr(mod p)2. deduction[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G0YpFXzA-原创 2021-03-08 21:00:18 · 143 阅读 · 0 评论 -
链表去重
36. 链表去重L2-002 链表去重 (25 分)给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 −原创 2021-03-07 14:58:10 · 219 阅读 · 0 评论 -
Shortest Path Algorithm (Standard)
35. Shortest Path Algorithm (Standard)#include<bits/stdc++.h>using namespace std;#define maxn 200010#define inf 0x3fffffffint n,m,s;int v[maxn];long long ans[maxn];bool vis[maxn];typedef struct{ int index; int w; ...原创 2021-03-05 14:43:06 · 77 阅读 · 0 评论 -
L2-014 列车调度 (25 分)
L2-014 列车调度 (25 分)火车站的列车调度铁轨的结构如下图所示。两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道。每趟列车从入口可以选择任意一条轨道进入,最后从出口离开。在图中有9趟列车,在入口处按照{8,4,2,5,3,9,1,6,7}的顺序排队等待进入。如果要求它们必须按序号递减的顺序从出口离开,则至少需要多少条平行铁轨用于调度?输入格式:输入第一行给出一个整数N (2 ≤ N ≤105 ),下一行给出从1到N的整数序号的一个重排原创 2021-03-04 22:34:30 · 834 阅读 · 1 评论 -
紧急救援 (25 分)
L2-001 紧急救援 (25 分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;D是目的原创 2021-03-04 20:55:31 · 183 阅读 · 1 评论 -
Shortest path algorithm
34. Shortest path algorithm1. Floyd Alogrithm#include<bits/stdc++.h>using namespace std;#define maxn 20010#define inf 100000000int n,m,s;int mp[maxn][maxn];int main(){ cin>>n>>m>>s; for(int i=1;i<=n;i++) {原创 2021-03-03 18:43:37 · 173 阅读 · 1 评论 -
Union-find set
32. Union-find setIn order to complete the data structure,I use the following four steps:1. Initialint f[max];inline void init(int n){ while(n--) { f[i] = i; }}2. Findint find(int x){ if(f[x] == x) { return x;原创 2021-03-02 20:46:58 · 130 阅读 · 0 评论 -
后缀表达式
31.后缀表达式题目描述所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。输入格式输入:后缀表达式输出格式输出:表达式的值输入输出样例输入 #1复制3.5.2.-*7.+@输出 #1复制16说明/提示字符串长度,1000内。#include<原创 2021-02-25 19:28:12 · 295 阅读 · 0 评论 -
格雷码
29.格雷码题目描述通常,人们习惯将所有 nn 位二进制串按照字典序排列,例如所有 2 位二进制串按字典序从小到大排列为:00,01,10,11。格雷码(Gray Code)是一种特殊的 nn 位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同,特别地,第一个串与最后一个串也算作相邻。所有 2 位二进制串按格雷码排列的一个例子为:00,01,11,10。nn 位格雷码不止一种,下面给出其中一种格雷码的生成算法:1 位格雷码由两个 1 位二进制串组成,顺序为:0,1。n + 1n+1原创 2021-02-24 13:49:42 · 858 阅读 · 0 评论 -
Catalan数通项推导和应用
28.Catalan数通项推导和应用Catalan:fn=f1×fn−1×+...+fn−1×f1Catalan: f_n =f_1\times f_{n-1}\times +...+ f_n-1\times f_1Catalan:fn=f1×fn−1×+...+fn−1×f1fn=C2(n−1)n−1nn≥2f_n=\frac{C_{2(n-1)}^{n-1}}{n}\qquad n\ge2fn=nC2(n−1)n−1n≥2不妨设g(x)=h1x+h2x2+h3x3+...+原创 2021-02-22 21:32:13 · 214 阅读 · 0 评论 -
Leetcode周赛
27.Leetcode周赛给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。示例 1:输入:word1 = “abc”, word2 = “pqr”输出:“apbqcr”解释:字符串合并情况如下所示:word1: a b cword2: p q r合并后: a p b q c r示例 2:输入:word1 = “原创 2021-02-22 15:30:26 · 364 阅读 · 0 评论 -
单词匹配
26.单词匹配*string:: string substr(pos,n)*返回从string中的pos位置开始的克隆的长度为n的string类给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “原创 2021-02-21 21:22:08 · 406 阅读 · 0 评论 -
解码方法
25.解码方法一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“111” 可以将 “1” 中的每个 “1” 映射为 “A” ,从而得到 “AAA” ,或者可以将 “11” 和 “1”(分别为 “K” 和 “A” )映射为 “KA” 。注意,“06” 不能映射为 “F” ,因为 “6” 和 “06” 不同。给你一个只含数字的原创 2021-02-21 16:20:39 · 230 阅读 · 1 评论 -
完全平方数
24.完全平方数给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量 。完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。示例 1:输入:n = 12输出:3解释:12 = 4 + 4 + 4示例 2:输入:n = 13输出:2解释:13 = 4原创 2021-02-21 16:19:33 · 172 阅读 · 0 评论 -
最大正方形
最大正方形在一个由 '0' 和 '1' 组成的二维矩阵内,找到只包含 '1' 的最大正方形,并返回其面积。class Solution {public: int maximalSquare(vector<vector<char>>& matrix) { int r = matrix.size(); int c = matrix[0].size(); int minl = min(r,c);//求出最大的正方形边长原创 2021-02-21 16:18:41 · 68 阅读 · 0 评论 -
2021-02-20
22.0-1矩阵给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。两个相邻元素间的距离为 1 。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]示例 2:输入:[[0,0,0],[0,1,0],[1,1,1]]输出:[[0,0,0],[0,1,0],[1,2,1]]提示:给定矩阵的元素个数不超过 10000。给定矩阵中至少有一个元素是 0。矩阵中的元素只在四个方向上相原创 2021-02-20 20:36:13 · 50 阅读 · 0 评论 -
21.打家劫舍
21.打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[原创 2021-02-20 18:41:12 · 68 阅读 · 0 评论 -
20.爬楼梯
20.爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶class Solution {public: int climbStairs(int原创 2021-02-20 18:40:41 · 71 阅读 · 0 评论 -
c++学习记录
面向对象编程(oop)是一种特殊的、设计程序的概念性方法,c++通过一些特性改进c语言,使得应用这种方法更容易下面是最重要的opp特性抽象封装和数据隐藏多态继承代码可重用性1.过程性编程和面向对象编程类的定义,保存在stock00.h#ifndef STOCK00_H_#define STOCK00_H_#include<string>//using namespace std;class Stock{ private : std::原创 2021-02-20 13:55:26 · 118 阅读 · 0 评论 -
c++学习记录
1. 内联函数内联函数的编译代码与其他程序代码“内联”起来了。编译器将使用相应的函数代码替换调用。由于内联函数无需跳到另一个位置处执行代码,因此其运行速度比调用常规函数稍快,但是代价是需要占用更多的内存.程序员请求将函数作为内联函数时,编译器不一定满足这种要求。例:inline square(int x){return x*x;}2.引用变量&符号来指示变量的地址,声明引用变量例如要将rodents作为rats的别名,有以下int rats;int &rodents原创 2021-02-19 16:32:02 · 80 阅读 · 1 评论 -
0-1背包问题 榨取kkksc03
0-1背包问题 榨取kkksc03输入格式第一行三个整数 n,M,Tn,M,T,表示一共有 nn(1 \le n \le 1001≤n≤100)个愿望, kkksc03 的手上还剩 MM(0 \le M \le 2000≤M≤200)元,他的暑假有 TT(0 \le T \le 2000≤T≤200)分钟时间。第 22~n+1n+1 行 m_{i}m**i , t_{i}t**i 表示第 ii 个愿望所需要的金钱和时间。输出格式一行,一个数,表示 kkksc03 最多可以实现愿望的个数。输入输出原创 2021-02-14 16:03:42 · 164 阅读 · 0 评论 -
【模板】线段树1
17.【模板】线段树1题目描述如题,已知一个数列,你需要进行下面两种操作:将某区间每一个数加上 k。求出某区间每一个数的和。输入格式第一行包含两个整数 n,m,分别表示该数列数字的个数和操作的总个数。第二行包含 n 个用空格分隔的整数,其中第 ii 个数字表示数列第 ii 项的初始值。接下来 mm 行每行包含 33 或 44 个整数,表示一个操作,具体如下:1 x y k:将区间 [x,y] 内每个数加上 k。2 x y:输出区间 [x,y] 内每个数的和。输出格式输出包含若原创 2021-02-11 19:53:01 · 143 阅读 · 0 评论