自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷单调栈板子题

文章目录题目思路AC代码题目P5788 【模板】单调栈思路用数组当作单调栈进行模拟,操作简单,速度快。AC代码#include <bits/stdc++.h>using namespace std;const int N = 3e6 + 10;int stk[N], tt, a[N];int main() { int n; cin.tie(0);//数据量过大加优化才能过 ios::sync_with_stdio(false); cin >> n; f

2022-01-23 16:43:27 435

原创 Leetcode 219 存在重复元素 II 2022.01.19每日一题

文章目录题目思路AC代码题目存在重复元素思路滑动窗口,每次滑入的数会有两种改变维护区间的情况,第一种是区间内存在相同的数,进行比较操作;第二种是不存在相同的数,即原状态不变。可以通过集合以及哈希表来处理维护操作。AC代码集合class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { int len = nums.size(); un

2022-01-19 13:39:53 465

原创 多态 虚函数

文章目录多态实操代码深度剖析指针是4个字节类中的非静态成员函数存储区域不同,空类是1个字节。继承下来的东西所有东西都是一样的除了private域。多态我觉得多态的基本是在于C++中支持基类的引用可以指向派生类。实操代码#include <bits/stdc++.h>using namespace std;//多态分为两类(多种状态)/*静态多态 函数重载和运算符重载属于静态多态 复用函数名动态多态 派生类以及虚函数实现运行时多态区别:静态多态的函数地址早绑定:编译

2022-01-06 23:05:12 596

原创 静态成员变量以及静态成员函数

文章目录何为静态成员静态成员变量实操代码静态成员函数代码实操何为静态成员静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。静态成员变量1.所有对象共享同一份数据;2.在编译阶段分配内存(在点开exe文件之前);3.类内声明,类外初始化。实操代码#include <bits/stdc++.h>using namespace std;class Person { public: //所有对象都共享同一份数据!!!! //编译阶段就分配了内存

2022-01-05 21:33:18 625

原创 周老师打酒喝光回 递归

文章目录题目思路AC代码后记题目思路最后一次一定是花。AC代码#include <bits/stdc++.h>using namespace std;int n, m, x; //店 花 酒int buyDrinkWine(int store, int flower, int wine) { //依题意最后一次一定为花 int cnt = 0; if (store > n or flower > m - 1) return 0; if (flower

2022-01-01 11:17:01 539

原创 leetcode 273场周赛 Problem-C

文章目录题目思路AC代码后言题目5965. 相同元素的间隔之和思路思路是利用前缀、后缀数组来减少计数问题,可惜做的时候TLE了。AC代码class Solution {public: vector<long long> getDistances(vector<int>& arr) { unordered_map<int,vector<int> > m; int len=arr.size();

2021-12-26 14:23:44 287 1

原创 C++的文件读写以及python的文件读写

文章目录C++读文件写文件Python读文件写文件后言C++读文件其实一般文件的读取只涉及从文件中把东西读出来,所以提供以下模板:#include <bits/stdc++.h>using namespace std;int main() { ifstream bookfile("book.txt"); //打开在目录下的book.txt 注意是ifstream流 string s; while (bookfile) { getline(bookfile, s);//一

2021-12-24 19:43:14 864

原创 Quartus II 9.0sp1之功能仿真

文章目录功能仿真功能仿真功能仿真的意思就与C++中利用数据结果调试代码类似,只用于解决在理论层次上对应输入的输出是否正确,是没有考虑门输入延迟的,所以结果就更加接近理论值标准,具体操作如下:1.首先我们要先建立一个Verilog HDL 或者 VHDL文件,并且编译成功注意此时的模块名字应与顶层相同。编译成功:狗都不管warnings2.为了功能仿真我们应该建立一个vwf文件3.对vwf文件的操作首先在下图所标示的地方右击。然后Insert->Insert Node or Bu

2021-12-06 20:16:49 4644 2

原创 力扣 双周赛补题 2086. 从房屋收集雨水需要的最少水桶数

文章目录题目思路AC代码后记题目从房屋收集雨水需要的最少水桶数思路思路是贪心,因为我们需要从左向右找寻所有的水桶数,所以我们对于每一个房屋都优先判断右边是否能放水桶,右边不能放就看左边,两种情况的剩余情况输出-1。对于计数有两种方法,第一个是将对应合适的雨点数换成字符B,最后统计字符的个数;还有一个就是直接计数。计数二的代码真的好优美!AC代码计数一class Solution {public: int minimumBuckets(string street) {

2021-12-04 11:30:58 707

原创 1005. K 次取反后最大化的数组和

文章目录题目思路代码后记题目1005. K 次取反后最大化的数组和思路我自己的思路是先对这个序列进行排序,然后优先将负数取反。对于将所有负数都取反了k仍然有次数可以对k的奇偶性进行讨论,如果是奇数,我们找出序列中最小的数进行取反。优化的思路是利用哈希表进行正负数计数,因为题中的范围是-100~100.采用空间换时间。代码class Solution {private: int getval(vector<int> s){ int res=0,len=s.s

2021-12-03 16:28:30 182

原创 HNU 19.迭代电路习题

文章目录前言3-56思路电路图3-60思路电路图后言前言就是尝试尝试这种方法,也记录一下自己的思考。3-56我们从(b)开始讲。其实迭代电路的设计就像程序设计中的递归设计一样,要明确有几个输入有几个输出,每个输入是什么意思,对应的每个输出又是什么意思,哪个输出是有利于下一单元的利用,哪一个是到此为止就可以输出了的。思路本题是要求对4为输入求补。由于题中并没有讲是真值还是原码,所以我们按照所有为求补来解,进位舍去。我之前对数求补是符号位后全部取反再+1,显然这种思路并不利于迭代的设计。我们采

2021-12-02 21:22:11 509

原创 HNU 实验七 字符串 E-mail地址

文章目录题目思路AC代码题目思路是一个字符串模拟题,就按照给定的点和@来进行模拟。AC代码#include <iostream>#include <cstring>#include <vector>using namespace std;bool have_alpha(string check){ for(int i=0;check[i];++i){ if(check[i]>='a'&&check[i]&l

2021-12-01 13:09:30 621

原创 HNU 程序设计 周老师分苹果

文章目录题目思路AC代码后记题目思路递归,从左向右依次尝试即可。AC代码#include <bits/stdc++.h>using namespace std;int assignmentApples(int n, int index, int now) { int res = 0; if (now == n) return 1; else if (now > n) return 0; for (int i = index; i <= n; ++i)

2021-11-18 23:21:24 398

原创 指针 new

文章目录前言解决前言在做力扣的时候,遇到一个问题,在画线处把new去掉,结果就会出现超时的情况。解决在devC++中输入了下列代码:#include <bits/stdc++.h>using namespace std;int main() { int *t1; cout << t1 << endl; int *t2 = new int; cout << t2 << endl;}后面又尝试:#include &lt

2021-11-18 22:55:57 718

原创 HNU 程序设计课 函数公式题

文章目录前言题目AC代码前言看到很多同学好像是关注了我,大家要学习一下代码呢,不能直接copy哦。题目AC代码第一题我犯了一个很傻的错误,就是直接利用1/2*sin(r * s)了,这是错误的,因为在C++中默认认为1/2是整数运算所以结果必定是0。代码很简单,只是记录一下自己的错误。#include <bits/stdc++.h>using namespace std;double f(double r, double s) { if (r * r < s * s

2021-11-14 10:32:04 151

原创 HNU 程序设计 飞机起飞时间安排

文章目录前言题目思路AC代码前言看到很多同学好像是关注了我,大家要学习一下代码呢,不能直接copy哦。题目思路其实这题我是抄的hhh,今天早上看了一下代码,觉得原来别人写的太冗长了,没有必要,所以按照自己的思路写了一下。总体的思路是利用给出的飞机起飞的时候是按照升序给出的,所以我们不需要额外的对时间处理工作,只用线性查找即可。关键在于如何判断今天的最后一架飞机与明天的第一架飞机之间的时间跨度。刚开始想到了约瑟夫环( 程设书的P139 ),但是这个题只有一个答案,也就意味着我们只用一次线性遍历

2021-11-14 10:31:32 1468

原创 HNU实验五 小希与火车 基于神经网络的垃圾分类

文章目录题目思路AC代码题目思路小希的那个题贼简单,模拟就好了。神经网络那个题比较难想,其实对于任意的奇数与偶数,在进行有限次运算后的奇偶特性是确定的,所以我们可以避免在minX-maxX之间一个一个的算,直接找整个算式的奇偶特性即可。这有点数论那味道了,是个比较好的题目。AC代码#include <bits/stdc++.h>using namespace std;bool in(int l, int r, int temp) { if (temp >= l &a

2021-11-10 15:33:55 810

原创 HNU 实验五 小女孩与楼梯

文章目录题目思路AC代码题目思路这几题都比较简单,这题有个小技巧是在输入的时候同时处理数据。因为如果对应的台阶级数是1,那么就说明爬了一个楼梯res++即可。后面再存储1对应的下标,然后输出floor中对应1的前一个数即可。AC代码#include <bits/stdc++.h>using namespace std;int main() { int n; cin >> n; int floor[n + 1]; vector<int> count

2021-11-10 10:44:14 577

原创 HNU 实验五松雅的旅馆

文章目录题目思路AC代码题目思路暴力模拟吧。。注意在最左边的旅馆的左边以及最右边旅馆的右边也可以建立旅馆,即可以越过区间建立。这是数组类题目常有的问题。AC代码#include <bits/stdc++.h>using namespace std;int main() { int n, d; cin >> n >> d; int hotel[n + 1]; int min_ = INT_MAX, max_ = INT_MIN; for (int

2021-11-10 10:34:14 808

原创 HNU 贪心的阿迪

文章目录题目思路AC代码后记题目思路暴力模拟吧。。AC代码#include <bits/stdc++.h>using namespace std;int main() { int n, k, M, D; cin >> n >> k >> M >> D; //有n颗糖果 k个人 每次分配的最大数量M 最大分配次数D int candy[k + 1]; int max_ = -1; for (int i = 1; i &l

2021-11-08 22:50:18 369

原创 HNU 实验五 猴导师

文章目录题目思路AC代码题目思路关键在于怎么处理有冲突的猴子。由于两个冲突的猴子之间的下标是相互关联的,所以我用了结构体来处理这个问题,其实用数组也可以,就是下标确定有点儿烦。AC代码#include <bits/stdc++.h>using namespace std;struct conflict { int index1, index2;};int main() { int n, k; cin >> n >> k; int arr[n

2021-11-06 10:22:52 294

原创 HNU 实验五 拜访朋友

文章目录题目思路AC代码后记题目思路其实一开始的思路是利用一个大数组,将每个公交站点都记录在对应下标的位置并把值赋1,最后统计0到n公交站点的数目看看是否有那么多个公交站点。但这个思路其实是有bug的,比如如果路线是2-3 4-5 而3-4之间没有公交车可以到达,那么根据题意这种情况是不行的,但是这个思路写出来的代码忽略了这种情况。正确的思路是,利用一个多次循环,将最终站点m的位置不断更新,更新的条件是m在某辆公交车的始末位置之间,值为始发位置。多次更新后,看看m是否小于等于0,是的话就是Yes。

2021-11-06 09:59:33 195

原创 力扣 每日一题 丢失的数字

文章目录题目思路AC代码后记题目丢失的数字思路第一个思路是利用数学公式来对于nums做差得出答案;第二个思路我觉得比较经典就是利用异或运算。因为异或有两个独特的性质:0与任何数异或都是那个数任何数与自身异或都是0;所以我们可以利用这个性质对nums的所有元素求一次异或(相同是0,不同是1),然后再对0-n内的所有数进行一次异或运算,所得到的就是缺失的数AC代码代码1class Solution {public: int missingNumber(vector<int&

2021-11-06 08:31:14 71

原创 实验五 松雅的花园

文章目录题目思路AC代码题目思路这个题感觉有点儿复杂。我是利用集合的特性去重的,每次来判断是否浇满了整个花圃。对于时间t时,每个水龙头浇的苗圃是2t+1,我们利用循环进行对集合的插入即可,最后判断何时集合的长度等于n就可以输出res了。AC代码#include <bits/stdc++.h>using namespace std;int main() { int T; cin >> T; for (int i = 1; i <= T; ++i) {

2021-11-05 17:21:18 451

原创 力扣 496 下一个更大的元素I

文章目录题目思路AC代码后记题目496. 下一个更大元素 I思路接到手,肯定是考虑直接暴力模拟的,时间复杂度是O(mn)。题解给了一个更好的方法,利用单调栈来对nums2进行预处理。这个方法实在是很妙。大致的思路是,倒序遍历nums2,对于某个循环到的数num来说,如果num比这个栈顶元素大,那么这个元素出栈,因为它不可能是num右边第一个比它大的数。对于这个循环结束有两种情况,第一是栈顶元素大于num,那么这个栈顶元素就是这个num所对应的数;第二是栈空了,说明右边没有满足题意的数,对应-1。

2021-11-04 11:45:38 124

原创 hnu实验五 排队喝水

文章目录题目思路AC代码后记题目思路思路是利用结构体存储相应学生的信息。其实题目中那个序号大的排在后面这个信息用不上。应该是在出题的时候考虑还没学到结构体给删了吧。然后其实我们要基于第一个来取水的diao mao (学生) 来计算时间,利用succed来表明这个diao mao (学生) 已经成功取到了水,那么后面的计算就需要在这个diao mao (学生) 来的时间的基础上加上这个succeed与limit比较。AC代码#include <bits/stdc++.h>using

2021-11-03 20:26:42 586

原创 hnu 肿瘤面积

文章目录题目思路AC代码后记题目思路由题可知道的是,肿瘤边界一定是0,而且一定是一个矩形。那么就可以通过正序与逆序找到左上角0的坐标以及右下角0的坐标。然后再遍历或者直接算内层矩形的面积即可。AC代码#include <bits/stdc++.h>using namespace std;int main() { int n; cin >> n; int arr[n + 1][n + 1]; for (int i = 1; i <= n; ++i) {

2021-10-29 15:37:39 96

原创 位运算解决二进制位上不同数字的个数问题

文章目录题目思路AC代码题目思路在oj上遇到的一道题。因为位运算基本不会,所以记录一下。这题采取异或运算即 ^ 这个运算符号。它的意思是如果二进制位上的两个数是相同的那么数字是0,如果不同则位1,那么我们可以利用异或运算这个特点来统计结果数的二进制上的1的个数即可。AC代码#include <bits/stdc++.h>using namespace std;int main() { int x, y; cin >> x >> y; int r

2021-10-29 09:15:32 168

原创 力扣每日一题 2021.10.23

文章目录题目思路AC代码后记题目492. 构造矩形思路很简单的模拟法,我们需要避免一些重复的运算,所以循环遍历到sqrt(area)即可。另外设置一个delt1与delt来记录每次length与width之间的差,选取最小的那个,总是就很简单啦。。AC代码class Solution {public: vector<int> constructRectangle(int area) { vector<int> res; int d

2021-10-23 10:09:41 70

原创 洛谷P3152 正整数序列

文章目录题目思路AC代码后言题目正整数序列思路其实这是一个数学题目。。并不需要使用递归求解。其实在数学中每个数都能表示成2的幂总和比如127=20+21+22+23+24+25+2659=25+24+23+21+20那么对于这个题目,由于序列是从1-n的,也就是说把1-n的所有数都表示成2的幂次,那么就可以每次对应的减去相同的2的幂数即可。到最后的话也是求最大的2的幂次。由于某个数x,一定存在正整数n满足2n≤x≤2n+!,很显然是个以2为底的对数的关系。所以代码就很简单,直接打印出(

2021-10-17 21:51:48 134

原创 洛谷P1087 FBI树

文章目录题目思路AC代码后言题目添加链接描述思路其实这个树很简单,就是一个满二叉树,我们利用父亲结点是i左结点是2* i右节点是2*i+1来存储。就与data信息是字符串所以我利用了一个结构体Node来存储相应信息。存储之后还要对剩余的叶子结点进行处理,就是将叶子结点作为data存入结构体中,便于写递归。AC代码#include <bits/stdc++.h>using namespace std;struct Node { string left, right, data;

2021-10-15 22:52:52 92

原创 完全二叉树之深度问题

文章目录题目思路AC代码题目思路由于树给出的方式是按照完全二叉树的方式给出的,对于不越界的情况下,结点i的左孩子是2* i,右孩子是2*i+1。所以完全可以用一个数组存入,然后再做文章。对于一个给定结点数的二叉树的高度是(int)(log2(n))+1这是由于对于层数为k的二叉树的结点数n一定满组:2k-1≤n<2k,为了计算k我们选取等于号即可。AC代码#include <bits/stdc++.h>using namespace std;//是按照完全二叉树的

2021-10-06 17:34:44 275

原创 二叉树之孩子表示法以及前中后三种遍历法

文章目录题目思路AC代码题目思路对于每一个结点,我们可以构造一个结构体变量struct node,其中包含数据、左孩子结点、右孩子结点。然后依次存入即可,遍历的话,使用简单的递归遍历即可。AC代码#include <bits/stdc++.h>using namespace std;/*1.先用孩子表示法,存储二叉树2.用递归得结果*/const int N = 30;struct node { char data; int lchild, rchild;}

2021-10-06 17:08:58 627

原创 洛谷 P1918保龄球

文章目录题目思路AC代码题目保龄球思路题目的意思还是查找相等的数字,然后返回在原数组中的下标,找不到就返回0。由于数据量达到了五次方,所以要用O(nlogn)的优化,先对数组排序,利用哈希表来记录数字–下标,因为它查找的复杂度为O(1)。AC代码#include <bits/stdc++.h>using namespace std;int main() { int n, *bowl_sort, Q; //Q表示发球次数 unordered_map<int, int&

2021-10-04 08:37:56 247

原创 洛谷P1102 A-B

文章目录题目思路AC代码题目思路哈希表查找,通过空间换时间达到O(n)的时间复杂度。AC代码#include <bits/stdc++.h>using namespace std;int main(){ int N,C; cin>>N>>C; int *arr; arr = new int [N+1]; for(int i=1;i<=N;++i){ cin>>arr[i];

2021-09-29 09:54:59 60

原创 hnu 暑期实训之回文串

文章目录题目思路AC代码题目思路回文串首先可以对所给的字符串判断一下看看是不是回文串,如果是就直接输出0;对于不是回文串的,我们先来观察一段回文串"abcba"对于给出的串"abc"的话,我们可以先对其逆序得到"cba",然后将它的后i位接进去,就可以发现答案会是2.一定不能正序接入,因为得优先满足回文串的条件:首末位相等。AC代码#include <bits/stdc++.h>using namespace std;bool reverse_string(string

2021-09-15 11:14:37 246

原创 hnu 暑期实训之疫情期间

文章目录题目思路AC代码题目【样例输入1】41 3 2 0【样例输出1】2【样例输入2】71 3 3 2 1 2 3【样例输出2】0【样例输入3】22 2【样例输出3】1【样例说明】在第一个样例中,阿迪在第一天编写程序,在第三天做运动,因此他仅有两天可以休息。在第二个样例中,阿迪可以在第1、3、5、7天编写程序,其他天做运动,因此没有哪天休息。在第三个样例中,阿迪可以在第1天或第2天做运动,但不能连续两天运动,因此他有一天休息。思路淦 动态规划的特点我觉得是代码

2021-09-15 10:29:34 211

原创 hnu 暑期实训之最少钱币数

文章目录题目AC代码及思路收获题目AC代码及思路#include <bits/stdc++.h>using namespace std;int main() { int price, n; while (cin >> price, price != 0) { cin >> n; int *arr; arr = new int[n + 1]; for (int i = 1; i <= n; ++i) { cin >>

2021-09-14 09:22:07 111

原创 hnu 暑期实训之蛇形矩阵

文章目录题目![在这里插入图片描述](https://img-blog.csdnimg.cn/2340a76f57c7440d937ed2b38107f60f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA6KKN5riF6YWS5LuYODI1,size_20,color_FFFFFF,t_70,g_se,x_16)AC代码题目AC代码#include <bit

2021-09-13 17:02:45 107

原创 hnu 暑期实训之web导航

文章目录题目思路AC代码python版题目【问题描述】标准的Web浏览器具有在最近访问的页面中前后移动的特性。实现这些特性的一种方法是使用两个堆栈来跟踪可以通过前后移动到达的页面。在这个问题中,我们要求实现这一点。 需要支持以下命令: BACK:将当前页面压入前向堆栈的顶部;从后向堆栈的顶部弹出该页,使其成为新的当前页。如果后向堆栈为空,则该指令忽略。 FORWARD:将当前页面压入后向堆栈的顶部;从前向堆栈的顶部弹出该页,使其成为新的当前页。如果前向堆栈为空,则该指令忽略。

2021-09-09 11:13:02 167

空空如也

空空如也

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

TA关注的人

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