自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 下一个更大元素

题目描述:给定一个数组,求数组中每个元素在它后面第一个比它大的元素是多少。 如[2,1,2,4,3],返回数组 [4,2,4,-1,-1]。解释:第一个 2 后面比 2 大的数是 4; 1 后面比 1 大的数是 2;第二个 2 后面比 2 大的数是 4; 4 后面没有比 4 大的数,填 -1;3 后面没有比 3 大的数,填 -1。知识:单调栈。vector<int> nextGreaterElement(vector<int>& ...

2021-10-26 22:09:32 119

原创 求众数||

题目描述:给定一个大小为n的整数数组,找出其中所有出现超过⌊ n/3 ⌋次的元素。尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。class Solution {public: vector<int> majorityElement(vector<int>& nums) { vector<int>ans; map<int,int>cnt; for(int ...

2021-10-22 21:37:54 302

原创 2021-10-15

解题思路:描述前一项字符串s,先获取它的长度,然后从它的第一项即s[0]开始并设置一个用于记录数量的参数k,开始k为0;如果是s[1]与s[0]不同,则有1-k个数,然后加上这个数即s[0],k也重新变成了1;再依次比较,直到s[i+1]与s[i]不同,这时有i+1-k个数,这个数即为s[i],直到s[i+1]=0,循环终止。力扣提交代码:class Solution {public: string countAndSay(int n) { string s="1...

2021-10-17 20:07:28 108

原创 Acwing 3957:子序列

题目大意:我们称一个序列是有序的,如果该序列是非严格单调递增序列或非严格单调递减序列。现在,给定一个nn个整数的序列a1,a2,…,ana1,a2,…,an。请你找到该序列的最短非有序子序列。注意,子序列不一定连续。输出格式如果不存在非有序子序列,则输出一行00。否则,首先在第一行输出一个整数,表示最短非有序子序列的长度,随后在第二行按顺序输出该子序列的各元素下标。如果方案不唯一,输出任意合理方案均可。解题思路:如果将该序列表示在坐标轴上,序列下标为x,值为y,再...

2021-09-17 14:31:09 100

原创 HDOJ1548:神奇的楼梯

题目大意:解题思路:运用队列先进先出原理,先把a楼的层数与按的次数零入队列,之后判断a楼向上满不满足小于等于n,如果满足且向上的楼层没有被访问则进队列,再判断a楼向下满不满足大于等于1,如果满足且向下的楼层没有被访问则进队列,之后出队列第一个,如果满足层数等于B,则跳出循环,如果不满足,再依次判断入队列,如果队列空了,但仍然没有找到等于b的楼层,则表示到不了,输出-1;#include<bits/stdc++.h>using namespace std;int vis[1001].

2021-09-16 22:02:34 91

原创 Acwing

3955:统一大小写解题思路:先做一次遍历,计算出一个单词中大写字母与小写字母的个数,之后再做一次遍历,如果大写字母个数大于小写字母个数,就把每个小写字母-32变成大写字母,如果大写字母个数小于等于小写字母个数,就把每个大写字母+32变成小写字母。代码#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { i

2021-09-15 00:17:44 96

原创 HDOJ1874:畅通工程续

题目大意:某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。解题思路:从起点开始,找到距离起点最近的点,如果距离起点最近的点就是终点,就可以直接输出了,如果距离起点最近的点不是终点,则以最近的点为新的起点,之后继续搜寻,直至新的起点为终点,搜寻结束,输出最短距离,如果所有的点都访问过了,但新

2021-09-14 21:14:05 438

原创 HDOJ2191:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

题目大意:解题思路:把它改成01背包去做;代码:#include<bits/stdc++.h>using namespace std;int dp[2001][2001];int v[2001],w[2001];int main(){ int t; cin>>t; while(t--) { memset(dp,0,sizeof(dp)); int n,m; int p,h,c; int cnt=1; cin>>n&gt.

2021-09-09 19:49:37 79

原创 HDOJ1421:搬寝室

题目大意:搬寝室是很累的,xhd深有体会.时间追述2006年7月9号,那天xhd迫于无奈要从27号楼搬到3号楼,因为10号要封楼了.看着寝室里的n件物品,xhd开始发呆,因为n是一个小于2000的整数,实在是太多了,于是xhd决定随便搬2*k件过去就行了.但还是会很累,因为2*k也不小是一个不大于n的整数.幸运的是xhd根据多年的搬东西的经验发现每搬一次的疲劳度是和左右手的物品的重量差的平方成正比(这里补充一句,xhd每次搬两件东西,左手一件右手一件).例如xhd左手拿重量为3的物品,右手拿重量为6的物品,

2021-09-06 20:55:20 364

原创 HDOJ:2602

题目大意:许多年前,在泰迪的家乡,有一个人被称为"骨收藏家"。这个人喜欢收集各种骨头,如狗的,牛的,他也去了坟墓。骨收藏家有一个大包,有一卷V,在他的收集之旅有很多骨头,显然,不同的骨头有不同的价值和不同的体积,现在考虑到每块骨头的价值,他的行程,你能算出骨收藏家可以得到的总价值的最大值吗?解题思路: 0 1 2 3 4 5 6 7 8 9 10 1 5 0 0 0 0 0 1 1

2021-09-05 21:51:20 203

原创 HDOJ 1257 最少拦截系统

题目大意:某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以俺就到这里来求救了,请帮助计算一下最少需要多少套拦截系统.解题思路:题目即求出最长子序列,例如下面几个数,3比12小,往后走一位,24比12大,所以到24时

2021-08-31 21:17:45 77

原创 HDOJ2084:数塔

题目大意:在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?解题思路:以上图为例,一共五行,从5-1=4行从头开始看,先看2,由于19比7大,所以它最多加上19变成21,再看18,它最多变成28,再看9,最多变成19,再看5,最多变成21;再从第三行看,此时第四行已经变成了21,28,19,21;再根据上述方法第三行变成了38,34,29;依次类推到第二行的两个数字,最大值变为顶峰的

2021-08-30 21:38:24 304

原创 HDOJ2501:Tiling_easy version

题目大意:有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。解题思路:根据最后一列方格,可以是一个1x2的骨牌,此时有f(n-1)种方法,可以是两个横着的,此时有f(n-2)种方法,也可以是一个2x2的骨牌,此时有f(n-2)种方法。代码:#include<iostream>#include<algorithm>using namespace std;int main(){

2021-08-29 21:22:29 126

原创 HDOJ2050:折线分割平面

题目大意:我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。解题思路:两个折线最多有四个焦点,那么会产生4+1个新的部分,三个折线最多有8个焦点,会产生8+1个新的部分,因此n个折线,最多有4*(n-1)个焦点,会产生4*(n-1)+1个新的部分,依次类推。#include<iostream>#include<algorithm>u

2021-08-29 17:25:56 117

原创 HDOJ2046:骨牌堆方格

题目大意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种,如下图:解题思路:斐波拉契数列。每次看方格中的最后一列方格,它要么是由一个骨牌竖着放的,要么就是由两个骨牌横着放的,如果是前一种,则是f(n-1),如果是后一种,就是f(n-2);代码:#include<iostream>#include<algorithm>using namespace std;int ma

2021-08-29 16:41:18 131

原创 HDOJ2041:超级楼梯

题目大意:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?解题思路:该题为斐波拉契数列,若走到第n阶阶梯,可以是第n-1阶阶梯上一阶或者第n-2阶阶梯上两阶。代码:#include<iostream>#include<algorithm>using namespace std;int main(){ int a[41]; a[1]=0; a[2]=1; a[3]=2; for(int i=4;i<=41

2021-08-29 16:18:14 117

原创 HDOJ 1879继续畅通工程

题目大意:省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 1< N < 100 );随后的 N(N-1)/2 行对应村庄间道路的成本及修建状态,每行给4个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本,以

2021-08-29 15:53:37 89

原创 HDOJ:1863畅通工程

题目大意:省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( < 100 );随后的 N行对应村庄间道路的成本,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间道路的成本(也是正整数)。为简单起见,村庄从1到M编号。当N为0时

2021-08-29 11:59:12 126

原创 HDOJ 1233:还是畅通工程

题目大意:某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。解题思路:求最小公路总长度,先将已给的道路根据距离进行从小到大排序,再从最小的公路总长度开始,判断该路连接的两条是否已经连接上,即判断这两条路是否独立,如果是,连接这条路,将这条路的距离加入总长度中,如果不是,继续寻找下一条长度最短的路,直到连接的路的数目等于

2021-08-29 11:55:04 122

原创 HDOJ 1232

题目大意:某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?解题思路:并查集;代码:#include<iostream>#include<algorithm>using namespace std;int a[1000];int find(int x){ int y=x; whil

2021-08-28 10:41:34 95

原创 HDOJ 2454 Degree Sequence of Graph G

题目大意:给出一些顶点的度,判断这些顶点是否能构成图。解题思路:先将这些顶点的度按照从大到小排序,先从最大的开始,如果最大的度为x,那么可以假设之后的x个数表示的顶点都与最大的度的顶点相连,所以去掉最大的度的顶点,其后x个顶点的度都应该减一,例如假设给定4个顶点,他们的度依次为2,1,1,1。去掉2,其后 的两个数都减1,变成了0,0,1;再从大到小排序,1,0,0,重复之前的操作,变成-1,0;过程中一旦出现负数,则表示这些点不能构成图。代码:#include<iostream>

2021-08-28 09:58:54 115

原创 HDOJ 2037 今年暑假不AC

题目大意:世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看一些其它的节目,比如新闻联播(永远不要忘记关心国家大事)、非常6+7、超级女生,以及王小丫的《开心辞典》等等,假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)。解题思路:这属于贪心算法的时间调度问题,应该比较每个节目的结束时间,根据结束时间进行排序,再考虑时间重复的问题,求出最后的解。代码:

2021-08-26 17:11:04 59

原创 HDOJ 1050 :Moving tables

题目大意著名的ACM(高级计算机制造商)公司租用了一栋建筑的地板,其形状如下。楼沿走廊的北侧和南侧各有200间客房。最近,公司制定了一项改革计划。改革包括在房间之间移动很多桌子。因为走廊很窄,所有的桌子都很大,只有一张桌子能穿过走廊。需要一些计划来提高移动效率。经理想出了以下计划:将桌子从房间移到另一个房间可以在 10 分钟内完成。将桌子从 I 房间移到 j 房间时,使用 I 房间前面和 j 房间前面之间的走廊部分。因此,每10分钟,在两个房间之间移动几个不共享走廊的同一部分将同时进行。为了清楚说明,经

2021-08-26 17:00:06 179

原创 HDOJ 1009:FatMouse‘ Trade

题目大意:‎胖老鼠准备了几磅的猫粮,准备和守卫仓库的猫交易,里面装着他最喜欢的食物,爪哇豆。‎‎仓库有 N 间。i-th房间包含J[i]磅的爪哇豆,需要F[i]磅的猫粮。FatMouse不必用房间里所有的爪哇豆来换取,相反,如果他付给F[i]1%的猫粮,他可能会得到J[i]1%磅的爪哇豆。这里有一个真实的数字。现在,他正在给你分配这个作业:告诉他他可以得到的最大数量的爪哇豆。解题思路:题目要求换取最多数目的豆子,先用豆子的数量除以猫粮的数目,结果为一磅猫粮所能换取的豆子数目,豆子越多,性价比最高,之后

2021-08-26 16:49:21 208

原创 2021-08-25现在,鉴于方程 8*x^4 + 7*x^3 +2*x^2 + 3*x + 6 = Y,您能否在 0 和 100 之间找到其解决方案;‎

HDOJ 题号 (2199)题目大意:鉴于方程8*x^4 + 7*x^3 +2*x^2 + 3*x + 6 = Y,在 0 和 100 之间找到其解决方案;‎解题思路:题目中的方程是单调递增的,符合二分法的条件;当x=0时为最小值,当x=100时为最大值,如果Y在最小值和最大值之间,说明有解,否则无解,有解时根据判断Y与中间值的比较,依次缩小范围,最早求出解。代码:#include<iostream>#include<algorithm>#include<

2021-08-25 20:34:03 821

原创 求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”

HDOJ 题号 (2035)题目大意:求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”解题思路:题目要求只要求最后三位,如果直接将结果算出来之后再%1000是不行的,因为这个结果可能会非常非常大,所以可以每次求出A*A的最后三位,之后再乘以A。代码实现:#include<iostream>#include<algorithm>using namespace std;int main(){ int fun(int a,int b); i

2021-08-25 14:55:01 1303

原创 2021-08-25求两个数的最小公倍数

HDOJ 题号(1008)题目大意:求两个数的最小公倍数。解题思路:求两个数的最小公倍数,最简单的情况是两个数中的较大的数为最小公倍数,最坏的情况是两数相乘的结果为最小公倍数,求解时,可以拿一个从1开始的整数依次乘大的那个数,直到那个整数等于小的数,(这是最坏的结果)如果过程中积可以整除小的那个数,那么这个结果便为所求。代码实现#include<iostream>#include<algorithm>using namespace std;int main()

2021-08-25 14:43:49 92

空空如也

空空如也

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

TA关注的人

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