自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 模板类 undefined reference to.... 的一种可能

我自己写了一个模板类。然而在我在使用的时候却出现了以下报错。![在这里插入图片描述](https://img-blog.csdnimg.cn/e80067369ebe44758bfd456c1a5dc8be.png#pic_center)而之所以出现该报错是因为我将模板类的成员函数放在了独立的文件中。因为模板必须与特定的模板实例化请求一起使用。模板并不是函数,只是C++编译器的指令。无法单独编译成obj文件。所以我们需要将所有的模板信息放在一个头文件中。当然也有另外一种方法,就是使用的时候不仅包含

2021-10-26 22:53:05 716

原创 力扣第252场周赛题解

声明:因为是先在注释里面写了思路,要看思路的话看注释吧。就不搬出来了第一题、三除数链接:https://leetcode-cn.com/problems/three-divisors/思路:​ 直接暴力循环,查找正除数的个数就可以了代码实现:class Solution {public: bool isThree(int n) { int cur = 0 ; for(int i = 1 ; i <= n ; ++ i) cu

2021-08-01 19:53:23 220

原创 QT中添加Layout无效

QT中添加Layout没有效果原因:在MainWindow中直接添加Layout会无法生效,需要借助一个窗口来实现如下:解决办法:在MainWindow中添加一个Widget,然后在Widget上设置Layout

2020-12-24 17:04:57 1498 1

原创 UVA 11462打卡

算法竞赛入门经典训练指南打卡题目链接:UVA 11462思路

2020-08-18 10:30:11 113

原创 UVA 11078打卡

算法竞赛入门经典训练指南打卡题目链接:UVA 11078思路因为i是肯定再j前面的,所以我们只需要对输入的数进行处理 首先上第一个数据作为i,之后每输入一个数据 先假设其为j,查看差值然后将最大的差值存入ans中 再更新i,让i为最大值即可具体细节见代码注释代码如下:#include <iostream>using namespace std ;const int INF = 10e6 ;int main(){ int i , t , n , x ;

2020-08-18 10:29:47 88

原创 UVALive 3177打卡

算法竞赛入门经典训练指南打卡题目链接:UVALive 3177思路首先,毋庸置疑,肯定相邻的两个人是要分开拿礼物的,即不能拿到同一种,那么1.对于偶数个人来说,只要第一个人和最后一个人完全可以按照奇偶错开比如第一个人拿1 2 ,第二个人拿 3 4 ,第三个人又可以拿 1 , 2 所以我们只需要找到相邻的两个人所要礼物加起来最多的礼物数即可 定义i遍历数组 ans = max(r[i] + r[i + 1] , ans)2.对于奇数个人来说,如果只是奇偶错开,则第一个人和最后一个人

2020-08-17 14:04:15 91

原创 UVALive 3902打卡

算法竞赛入门经典训练指南打卡题目链接:UVALive 3902思路首先,我们可以将其转化为树状可以看出我们只需要查看它的深度最大的节点,选择它的k级祖先,然后每放置一台服务器,进行dfs,将可以覆盖的节点全部覆盖掉然后循环查找寻找深度最大的节点,放置服务器,覆盖这个操作即可具体细节看代码注释代码如下:#include <iostream>#include <vector>#include <cstring>using namespace std

2020-08-17 13:21:54 81

原创 力扣第202场周赛

5185. 存在连续三个奇数的数组思路: 记录奇数的个数,遇见偶数则置0,如果达到3了就返回true代码如下:class Solution {public: bool threeConsecutiveOdds(vector<int>& arr) { int num = 0 ; for(auto i : arr){ if(i % 2 == 1) num ++ ; //遇见奇数,nu

2020-08-16 16:10:49 121 1

原创 UVA 11520打卡

算法竞赛入门经典训练指南打卡题目链接:UVA 11520思路使用暴力枚举的方法查看即可,没有什么难的代码如下:#include <iostream>#define ton(i , n) for(int i = 0 ; i < n ; ++ i)using namespace std ;char letter[15][15] ;int main(){ int t , k = 1 ; cin >> t ; while (t --){

2020-08-14 13:40:58 89

原创 UVALive 3635打卡

算法竞赛入门经典训练指南打卡题目链接:UVALive 3635思路就假定每个人得到的派的面积为x,然后进行判断如果每个派分出来的派加起来大于等于f + 1个,则说明此时可以使用二分查找找到最大的x即可没有具体细节,逻辑简单代码如下:#include <iostream>#include <cmath>#define max_n 10000 + 5#define ton(i , n) for(int i = 0 ; i < n ; ++ i)using

2020-08-14 13:07:16 112

原创 UVALive 3971打卡

算法竞赛入门经典训练指南打卡题目链接:UVALive 3971思路使用二分查找的方法,假设答案为q,每个类型配件中找到价格最小且品质因子大于等于q的配件,查看加起来的价格是否不超过预算即可思路简单,具体细节看代码注释代码如下:#include <iostream>#include <vector>#include <map>#define max_n 1005using namespace std ;struct Component{ i

2020-08-13 13:08:24 97

原创 UVA 10795打卡

算法竞赛入门经典训练指南打卡题目链接:UVa 10795思路对于汉诺塔问题,首先需要做的是将大的盘子移动到目标位置所以我们应该首先找到大的盘子进行判断,如果大的盘子在目标位置上,则不动,如果不在则要先移动大的盘子因此首先找到最大的不在目标位置的盘子然后如书上提供的思路算出初始局面移动到参考局面和目标局面移动到参考局面的步数之和再加1即为最终结果具体的细节看代码注释代码如下:#include <iostream>#define LL long long#define ton

2020-08-13 13:02:39 90

原创 UVa 11384打卡

算法竞赛入门经典训练指南打卡题目链接:UVa 11384思路对于1,,2,3,4,5,6.....n,最终的结果也就是要把所有的数变为0,即所有的数都相同所以我们只需要每次操作让不同的数变少即可,一开始有n个数(不算0),最终要变为只有1个数因为是递增,所以每次操作最多可以使一半的数变成相同的数所以只需要判断什么时候n==1即可,此时除了0之外,只剩下一个数将其变为0即可注意:n指有多少个还剩多少个不同的数字,但是不包含0主要是今天两道打卡题难度不高,没事做了,所以开始绕圈圈代码如下:

2020-08-11 12:44:55 134

原创 UVa 11210打卡

算法竞赛入门经典训练指南打卡题目链接:UVa 11210思路简单的暴力枚举题,我们可以分别尝试添加34张牌中的一张牌,凑成14张牌,查看是否可以和牌 如果可以和牌,则输出这张牌,如果所有牌加上去都不可以和牌则输出Not ready判断和牌的方式:枚举+深搜+回溯 首先枚举将,然后深搜其他的牌是否满足可以组成四组(刻子和顺子),如果可以则说明可以和牌具体细节看到代码注释代码如下:#include <iostream>#include <vector>#defi

2020-08-11 12:22:59 90

原创 UVALive 3401打卡

算法竞赛入门经典训练指南打卡题目链接:UVALive 3401思路题目的要求是让所有的立方体完全相同,其实就是让n个正方体变成一样的 对于一个正方体,可以让任意一个面作为前面,然后以一个和它相邻的面作为顶面 所以对于一个正方体,按照题目的编号方式,可以有24种情况(如果实在无法理解,可以用一个魔方,选一个颜色对着你,再选一个颜色朝着上方,你会发现有24种放法)假设有两个正方体,一个正方体我们作为参照,另一个正方体用一种放法,两个立方体只有一个面的颜色不同,其他面颜色一致,则需要涂的面就只有一

2020-08-10 14:59:51 64

原创 UVA 11464打卡

算法竞赛入门经典训练指南打卡题目链接:UVA 11464思路如果我们要写出一个上述的偶数矩阵,肯定是先确定第一排,然后再根据第一排确定第二排,通过第一排和第二排确定第三排。也就是说我们必须要先确定第一排的数,再推导下面的数。而每个数都可以是0或者1,所以第一排我们可以使用2进制来确定第一排的数。这样可以使第一排的每种可能都出现。然后我们再通过第一排确定第二排,一直到写出整个偶数矩阵为止。此时判断该矩阵与我们输入的矩阵有多少个地方是变化了的即可具体的细节可以看代码注释代码如下:#include

2020-08-10 14:15:47 88

原创 UVALive 2995打卡

算法竞赛入门经典训练指南打卡题目链接:UVALive 2995思路主要有以下两点: 1.如果在这个某个视图下看到的是".",那么说明这个位置往里的n的为止都没有方块 2.如果某一个地方没有方块,那么从不同视图看到的这个位置的颜色应该不同所以,只需要将每个方块的颜色存储下来看是否有冲突,有冲突的地方按照第二点改为空即可,最后只需要查看不为空的有多少个代码如下:#include <iostream>#define ton(i , n) for(int i = 1 ; i &lt

2020-08-07 18:53:01 137

原创 UVa 10881打卡

算法竞赛入门经典训练指南打卡题目链接:UVa 10881思路首先有以下几点: 1.由于是在直线上运动,所以蚂蚁相撞后各自沿对方之前的路线走,即可以看出对穿而过(这个大家可能都理解) 2.不管两只蚂蚁往一个方向走还是相向而行,从左往右数第1只蚂蚁永远是第一只蚂蚁,同理可得对于所有蚂蚁,从左往右数第i只永远是第i只综上:我们可以忽略碰撞,直接计算每只蚂蚁t秒后的位置,然后按照最终位置从左往右数,第i只蚂蚁所在的位置即是初始状态第i只蚂蚁的最终位置 然后我们所需要做的就是记录下输入的顺序,最后按照顺

2020-08-07 18:13:16 129

原创 UVALive 3708打卡

算法入门经典训练指南打卡题目链接:UVALive 2708思路我们可以将园看成一条直线,则第一个墓碑作为原点不动,其他的墓碑将该直线均分即可只需要查看原有的第2、3.....n个雕塑会移动到第几个,再算出他们一定的距离即可而对于第i 个雕塑,添加前的位置为i / n * 1000 添加后则是第i / n * (n + m)个雕塑,而该值不可以为小数,所以只能取整,四舍五入,距离哪个点近则移到哪个点。代码如下:#include <iostream>#include <m

2020-08-06 18:17:57 103

原创 UVa 11300打卡

算法入门经典训练指南打卡题目链接:UVa 11300思路举个栗子:设现在有四个人,第i人给上一个人的金币和收到上一个人的金币的和为xi,如图:由上图可知:对于A1:M = A1 - x1 + x2 --> x2 - x1 = M - A1 = -C1 --> x2 = x1 - C1对于A2:M = A2 - x2 + x3 --> x3 - x2 = M - A2 = -C2 --> x3 = x1 - C2 - C1对于A3:M = A3 - x3 + x4 --

2020-08-06 12:47:42 86

原创 UVa 11729打卡

算法入门经典训练指南打卡题目链接:UVa 11729思路如图:由图可知:总时间的长短跟重叠部分有关。而重叠部分则是前一次交待任务的执行时间因此,只需要按照执行时间从长到短交待即可代码如下:#include <iostream>#include <vector>#include <algorithm>using namespace std ;struct Jobs{ int b ; int j ;};bool cmp(Jo

2020-08-05 18:28:20 110

原创 UVa 11292 打卡

算法入门经典训练指南打卡题目链接:UVa 11292思路:求需要花费的金币最少,即骑士的能力值之和最小,而每个骑士又必须且只能杀掉一个头。所以我们只需要将骑士的能力值和恶龙的头的直径按照从小到大排序如果该骑士可以砍掉当前的头,则记下,如果不可以则继续查找下一个骑士最后返回结果即可代码如下:#include <iostream>#include <vector>#include <algorithm>using namespace std ;i

2020-08-05 17:42:35 109

原创 2019年第十届蓝桥杯 C++省赛B组 第六题: 特别数的和

特别数的和(时间限制: 1.0s 内存限制: 256.0MB 本题总分:15 分)【问题描述】小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0) ,在 1 到40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。请问,在 1 到 n 中,所有这样的数的和是多少?【输入格式】输入一行包含两个整数 n。【输出格式】输出一行,包含一个整数,表示满足条件的数的和。【样例输入】40【样例输出】574【评测用例规模与约定】对于 2

2020-06-12 16:01:18 1453

原创 2019年第十届蓝桥杯 C++省赛B组 第八题:等差数列

等差数列 (时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分)【问题描述】数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?【输入格式】输入的第一行包含一个整数 N。第二行包含 N 个整数 A 1 ,A 2 ,··· ,A N 。(注意 A 1 ∼ A N 并不一定是按等差数列中的顺序给出)【输出格式】输出一个整数表示答案。【样例输入】5

2020-06-11 20:22:49 629

原创 2019年第十届蓝桥杯 C++省赛B组 第四题: 数的分解

2019年第十届蓝桥杯 C++省赛B组 第四题: 数的分解D: 数的分解(本题总分:10 分)【问题描述】把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和1001+1000+18 被视为同一种。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。解题这

2020-06-10 11:31:28 431

空空如也

空空如也

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

TA关注的人

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