C++基础知识专辑
c++的学习是漫长的,如果您想在较短的时间,或不想在深度学习的时候磕磕碰碰,那就必须把基础打牢固,我的专辑里有着较为详细的基础知识讲解,打基础,就来我这看看吧,谢谢支持呀!
llsgtc
这个作者很懒,什么都没留下…
展开
-
参加广东省 2020 CSP-J 信息学奥赛 总结与感想
准备已久的CSP-J 信息学奥赛与今天(2020 年 10 月 11 日)结束了。作为初次参加信息学竞赛的我,经验收获满满:(1)做真题还是有挺大的帮助,这次考试中有3道选择题是与前几年的题一模一样的,就是今年有三种( “ 一共有多少种方法 ” 之类的)这样的题型。在以往的真题中似乎没有看见过,还是要扩展一下的,像我在阅读程序这一块比较欠缺的,在考试中的占比也是很大一块,在未来的一年中要多加往这一块学习,准备明年的信竞。(2)关于休息这方面,这次因为误记时间,没有睡午觉,导致在下午考试前期精神状态还是没原创 2020-10-11 21:34:20 · 1862 阅读 · 0 评论 -
C++萌新到完全入门的最后一站 — — 线段树
(注:由于线段树的每个节点代表一个区间,以下叙述中不区分节点和区间,只是根据语境需要,选择合适的词)线段树本质上是维护下标为1,2,…,n的n个按顺序排列的数的信息,所以,其实是“点树”,是维护n的点的信息,至于每个点的数据的含义可以有很多,在对线段操作的线段树中,每个点代表一条线段,在用线段树维护数列信息的时候,每个点代表一个数,但本质上都是每个点代表一个数。以下,在讨论线段树的时候,区间[L,R]指的是下标从L到R的这(R-L+1)个数,而不是指一条连续的线段。只是有时候这些数代表实际上一条线段的统原创 2020-10-03 09:36:53 · 117 阅读 · 0 评论 -
1267:【例9.11】01背包问题
时间限制: 1000 ms 内存限制: 65536 KB提交数: 14865 通过数: 9050【题目描述】一个旅行者有一个最多能装 M 公斤的背包,现在有 n 件物品,它们的重量分别是W1,W2,…,Wn,它们的价值分别为C1,C2,…,Cn,求旅行者能获得最大总价值。【输入】第一行:两个整数,M(背包容量,M≤200)和N(物品数量,N≤30);第2…N+1行:每行二个整数Wi,Ci,表示每个物品的重量和价值。【输出】仅一行,一个数,表示最大总价值。【输入样例】原创 2020-08-17 16:16:16 · 807 阅读 · 0 评论 -
一本通:1329:【例8.2】细胞
时间限制: 1000 ms 内存限制: 65536 KB提交数: 10119 通过数: 5645【题目描述】一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:阵列4 100234500067103456050020456006710000000089有4个细胞。【输入】第一行为矩阵的行n和列m;下面为一个n×m的矩阵。【输出】细胞个数。【输入样例】4 1002345原创 2020-08-12 15:02:28 · 486 阅读 · 1 评论 -
for 循环的语法介绍以及应用实战
什么是循环**一组被重复执行的语句称之为循环,循环必需带有有穷性这一特点,也就是说循环必须要有结束的条件,如果一个循环不能被结束,那么就是一个无穷循环,也就是死循环,除非是程序员特定的,否则循环都具有有穷性。**for循环的语法for ( init; condition; increment ){ statement(s);}先是打印出佛如,再用小括号,在括号里,先填入“in...原创 2020-02-26 22:58:04 · 836 阅读 · 2 评论 -
C++ “switch“ 语句的简单讲解
我现在是一位初中生,学C++语言时间也不久,但是在这不久的时间里我也学会了不少技巧,不如基础的:循环,常量变量,数据的输入输出......算法也学习了一些,例如:二分法,穷举法,递归等等,我是学得比较快的,但是在这里我还是建议大家一定要把基础学扎实啊!!!(这个温馨提醒很重要啊),剩下的话不多说啦,赶紧进入主题 :C++的“switch” 语句,希望能给大家带来一些帮助 。(如果您觉得不错请点...原创 2020-02-25 22:31:08 · 1358 阅读 · 0 评论 -
一本通:1313:【例3.5】位数问题
时间限制: 1000 ms 内存限制: 65536 KB提交数: 10341 通过数: 5620【题目描述】在所有的N位数中,有多少个数中有偶数个数字3?由于结果可能很大,你只需要输出这个答案对12345取余的值。【输入】读入一个数N(N≤1000)。【输出】输出有多少个数中有偶数个数字3。【输入样例】2【输出样例】73#include<iostream>using namespace std;int main(){ int f[1001][原创 2020-08-07 22:58:38 · 262 阅读 · 0 评论 -
1334:【例2-3】围圈报数
时间限制: 1000 ms 内存限制: 65536 KB提交数: 5807 通过数: 3799【题目描述】有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出列的顺序。【输入】n和m。【输出】出列的顺序。【输入样例】4 17【输出样例】1 3 4 2【提示】n≤100。#include <bits/stdc++.h&原创 2020-08-07 22:56:20 · 392 阅读 · 0 评论 -
1320:【例6.2】均分纸牌(Noip2002)
时间限制: 1000 ms 内存限制: 65536 KB提交数: 9509 通过数: 5116【题目描述】有n堆纸牌,编号分别为 1,2,…,n。每堆上有若干张,但纸牌总数必为n的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1的堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 n 的堆上取的纸牌,只能移到编号为n−1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如 n=4,原创 2020-08-07 22:43:02 · 362 阅读 · 0 评论 -
1205:汉诺塔问题
时间限制: 1000 ms 内存限制: 65536 KB提交数: 14171 通过数: 5164【题目描述】约19世纪末,在欧州的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由64个圆盘构成的塔。目的是将最左边杆上的盘全部移到中间的杆上,条件是一次只能移动一个盘,且不允许大盘放在小盘的上面。这是一个著名的问题,几乎所有的教材上都有这个问题。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:18,446,7原创 2020-08-04 15:08:58 · 370 阅读 · 0 评论 -
#数塔#
Time Limit: 1000 ms / Memory Limit: 32768 kbDescription在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗?Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中原创 2020-07-31 11:43:28 · 143 阅读 · 0 评论 -
1312:【例3.4】昆虫繁殖
时间限制: 1000 ms 内存限制: 65536 KB提交数: 13311 通过数: 6547【题目描述】科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵),问过z个月以后,共有成虫多少对?0≤x≤20,1≤y≤20,X≤z≤50。【输入】x,y,z的数值。【输出】过z个月以后,共有成虫对数。【输入样例】1 2 8原创 2020-07-30 16:46:30 · 112 阅读 · 0 评论 -
#高精度除法#
#include<bits/stdc++.h>using namespace std;int main(){ int a[100],b,x=0,c[100]; char sa[100]; cin>>sa>>b; memset(a,0,sizeof(a)); memset(a,0,sizeof(a)); a[0]=strlen(sa); for(int i=1;i<=a[0];i++){ a[i]=sa[a[0]-i]-'0'; }原创 2020-07-30 15:12:59 · 75 阅读 · 0 评论 -
#归并排序#
#include<bits/stdc++.h>using namespace std;int a[1001];const int inf = 0x7FFFFFFF;void merge(int x[],int p,int q,int r){ int n1=q-p+1; int n2=r-q; int L[n1+1],R[n2+1]; for(int i=p;i<=q;i++){ L[i-p]=x[i]; } for(int j=q+1;j<=r;j++){原创 2020-07-30 15:09:30 · 86 阅读 · 0 评论 -
#快速排序#
#include <bits/stdc++.h>using namespace std;int partition(int x[],int p,int r){ int pivot = x[r]; int i = p-1,j = p; for(j=p;j<r;j++){ if(x[j]>=pivot){ i = i+1; swap(x[i],x[j]); } } i = i+1; swap(x[i],x[r]); return 0;} vo原创 2020-07-30 14:46:01 · 98 阅读 · 0 评论 -
#高精度加法#
#include <bits/stdc++.h>using namespace std;int main(){ int a[100],b[100],c[101],x=0; char sa[100],sb[100]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); cin >> sa >> sb ; a[0]=strlen(sa); b[0]=strlen(sb)原创 2020-07-30 14:41:33 · 63 阅读 · 0 评论 -
#高精度减法#
#include <bits/stdc++.h>using namespace std;int main(){ int a[256],b[256],c[256]; char sa[256],sb[256],temp[256]; cin>> sa >>sb ; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); if (strlen(sa)<strlen(sb)|原创 2020-07-30 14:39:00 · 82 阅读 · 0 评论 -
1159:斐波那契数列
时间限制: 1000 ms 内存限制: 65536 KB提交数: 16414 通过数: 11359【题目描述】用递归函数输出斐波那契数列第n项。0,1,1,2,3,5,8,13……【输入】一个正整数n,表示第n项。【输出】第n项是多少。【输入样例】3【输出样例】1【来源】No做法一#include<iostream>using namespace std;int n;int jia(int n){ if(n==1) retur原创 2020-06-13 23:51:13 · 310 阅读 · 0 评论