
C/C++/数据结构
C/C++/数据结构
ccccvvvvvcv
这个作者很懒,什么都没留下…
展开
-
二叉树基础——六个重要性质(国内考试常考)
性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)性质2:深度为i的二叉树至多有2i-1个结点(i>=1)性质3:包含n个结点的二叉树的高度至少为(log2log_2log2n)+1性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1证明:n为总结点数,n1为度为1的结点总数,n0,n2同理;由(1)(2)n=n0+n1+n2 (1)n=n00+n11+n22+1即n=n1+2n2+1 (2)*得:n0=n2+1性质5:具有n个原创 2021-04-14 17:42:51 · 1151 阅读 · 0 评论 -
SDUT---数据结构---链表部分题目
数据结构实验之链表一:顺序建立链表#include <bits/stdc++.h>using namespace std;struct yyh{ int data; struct yyh* next;}*head,*p,*tail;int main(){ int n; scanf("%d",&n); head=new struct yyh(); head->next=NULL; tail=head; f原创 2021-04-01 19:42:38 · 233 阅读 · 0 评论 -
SDUTOJ 数据结构-顺序表部分题目
#include <bits/stdc++.h>using namespace std;const int manx=1e5+10;class yyh{public: int data[manx]; int len; void create(class yyh*); void change(class yyh*); void print(class yyh*);};void create(struct yyh* head){ fo原创 2021-03-19 15:39:33 · 358 阅读 · 0 评论 -
山东理工大学2020年全国天梯赛赛前个人专题强化赛---D(搜索1)
这个题就别让题目唬住了,他就是想让你求图的相邻两个联通点是不是有一样的数字标志,就是所谓的颜色(他用不同的数字来区分)只要写出图来,用一个数组给每个点写上数字,遍历所有出现的边,看颜色是否相同即可;#include <bits/stdc++.h>using namespace std;const int manx=1e6+10;int V,E,K;int OS;set<int>wuhu;int b[600];struct yyh{ int a; ..原创 2020-12-31 01:38:58 · 401 阅读 · 0 评论 -
山东理工大学2020年全国天梯赛赛前个人专题强化赛---C(最短路)
旅游规划这个题,其实用floyd也可以做,而且代码看起来更舒服,先给一个floyd的代码(非全原创,侵删),但要注意,由于floyd确实多算了很多无用的数据,如果卡你时间,floyd是过不了的。#include <bits/stdc++.h>using namespace std;#define INF 0x3f3f3f3fint node [505][505];int dis[505][505];int main(){ int n,m,s,d,i,j,k,x,y,q,w原创 2020-12-31 01:37:33 · 282 阅读 · 0 评论 -
2020-9-26 中国计量大学程序设计竞赛同步赛 B
在牛客网上打的,我还蛮喜欢这些大学的比赛的,比打VJ,CF和CCPC,ICPC的往年题目有趣多了,可能是外国人的脑洞我不习惯吧,中国人出的题还是舒服。这里记录一下B,因为做这个题的过程对我很有启发。一开始是这样的代码:#include <bits/stdc++.h>using namespace std;const int manx=1e5+10;int t;int s[manx],s2[manx];char a[manx],b[manx],c[manx];int main(原创 2020-09-26 21:12:30 · 319 阅读 · 0 评论 -
山东理工大学2020年全国天梯赛赛前个人专题强化赛---B(排序2)
这题的n<m这个测试点可以说坑了一大波人,其他没什么就是个水题#include <bits/stdc++.h>using namespace std;const int manx=1e6+10;int n,m;long long a[manx];bool cmp(long long x,long long y){ return x>y;}int main(){ scanf("%d %d",&n,&m); for(int .原创 2020-09-21 20:52:51 · 530 阅读 · 0 评论 -
getline(cin,s)与cin.getline(s,n)的分辨
cin.getline(s,n)用法:接收一个字符串,可以接收空格并输出#include <iostream>using namespace std;main (){char m[20];cin.getline(m,5);cout<<m<<endl;}输入:jkljkljkl输出:jklj如果把5改成20:输入:jkljkljkl输出:jkljkljkl接收5个字符到m中,其中最后一个为’\0’,所以只看到4个字符输出;1、cin.get原创 2020-09-14 14:46:19 · 1279 阅读 · 0 评论 -
SDUT 2020 Autumn Team Contest-题目总结
这题说:给你n个数,能否找到三个数组成三角形。本题难点在卡时间,如果是从小到大排序后从第一个到第n-2个,找i,i+1一个一个试,成功了就break的话,就会超时。所以我们要掌握斐波那契数列,...原创 2020-09-10 16:58:10 · 264 阅读 · 0 评论 -
山东理工大学 2020年全国天梯赛赛前个人专题强化赛---A(排序1)
本题目难点在于以字典序的大小来排序拓展:假定字典序一定会不同,那么按字典序升序排序,应该是这样写:bool cmp2(struct yyh x,struct yyh y){ return strcmp(x.name,y.name)<0;}同样的,如果按降序排序,应该是:bool cmp2(struct yyh x,struct yyh y){ return strcmp(x.name,y.name)>0;}总代码如下:#include .原创 2020-09-14 19:17:42 · 249 阅读 · 0 评论 -
c++ <<和>>的意思
<<<<<<是左移运算符的意思,左移运算符是用来将一个数的各二进制位全部左移若干位,右补0。高位左移后溢出,舍弃。例如:将a的二进制数左移2位,右补0。若a=15,即二进制数00001111,左移2位得00111100,即十进制数60。语法格式:需要移位的数字 << 移位的次数例如: 3 << 2,则是将数字3左移2位。即00000011----->00001100(12);>>>>>>右移运算符原创 2020-08-24 17:38:08 · 35817 阅读 · 0 评论 -
CCCC训练补题
我其实不喜欢写博客补题,我认为这不如看别人写好的,学方法,有效率。这次破例是因为这套题考出了有史以来最低排名,我在最后10分钟看排名的时候,心里真是入夜渐微凉,桃花落地成霜,亦或是,一场肝肠断,天涯何处是故乡的悲伤。反思了很多,但明显就一个原因:前段时间很松懈,真不知道自己哪来的勇气松懈!应急方案:用两周,抽时间刷完天梯赛2019年120题.就这一个,因为多了也完不成!好了,说题!这个题一看就知道不会,因为确实有点难搞;试着做了下,发现是老毛病:遇到字符串,有多个空格时不会处理,我一般原创 2020-09-14 15:23:14 · 235 阅读 · 0 评论 -
2020/7/30—组队赛总结+补题
首先总结:1.总体配合非常良好,感觉有1+1+1>3的效果.2.在时间分配上,我觉得一开始分开各做各的是不错的,但是把签到题和简单题做完后,我 们比较缺少题目上的交流和沟通,以后会多讨论.3.遇到一些问题还是急躁,不知所措,因为多与队友交流.补题:这个题我们AC六题后,我们三个人都在搞这个题,但是一方面英语题面,对题目理解有些问题,另一方面,在最后我们思路已经很接近了,但是实现又成了问题,代码写的有问题,时间也不够了,遗憾吧.题目大意:给出一个数字n,让我们构造出不超过1原创 2020-07-30 21:38:56 · 507 阅读 · 0 评论 -
SDUTOJ-第12届校赛-H-憨憨的锤子
题解思路:分析可得,为了在少次数内达到要求,对于这个排列中的数我们多移动一次。然后对于移动 完成得数列可以将其分为三部分,前面得部分是某些被选择的数放到前端,后得部分是某些 被选择的数放到后端,而中间的部分是没有移动过的。对于中间部分我们可以知道肯定是递增 的,并且相邻的两个数差值唯一。所以我们只要求出中间部分长为多长,就可以求出答案。所 以要求这个序列得长递增子序列,且差值为1。这个题当时差点就做出来了,我的思路和题解思路完全一致,但是不知道是哪里出了问题,想想是挺可惜的。题解代码:#inclu.原创 2020-07-15 02:06:27 · 216 阅读 · 0 评论 -
SDUTOJ-第12届校赛-C-Binary number
当时做的时候是发现是:奇数很简单,只要加1,就能使二进制数中的1不多于原数因为奇数的最后一位一定是1,所以加1就相当于把最后一位的1变成0,然后前面那一位变成1,如果前面那位已经是1,那就再往前1位变成1,以此类推,反正早晚有那一位是0的情况,比如7,二进制是0111,加1就成了1000(8),再比如11,二进制是1011,加1为1100(12)。而偶数费了我很多很多时间,最后发现:从后往前数,最早出现1的那一位的位数-1,设为p,则+2^p即可。比如10,二进制1010,倒数第二位最先出现1,..原创 2020-07-15 00:43:48 · 176 阅读 · 0 评论 -
VJ-LightOJ 1341 - Aladdin and the Flying Carpet(唯一分解定理(算术基本定理))
题目分析:根据唯一分解定理,先将a唯一分解,则a的所有正约数的个数为num = (1 + a1) * (1 + a2) *…(1 + ai),这里的ai是素因子的指数,见唯一分解定理,因为题目说了不会存在c==d的情况,因此num要除2,去掉重复情况,然后枚举小于b的a的约数,拿num减掉就可以了这题好难…整了好长时间代码如下:#include <bits/stdc++.h>...原创 2020-07-27 12:31:09 · 135 阅读 · 0 评论 -
某高校同步赛- Archmage
这个题当时没做出来,当时是用分散的眼光来看这个题的,没有想到x>y时,前m-1秒内恢复的魔法值都会被利用上,如果用这种整体的观念来看这个题的话,就会迎刃而解。原创 2020-06-01 00:44:44 · 253 阅读 · 0 评论 -
某高校同步赛-三角形
这题当时没做出来,主要不知道怎么处理这么大的数,用字符串吧太麻烦,用java又没自信,所以用c++搞了半天不对,看下官方给的代码吧。#include <bits/stdc++.h>using namespace std;unsigned long long a[105]; //通过unsigned写法让long long存储范围再大一倍;unsigned long long b[105];int main(){ a[1] = 1; a[2] = 2; un.原创 2020-06-01 00:26:09 · 216 阅读 · 0 评论 -
洛谷-P5019 铺设道路+某高校同步赛-减成一
传送门:P5019 铺设道路#include<bits/stdc++.h>#define N 100005using namespace std;int a[N]; //全局可以保证a[0]=0,否则循环和if语句会错int main(){ int n,i,ans=0; scanf("%d",&n); for(i=1;i<=n;++i) { scanf("%d",&a[i]); if(a[i]>a[i-1]) ans+=原创 2020-05-31 23:53:18 · 181 阅读 · 0 评论 -
无穷大无穷小的写法总结(持续补充~~~)
1.我们可以使用系统提供的常量: 如果是int型,可以用INT_MAX表示正无穷,INT_MIN表示负无穷,需要包含头文件limits.h; 如果是double型,可以用DBL_MAX表示正无穷,-DBL_MAX表示负无穷(注意不是DBL_MIN),需要包含头文件float.h。2.我们也可以自己设置一个很大的值作为无穷大:①.0x7fffffff但是这个值在相加时会溢出,这样两个无穷大数相加会变成负数。②.0x3f3f3f3f为了尽量避免以上的错误,我们可以将0x3f3f3f3f设为无原创 2020-05-29 21:20:11 · 3742 阅读 · 0 评论 -
数据结构优质博客
二叉树https://www.jianshu.com/p/bf73c8d50dc2原创 2020-05-21 20:16:53 · 416 阅读 · 0 评论 -
switch case 嵌套(禁止套娃接手动滑稽)
import java.util.*;public class Main{ public static void main(String[] args) { int a=Integer.parseInt(args[0]); int b=Integer.parseInt(args[1]); if((a!=1&&a!=2&&am...原创 2020-04-26 21:35:42 · 1284 阅读 · 0 评论 -
排序算法总结(适合初学者)
闲来无事,想总结一下,以后持续补充(我就是个大学生,拿优快云上的文章拼拼凑凑,就是想自己做个笔记,如果不合适,请私信我,侵删。不过应该没人会看一个学生写的笔记吧…哈哈)算法一:插入排序(Insertsort)插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法稳定。插入排序的时间复杂度为O(n*n). 空...原创 2020-05-23 01:33:08 · 351 阅读 · 0 评论 -
SDUT 1197 约瑟夫问题
#include <stdio.h>#include <stdlib.h>struct yyh{ int data; struct yyh *next;};int main(){ struct yyh *p,*head,*tail,*q; head=malloc(sizeof(struct yyh)); head->...原创 2020-03-24 16:51:21 · 179 阅读 · 0 评论 -
2119-数据结构实验之链表四:有序链表的归并
#include <stdio.h>#include <stdlib.h>struct node{ int data; struct node*next;};struct node *create(int m){ struct node *tail,*head,*p; head=malloc(sizeof(struct nod...原创 2020-03-19 01:57:46 · 339 阅读 · 0 评论 -
SDUT 2118-数据结构实验之链表三:链表的逆置
#include <bits/stdc++.h>using namespace std;struct node{ int data; struct node *next;};int main(){ struct node *head,*p; head=(struct node *)malloc(sizeof(struct node));...原创 2020-03-18 23:55:32 · 192 阅读 · 0 评论 -
普通冒泡+改进版冒泡(SDUT1196-排序问题)+从1开始的冒泡循环(SDUT1569-选夫婿1)(这个相对最重要)
#include <stdio.h>#include <stdlib.h>struct yyh{char a[25];int b;int c;}a[100000],t;int main(){int i,n,j,e,f,c,d;scanf("%d",&n);for(i=1; i<=n; i++){scanf("%s %d %d",a[...原创 2020-05-01 17:57:18 · 255 阅读 · 0 评论