自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 完全背包问题(师从yxc,闫氏Dp)

【题目描述】有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。【输入格式】第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。【输出格式】输出一个整数,表示最大价值。【分析过程】与普通背包问题不同的是,此题中一个物品可以拿多次,因此如果采用

2021-05-27 20:43:02 207

原创 小鳄鱼剪绳子(二分模板)

【题目描述】有 N 根绳子,第 i 根绳子长度为 Li,现在需要 M 根等长的绳子,你可以对 N 根绳子进行任意裁剪(不能拼接),请你帮忙计算出这 M 根绳子最长的长度是多少。【输入格式】第一行包含 2 个正整数 N、M,表示原始绳子的数量和需求绳子的数量。第二行包含 N 个整数,其中第 i 个整数 Li 表示第 i 根绳子的长度。【输出格式】输出一个数字,表示裁剪后最长的长度,保留两位小数。【题目分析】由于此题会设计到小数,因此左右2端点用double类型,循坏条件也从l < r

2021-05-11 18:32:40 114

原创 最长上升子序列(DP解法)

【题目描述】给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。【输入格式】第一行包含整数 N。第二行包含 N 个整数,表示完整序列。【输出格式】输出一个整数,表示最大长度。【解题思想】求最长子序列的长度,可以将所有以a[i]为结尾的子序列的长度求出来用 f[i] 保存序列中最后一个元素为a[i],那么倒数第二个元素a[j] 就需要小于a[i]而此时以倒数第二个元素为结尾的子序列长度为f[j]如果上述a[j] < a[i] 那么将f[i] 更新为f[i] 与

2021-05-07 21:12:16 322

原创 蚂蚁感冒

【题目描述】长 100 厘米的细长直杆子上有 n 只蚂蚁。它们的头有的朝左,有的朝右。每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒。当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。这些蚂蚁中,有 1 只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。【输入格式】第一行输入一个整数 n, 表示蚂蚁的总数。接着的一行是 n 个用空格分开的整数 Xi, Xi 的绝对值表示蚂蚁离开杆子左边端点的距离。正值表示头朝右

2021-05-07 16:26:51 108

原创 激光炸弹(经典矩阵前缀和)

【题目描述】地图上有 N 个目标,用整数 Xi,Yi 表示目标在地图上的位置,每个目标都有一个价值 Wi。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和 x,y 轴平行。求一颗炸弹最多能炸掉地图上总价值为多少的目标。【输入格式】第一行输入正整数 N 和 R,分别代表地图上的目标数目和正方形的边长,数据用空格隔开。接下来 N 行,每行输入一组数据

2021-04-26 21:02:59 217

原创 机器人跳跃问题(二分)

【题目描述】机器人正在玩一个古老的基于 DOS 的游戏。游戏中有 N+1 座建筑——从 0 到 N 编号,从左到右排列。编号为 0 的建筑高度为 0 个单位,编号为 i 的建筑高度为 H(i) 个单位。起初,机器人在编号为 0 的建筑处。每一步,它跳到下一个(右边)建筑。假设机器人在第 k 个建筑,且它现在的能量值是 E,下一步它将跳到第 k+1 个建筑。如果 H(k+1)>E,那么机器人就失去 H(k+1)−E 的能量值,否则它将得到 E−H(k+1) 的能量值。游戏目标是到达第 N

2021-04-21 19:55:34 84

原创 子矩阵的和(前缀和模板)

【题目描述】输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。【输入格式】第一行包含三个整数 n,m,q。接下来 n 行,每行包含 m 个整数,表示整数矩阵。接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。输出格式共 q 行,每行输出一个询问的结果。【数据范围】1≤n,m≤1000,1≤q≤200000,1≤x1≤x2≤n,1≤y1

2021-04-21 19:28:42 113

原创 数据范围

【题目描述】给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。【输入格式】第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。【输出格式】共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返

2021-04-17 20:58:06 108

原创 飞行员兄弟(函数分块)

【题目描述】“飞行员兄弟”这个游戏,需要玩家顺利的打开一个拥有 16 个把手的冰箱。已知每个把手可以处于以下两种状态之一:打开或关闭。只有当所有把手都打开时,冰箱才会打开。把手可以表示为一个 4×4 的矩阵,您可以改变任何一个位置 [i,j] 上把手的状态。但是,这也会使得第 i 行和第 j 列上的所有把手的状态也随着改变。请你求出打开冰箱所需的切换把手的次数最小值是多少。【输入格式】输入一共包含四行,每行包含四个把手的初始状态。符号 + 表示把手处于闭合状态,而符号 - 表示把手处于打开

2021-04-16 08:58:30 105

原创 带分数(双重dfs配上判断的清晰分层)

【题目描述】100 可以表示为带分数的形式:100=3+69258714还可以表示为:100=82+3546197注意特征:带分数中,数字 1∼9 分别出现且只出现一次(不包含 0)。类似这样的带分数,100 有 11 种表示法。【输入格式】一个正整数【思想描述】题目需要我们做到n = a + b/c 所有的可能数量但很明显计算机的除法是整除,因此我们做个变换:n*c = a * c + b对a和c做全排列,依靠公式计算出b最后进行判断,位数1~9是否都用过并只用过一次【代码描述

2021-04-13 01:28:51 79

原创 费解的开关

【题目描述】你玩过“拉灯”游戏吗?25 盏灯排成一个 5×5 的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字 1 表示一盏开着的灯,用数字 0 表示关着的灯。下面这种状态:1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将

2021-04-12 00:45:02 70

原创 全排列,dfs

【题目描述】求出1~n的全排列,每个数字只能用1次【输入格式】给出数字n【输出格式】将全排序输出并且每一次排序需要换行【dfs思想】:我们可以类比为有n个盒子,每个盒子只可以放入一个数字,每一个小盒子都可能会放入不同的数字,这需要一一去尝试,而这可以用一个for循坏解决for(int i = 1; i <= n; i++) a[step] = i; //此处的step意为盒子的序号...

2021-03-26 20:02:10 58

原创 【深度搜索】小猫爬山

【题目描述】翰翰和达达饲养了 N 只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为 W,而 N 只小猫的重量分别是 C1、C2……CN。当然,每辆缆车上的小猫的重量之和不能超过 W。每租用一辆缆车,翰翰和达达就要付 1 美元,所以他们想知道,最少需要付多少美元才能把这 N 只小猫都运送下山?【输入格式】第 1 行:包含两个用空格隔开的整数,N 和 W。

2021-03-26 19:35:30 280 1

原创 快速的不是很幂

【题目描述】求 a 的 b 次方对 p 取模的值。【输入格式】三个整数 a,b,p ,在同一行用空格隔开。【输出格式】输出一个整数,表示a^b mod p的值。题目分析:如果暴力枚举的话数据范围过大会导致计算时间过长,优化如下:将b以二进制形式表示例如:求3 ^ 7 ,我们可以将7的二进制形式写出来 也就是1113 ^ 1 = 33 ^ 2 = 93 ^ 4 = 813 ^ 7 = 3 ^ 1 * 3 ^ 2 * 3 ^ 4也就是利用前一个的平方来计算,指数速度将会

2021-03-08 23:33:34 51

原创 回文平方,我遇见了我

【题目描述】回文数是指数字从前往后读和从后往前读都相同的数字。例如数字 12321 就是典型的回文数字。现在给定你一个整数 B,请你判断 1∼300 之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B 进制表示是回文数字。【输入格式】一个整数B【输出格式】每行包含两个在 B 进制下表示的数字。第一个表示满足平方值转化为 B 进制后是回文数字那个数,第二个数表示第一个数的平方。所有满足条件的数字按从小到大顺序依次输出。【数据范围】2≤B≤20,对于大于 9 的数字,用 A 表

2021-03-01 20:47:21 59

原创 学习总结与体会

【Dijkstra】理解部分:此算法的目的,就是找出任意两点之间的最短路径,假定我们选择A点为定点,将A点的状态设置为已遍历,此时并不知道A点与其他点的最短路径是多少,因此我们将A点与各点的最短路径设置为无穷大,之后从未经遍历的点&&目前正处在的点(也就是A点)的邻点(若有多个邻点则选择距离较近的点) 开始遍历,每遍历一个点就记录下A点与此点的距离,若小于目前的最短路径则更新最短路径并将此点的状态设置为已遍历,这样就可以遍历所有的点并记录任意两点之间的最短路径感想:Dijkstra是一

2021-02-28 17:01:03 68

原创 小学数学

【题目描述】今天的电脑课,老师给大家普及了一些计算机知识。硬盘制造商有不同的容量衡量标准。通常制造商认为1“kilo”等于1000,但操作系统会认为是1024。因此,当你购买了一个100MB的硬盘,电脑却只显示大约有95MB,这缺失了大约5MB。对于硬盘的大小,有多种单位描述。它们分别是byte, kilobyte, megabyte, gigabyte, terabyte, petabyte, exabyte, zetabyte 和yottabyte。每一个都相当于前一个的 1“kilo”倍

2021-02-06 21:54:54 104

原创 进制转化

【题目描述】众所周知,字符’a’的ASCII码是97现在,求一组给定的数字中有多少个字母a请注意,这里的数字是由计算机中的32位整数给出的也就是说,1位代表4个字符(一个字符由8位二进制数字表示)【输入格式】多组输入,每组输入第一行是n,表示有n个整数,接下来给出n个数a(i)。(n<=100,1<=a(i)<2^32)【输出格式】输出有多少个字符a题目分析思路:以2的8次方(256)为进制,判断各个数位上的数字是否为97,其实根本思想等同于求十进制的各个数位上的数

2021-02-06 21:17:51 132 2

原创 递归实现指数型枚举

【题目描述】从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案【输入格式】输入一个整数n【输出格式】每行输出一种方案同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开对于没有选任何数的方案,输出空行本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意【数据范围】1 ≤ n ≤ 15【题目分析】由题意可知,输出需要是升序排列,从1~n呢每一个数都有2种可能,可以要它也可以不要它,所以总共的方案数量就是2的n次方,时间复杂度是o(2的n次方*n)以2个数

2021-02-01 22:33:07 249 1

原创 蛇形矩阵,蛇皮走位~

【题目描述】输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。【输入格式】输入共一行,包含两个整数n和m。【输出格式】输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。【数据范围】1≤n,m≤100【题目分析】由题意可知,该题可以建立一个二维数组,将各个数字依次按照走位填充进去,而这个方向则是一个循环,因此我们可以用x,y坐标来表示位置,用dx,dy来表示它们的变化值。很明显当肥蛇转弯时有两种情况:<1>x,y坐标越界

2021-01-30 21:29:54 1721 6

空空如也

空空如也

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

TA关注的人

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