题解
帅小柏
2019年 “百家号杯”全国大学生新媒体知识竞赛 省赛特等奖
2020年“海信杯”第二届吉林省大学生人工智能创新大赛 省赛一等奖
2020年高教社杯全国大学生数学建模竞赛 三等奖
2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛) 金奖
两年参加ACM省赛经历
展开
-
整数集合划分(无脑贪心,很快啊!就AC了。) (使用三种语言)
题目描述给定一个包含 N 个正整数的集合,请你将它们划分为两个不相交的集合 A1 和 A2,其中 A1 包含 n1 个元素,A2 包含 n2个元素。用 S1表示集合 A1 内所有元素之和,S2 表示集合 A2 内所有元素之和。请你妥善划分,使得 |n1−n2|尽可能小,并在此基础上 |S1−S2|尽可能大。输入格式第一行包含整数 N。第二行包含 N个正整数。输出格式再一行中输出 |n1−n2|和 |S1−S2|,两数之间空格隔开。数据范围2≤N≤1052≤N≤10^52≤N≤105,保原创 2021-01-26 09:25:28 · 373 阅读 · 0 评论 -
LeetCode 2391. 收集垃圾的最少总时间
我们可以在统计垃圾数量的同时,记录每种垃圾车最后到达的房子。原创 2024-05-11 09:29:26 · 386 阅读 · 2 评论 -
LeetCode 2103. 环和杆
LeetCode 2103. 环和杆原创 2022-06-25 10:26:54 · 70 阅读 · 0 评论 -
LeetCode 938.二叉搜索树的范围和
给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。原题链接示例 1:输入:root = [10,5,15,3,7,null,18], low = 7, high = 15输出:32示例 2:输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10输出:23提示:树中节点数目在范围 [1, 2 * 104] 内1 <= Node.val <= 1051 <原创 2021-04-27 10:10:35 · 83 阅读 · 0 评论 -
LeetCode 1603. 设计停车系统
原题链接 :LeetCode 1603. 设计停车系统请你给一个停车场设计一个停车系统。停车场总共有三种不同大小的车位:大,中和小,每种尺寸分别有固定数目的车位。请你实现ParkingSystem 类:ParkingSystem(int big, int medium, int small) 初始化 ParkingSystem 类,三个参数分别对应每种停车位的数目。bool addCar(int carType)检查是否有carType对应的停车位。 carType 有三种类型:大,中,小,分别用原创 2021-03-19 20:45:27 · 77 阅读 · 0 评论 -
最长上升子序列(线性DP)
给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。输入格式第一行包含整数N。第二行包含N个整数,表示完整序列。输出格式输出一个整数,表示最大长度。数据范围1≤N≤10001≤N≤10001≤N≤1000,−109≤数列中的数≤109−109≤数列中的数≤109−109≤数列中的数≤109输入样例:73 1 2 1 8 5 6输出样例:4核心f[i] : 前i-1 个数里 ,有几个比 a[i]大。#include<iostream>#原创 2021-03-17 16:11:02 · 114 阅读 · 0 评论 -
【Java2 实用教程 (第5版) 】第三章,课后编程题答案。(初学者必备!!!!!)
题目目录(1) 求 1!+ 2!+……+10! 。(2)求 100以内的全部素数。(3)分别用do-while 和 for 计算 1+1/2!+1/3!+……的前20项和。(4)求 1000 之内的所有完数。(5)求8+88+888+……+前10项和。(6)输出满足1+2+3+……+n < 8888 的最大整数。(1) 求 1!+ 2!+……+10! 。package 帅小柏;public class 点波关注呦不迷路 { public static void main(Strin原创 2021-03-16 20:34:20 · 361 阅读 · 2 评论 -
LeetCode 1742. 盒子中小球的最大数量
你在一家生产小球的玩具厂工作,有 n 个小球,编号从 lowLimit 开始,到 highLimit 结束(包括 lowLimit 和 highLimit,即 n == highLimit - lowLimit + 1)。另有无限数量的盒子,编号从 1 到 infinity 。你的工作是将每个小球放入盒子中,其中盒子的编号应当等于小球编号上每位数字的和。例如,编号 321的小球应当放入编号3 + 2 + 1 = 6 的盒子,而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。给你两个整数原创 2021-02-11 10:43:19 · 251 阅读 · 0 评论 -
LeetCode 5672. 检查数组是否经排序和轮转得到
给你一个数组 nums 。nums 的源数组中,所有元素与 nums 相同,但按非递减顺序排列。如果 nums 能够由源数组轮转若干位置(包括 0 个位置)得到,则返回 true ;否则,返回 false 。源数组中可能存在 重复项 。注意:我们称数组 A 在轮转 x 个位置后得到长度相同的数组 B ,当它们满足 A[i] == B[(i+x) % A.length] ,其中 % 为取余运算。示例 1:输入:nums = [3,4,5,1,2]输出:true解释:[1,2,3,4,5] 为有原创 2021-02-07 12:21:56 · 218 阅读 · 0 评论 -
献给阿尔吉侬的花束(bfs)
阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达终点,就在终点放了一块阿尔吉侬最喜欢的奶酪。现在研究员们想知道,如果阿尔吉侬足够聪明,它最少需要多少时间就能吃到奶酪。迷宫用一个 R×C的字符矩阵来表示。字符 S 表示阿尔吉侬所在的位置,字符 E 表示奶酪所在的位置,字符 # 表示墙壁,字符 . 表示可以通行。阿尔吉侬在 1 个单位时间内可以从当前的位置走到它上下左右四个方向上的任意一个位置,但不能走出地图边界。输入格原创 2021-02-03 10:39:47 · 205 阅读 · 0 评论 -
楼兰图腾(树状数组)
在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不妨设坐标分别为(1,y1),(2,y2),…,(n,yn),其中y1~yn是1到n的一个排列。西部3原创 2021-01-30 10:29:27 · 233 阅读 · 0 评论 -
Trie字符串统计
维护一个字符串集合,支持两种操作: “I x”向集合中插入一个字符串x; “Q x”询问一个字符串在集合中出现了多少次。共有N个操作,输入的字符串总长度不超过 10510^5105,字符串仅包含小写英文字母。输入格式第一行包含整数N,表示操作数。接下来N行,每行包含一个操作指令,指令为”I x”或”Q x”中的一种。输出格式对于每个询问指令”Q x”,都要输出一个整数作为结果,表示x在集合中出现的次数。每个结果占一行。数据范围1≤N≤2∗1041≤N≤2∗10^41≤N原创 2021-01-29 16:31:48 · 82 阅读 · 0 评论 -
POJ 1182.食物链 (并查集)
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是”1 X Y”,表示X和Y是同类。第二种说法是”2 X Y”,表示X吃Y。此人对N个动物,用上述两种说法,一句接一句地说出K句话,这K句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句话就是假话,否则就是真话。1) 当前的话与前面的原创 2021-01-28 15:35:03 · 62 阅读 · 0 评论 -
滑动窗口(单调队列)
给定一个大小为 $ n≤10^6$的数组。有一个大小为k的滑动窗口,它从数组的最左边移动到最右边。您只能在窗口中看到k个数字。每次滑动窗口向右移动一个位置。以下是一个例子:该数组为[1 3 -1 -3 5 3 6 7],k为3。窗口位置最小值最大值[1 3 -1] -3 5 3 6 7-131 [3 -1 -3] 5 3 6 7-331 3 [-1 -3 5] 3 6 7-351 3 -1 [-3 5 3] 6 7-351 3 -1原创 2021-01-25 16:40:16 · 106 阅读 · 0 评论 -
HDU 4557.非诚勿扰
题目描述作为2013年699万应届毕业生中的一员,由于宏观经济的不景气,小明在毕业当天就华丽丽地失业了! 经历了千难万苦的求职过程,小明特别能理解毕业生的就业之难,所以,他现在准备创建一家专门针对IT人才的求职中介公司——非诚勿扰人力资源开发有限公司。 基于工作的需要,小明根据求职学生的简历描述为每人评定了一个综合能力值,能力值是一个小于等于20的正整数,值越高表示能力越强。当有公司试图招聘IT人员的时候(每次只招聘1名),需要提出一个综合能力的最低需求,若人才库中有符合要求的人才,则一定能成功原创 2021-01-24 09:35:46 · 92 阅读 · 0 评论 -
ZOJ 1201. Inversion
题目描述Let { A1,A2,…,An } be a permutation of the set{ 1,2,…, n}. If i < j and Ai > Aj then the pair (Ai,Aj) is called an “inversion” of the permutation. For example, the permutation {3, 1, 4, 2} has three inversions: (3,1), (3,2) and (4,2).The invers原创 2021-01-22 15:13:33 · 400 阅读 · 0 评论 -
棋盘挑战(DFS,剪枝)
题目描述给定一个 N×N 的棋盘,请你在上面放置 N个棋子,要求满足:每行每列都恰好有一个棋子每条对角线上都最多只能有一个棋子 1 2 3 4 5 6 -------------------------1 | | O | | | | | -------------------------2 | | | | O | | | -------------------------3 | | | | |原创 2021-01-22 10:40:22 · 117 阅读 · 0 评论 -
数组元素的目标和(双指针)
题目描述给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i] + B[j] = x的数对(i, j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。第二行包含n个整数,表示数组A。第三行包含m个整数,表示数组B。输出格式共一行,包含两个整数 i 和 j。数据范围数组长度不超过100000。同一数组内元素各不相同。1≤数组元素≤109输入样例:4 5 61 2 4 73 4 6 8 9原创 2021-01-21 16:24:11 · 178 阅读 · 1 评论 -
找硬币(哈希表)
题目描述伊娃喜欢从整个宇宙中帮小柏同学收集硬币。有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她是否可以找到两个硬币来支付。输入格式第一行包含两个整数 N和 M,分别表示硬币数量以及需要支付的金额。第二行包含 N个整数,表示每个硬币的面额。输出格式输出一行,包含两个整数 V1,V2,表示所选的两个硬币的面额,使得 V1≤V2 并且原创 2021-01-19 09:58:17 · 146 阅读 · 0 评论 -
HDU 1276 士兵队列训练问题
题目描述某小柏部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数…,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。Input本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。Output共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最原创 2021-01-16 20:13:25 · 319 阅读 · 0 评论 -
归并排序
模板void merge_sort(int a[],int l,int r){ if(l>=r) return ; int mid = l+r>>1; // 1.确定边界 merge_sort(a,l,mid); merge_sort(a,mid+1,r); // 2.递归两边 int k=0,i=l,j=mid+1;// i,j 为两段的左边界。 while(i&l原创 2021-01-14 17:41:29 · 87 阅读 · 0 评论 -
回文平方
题目描述回文数是指数字从前往后读和从后往前读都相同的数字。例如数字 12321就是典型的回文数字。现在给定你一个整数 B,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B进制表示是回文数字。输入格式一个整数 B。输出格式每行包含两个在 B进制下表示的数字。第一个表示满足平方值转化为 B进制后是回文数字那个数,第二个数表示第一个数的平方。所有满足条件的数字按从小到大顺序依次输出。数据范围2≤B≤20,对于大于 9 的数字,用 A 表示 1原创 2021-01-14 11:44:32 · 96 阅读 · 0 评论 -
快速排序
代码实现#include<bits/stdc++.h>using namespace std;const int N = 1e6+10;int n;int a[N];void quick_sort(int a[],int l,int r){ if(l>=r) return ; // 边界 int i=l-1,j=r+1,x=a[l+r>>1]; // 因为要用 do..while 所以指向边界两端的前一个 即 i=l-1,j=r+1 .原创 2021-01-14 11:41:27 · 55 阅读 · 0 评论 -
红与黑 ( Flood fill 算法 (针对网格题) )
题目描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。** 输入格式 **输入包括多个数据集合。每个数据集合的第一行是两个整数 W和 H,分别表示 x 方向和 y方向瓷砖的数量。在接下来的 H行中,每行包括 W个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:白色的瓷砖;3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上原创 2021-01-13 15:27:02 · 206 阅读 · 0 评论 -
冒泡排序 并去重
#include<bits/stdc++.h>using namespace std;int a[1000],b[1000]={-1}; void gudu_gudusort(int n){ int flags=1; for(;n>0&&flags==1;n--) { flags=0; for(int i=0;i<n;i++) { if(a[i]>a[i+1]) {原创 2020-11-26 14:23:22 · 324 阅读 · 0 评论 -
插入排序的代码实现(小柏)
插入排序插入排序 有些类似我们平时玩的扑克,对扑克的排序。排序部分的代码:void insert_baisort(int n){ int j; for(int i=2;i<=n;i++) { if(a[i]<a[i-1]) { a[0]=a[i]; a[i]=a[i-1]; for( j=i-2;j>0;j--) { if(a[j]>a[0]) { a[j+1]=a[j];//一直挪原创 2020-11-25 15:57:10 · 92 阅读 · 0 评论 -
A题:除2! (贪心算法)
链接:https://ac.nowcoder.com/acm/contest/8563/A来源:牛客网题目描述给一个数组,一共有 个数。你能进行最多 次操作。每次操作可以进行以下步骤:选择数组中的一个偶数 aia_iai,将其变成 ai/2a_i/2ai/2 。现在你进行不超过 次操作后,让数组中所有数之和尽可能小。请输出这个最小的和。输入描述:第一行输入两个正整数 和 ,用空格隔开第二行输入个正整数 aia_iai数据范围:1≤n≤100000,1≤k≤1091≤n≤10000原创 2020-11-15 13:55:46 · 871 阅读 · 1 评论