C/C++
yunxiaoMr
where there great love,there are always miracles!Just work hard and be yourself, and then you will succeed!
展开
-
Dijkstra(下):基于单源最短路Dijkstra解决mininum bottleneck问题
我是赵云肖,哦吼,考完试再写mininum bottleneck~原创 2020-12-22 10:19:35 · 426 阅读 · 6 评论 -
Dijkstra(中):回顾+总结单源最短路Dijkstra
我是赵云肖,哈哈哈哈,考完试再公布答案~原创 2020-12-22 10:17:52 · 222 阅读 · 1 评论 -
Dijkstra(上):单源最短路Dijkstra的前世今生与基于Dijkstra的mininum bottleneck问题
临近期末,算法老师留下一个斯坦福公开课的课堂思考题,说本题做出来的同学在期末成绩上+5分,有这等好机会能争取一下还是得争取一下的。本题的思路并不难,主要是基于小顶堆对Dijkstra进行稍做改进。该思考题如下:In lecture we define the length of a path to be the sum of the lengths of its edges. Define the bottleneck of a path to be the maximum length of on原创 2020-12-22 10:14:53 · 1322 阅读 · 4 评论 -
CCF-CSP 20181204 数据中心(满分)
#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int N = 5e4+10; const int M = 1e5+10;int F[N]; //并查集,用于找你和我共同的爸爸 int tol; //存储一个全局的边数 struct Edge{ int u,v,w;}e[M];bool cmp(Edge a,Edge b.原创 2020-12-09 17:26:15 · 181 阅读 · 0 评论 -
CCF-CSP 20190305 317号子任务(满分)
Floyd 超时 30分#include<iostream>#include<algorithm>#include<cstring>using namespace std;#define inf 0x3f3f3f3f static const int N=10001;int E[N][N],kind[N];struct Node{ int k,e;}tmp[N];bool cmp(Node P,Node Q){ if(P.k==Q.k) ret原创 2020-12-06 13:15:04 · 638 阅读 · 0 评论 -
CCF-CSP 20160404:游戏
#include<iostream>#include<cstring>#include<queue>using namespace std;#define N 101#define M 101#define T 5000 //10001内存超出,评测范围T为9999,没想明白5000的维度竟然满分了 int map[M][N][T];struct node{ int x,y,time;};struct Pos{ int x,y;}pos.原创 2020-12-05 17:07:28 · 171 阅读 · 0 评论 -
CCF-CSP 20191202:回收站
本题没什么坑,注意一下数据范围就好,有负整数的评测样例.#include<iostream>using namespace std;#define N 10001int check(long tmp_x,long tmp_y,long x,long y){ if(tmp_x==x&&tmp_y==y) return 0; if(tmp_x==x&&tmp_y==(y-1)) return 1; if(tmp_x==x&&t原创 2020-12-02 21:13:33 · 209 阅读 · 0 评论 -
CCF-CSP 20190302:二十四点
#include<iostream>#include<vector> using namespace std;int solve(int data1,char op,int data2){ if(op=='+'){ return data1+data2; }else if(op=='-'){ return data1-data2; }else if(op=='x'){ return data1*data2; }else if(op=='/'){ re.原创 2020-11-29 22:16:54 · 186 阅读 · 0 评论 -
CF-CSP 202009-1:称检测点查询
#include<iostream> #include<cmath>#include<algorithm>using namespace std;#define N 201int pos[2][N];double dis[N];int main(){ int n,X,Y; cin>>n>>X>>Y; int i=0; while(i<n){ cin>>pos[0][i]>>pos.原创 2020-11-02 21:50:55 · 345 阅读 · 0 评论 -
C++常用函数集合汇总
1.memset() 函数原型: void * memset(void *_Dst,int _Val,size_t _Size); 所在函数库:C++的cstring或C的string.h 栗子:int res[5];memset(res,0,sizeof(res)); 适用题型普遍存在,如CSP2019-1201:报数...原创 2020-05-04 20:51:21 · 761 阅读 · 0 评论 -
C++理论考试复习题
C++练习题及答案(一)C++练习题及答案(二)C++练习题及答案(三)C++练习题及答案(四)C++练习题及答案(五)原创 2020-03-17 12:49:35 · 2264 阅读 · 1 评论 -
第8周笔记7-间隔提取字符串字符
间隔提取字符串字符 将字符数组str1种下标为偶数的元素赋值给另外一个字符数组str2。/*将字符数组str1种下标为偶数的元素赋值给另外一个字符数组str2。*/#include<stdio.h>#define N 100int main(){ char str1[N],str2[N]; scanf("%s",str1); char *p=...原创 2019-10-31 10:42:58 · 524 阅读 · 0 评论 -
第8周笔记6-求解Sn=1-1/2+1/3-1/4+...+1/n
求解Sn=1-1/2+1/3-1/4+...+1/n 设计程序求解Sn=1-1/2+1/3-1/4+...+1/n.其中n=100。/*设计程序求解Sn=1-1/2+1/3-1/4+...+1/n.其中n=100 */ #include<stdio.h>int main(){ int n,i; scanf("%d",&n); float...原创 2019-10-31 10:26:06 · 3250 阅读 · 0 评论 -
第8周笔记5-围圈报数淘汰模拟
围圈报数淘汰模拟 n(n<=100)个人围成一圈按顺序编号,从第一人开始报数,凡报到3的人退出圈子,下一个人从1开始报号,设计算法求解最后推出圈子的成员编号。/*n(n<=100)个人围成一圈按顺序编号,从第一人开始报数,凡报到3的人退出圈子,下一个人从1开始报号,设计算法求解最后推出圈子的成员编号。 */#include<stdio.h>...原创 2019-10-31 10:19:45 · 412 阅读 · 1 评论 -
第8周笔记4-求解n项多项式的值(递归实现)
求解n项多项式的值求解n项多项式的值Pn(x)=1,当n=0 Pn(x)= x,当n=1 Pn(x)=(2*n-1)*Pn-1(x)-(n-1)*Pn-2(x),当n>=2/*求解n项多项式的值 Pn(x)=1,n=0 x,n=1 (2*n-1)*Pn-1(x)-(n-1)*Pn-2(x),n>=2*/#include<stdio.h...原创 2019-10-31 10:09:14 · 423 阅读 · 0 评论 -
第8周笔记3-杨辉三角
杨辉三角 杨辉三角(以10*10为例)/*杨辉三角(以10*10为例) */#include<stdio.h>#define N 11int main(){ int a[N][N],i,j; for(i=1;i<N;i++){ a[i][1]=1; a[i][i]=1; } for(i=3;i<N;i++){ for...原创 2019-10-31 09:58:35 · 142 阅读 · 0 评论 -
第8周笔记2-求2/1、3/2,5/3,8/5....分数序列前n项和
分数序列前n项和 有一分数序列:2/1、3/2,5/3,8/5.....求前n项和。/*有一分数序列:2/1、3/2,5/3.....求前n项和 */#include<stdio.h>int main(){ float a=1,b=2; int i,n; float sum=0; printf("imput n:"); scanf("%d...原创 2019-10-31 09:39:34 · 398 阅读 · 0 评论 -
第8周笔记1-字符串替换
字符串替换 编写一个函数void replace(char *str1,char *str2,int i,int j) 将字符串中str1中的第i个字符开始到j个字符结束的位置替换成str2。/*编写一个函数void replace(char *str1,char *str2,int i,int j) 将字符串中str1中的第i个字符开始到j个字符结束的位置替换成s...原创 2019-10-31 09:17:35 · 376 阅读 · 0 评论 -
第7周笔记2-字符串反序存放
字符串反序存放 编写函数,使得一个字符串按反序存放/*编写函数,使得一个字符串按反序存放 */ #include<stdio.h>#define N 100void Reverse(char *str){ char *p=str,*q=str; while(*q!='\0') q++; q--; while(p<=q){ cha...原创 2019-10-24 08:53:38 · 474 阅读 · 0 评论 -
第7周笔记1-数组比较
数组对应元素比较 数组a和数组b各有n个元素。将他们逐个比较,若a中元素的值大于b对应元素的值的次数大于b大于a的次数,则a大于b,并统计大于等于小于的次数。/*数组a和数组b各有n个元素。将他们逐个比较,若a中元素的值大于b对应元素的值的次数大于b大于a的次数,则a大于b,并统计大于等于小于的次数。 */#include<stdio.h>#de...原创 2019-10-24 08:43:17 · 375 阅读 · 0 评论 -
第6周笔记10-最短时间将正负数排序(快排第一趟)
最短时间将正负数排序 用最短的时间的方法将负数全部排在正数的前面,eg:-1,-2,-1,0,1,3,2 思想:快排第一趟,以0为枢纽。快排具体可以参考下篇:第6周笔记11-快速排序(int)/*用最短的时间的方法将负数全部排在正数的前面,eg:-1,-2,-1,0,1,3,2 */#include<stdio.h>#define ...原创 2019-10-17 11:44:17 · 677 阅读 · 0 评论 -
第6周笔记11-快速排序(int)
快速排序/*快速排序 */#include<stdio.h>#define N 100int arr[N];void quick_sort(int a[],int lower,int higher){ if(lower>=higher) return; //1建立枢纽,快排使枢纽左右有序 int i=lower,j=higher; int key...原创 2019-10-17 11:30:32 · 175 阅读 · 0 评论 -
第6周笔记9-字符串比较
字符串比较 将两个字符串S1、S2进行比较,不用strcmp函数。若S1>S2,则输出一个正数;若S1<S2,则输出一个负数;若S1=S2,则输出0;输出的正数或者负数的绝对值为比较两个字符串相应字符的ascii码值。/*将两个字符串S1、S2进行比较,不用strcmp函数。若S1>S2,则输出一个正数;若S1<S2,则输出一个负数;若S1=...原创 2019-10-17 10:06:39 · 165 阅读 · 0 评论 -
第6周笔记8-字符串连接
字符串连接 将两个字符串连接起来,不用strcat。/*将两个字符串连接起来,不用strcat。 */ #include<stdio.h>#define N 100int main(){ char str1[2*N],str2[N]; scanf("%s%s",str1,str2); char *p=str1,*q=str2; whi...原创 2019-10-17 09:46:45 · 204 阅读 · 0 评论 -
第6周笔记7-电文转换
电文转换 有一行电文,译码规律为a->z,b->y,c->x.即把第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。/* 有一行电文,译码规律为a->z,b->y,c->x.即把第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。 */#include<s...原创 2019-10-17 09:28:25 · 190 阅读 · 0 评论 -
第6周笔记5-文本字符统计
文本字符统计 一篇文本共有3行文字,每行不多于5个字符,要求分别统计出每行的大写字母、小写字母,数字、空格、其他字符的个数。/*一篇文本共有3行文字,每行不多于5个字符,要求分别统计出每行的大写字母、小写字母,数字、空格、其他字符的个数 */#include<stdio.h>#define N 100int main(){ char text[N...原创 2019-10-17 09:03:36 · 252 阅读 · 0 评论 -
第6周笔记4-求3个字符串的最大值
求3个字符串的最大值/*求3个字符串的最大值 */ #include<stdio.h> #include<string.h> #define N 100 int main(){ char str1[N],str2[N],str3[N],tmp[N]; gets(str1); gets(str2); gets(str3); if(s...原创 2019-10-17 09:01:56 · 218 阅读 · 0 评论 -
第6周笔记6-计算鞍点
鞍点在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的临界点,叫做鞍点(Saddle point)。 在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。 在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。二维矩阵鞍点计算 求出一个二维数组的鞍点。鞍点是行上最大,列...原创 2019-10-17 09:00:30 · 711 阅读 · 1 评论 -
第6周笔记2-BeCareful
#include<stdio.h>int f(int *a){ return (*a)++;}int main(){ int a=2; int s=0; int b=5; s+=f(&b); printf("%d",s); s+=f(&a); printf("%d",s); return 0;}原创 2019-10-15 23:23:14 · 109 阅读 · 0 评论 -
第6周笔记1-Break、Continue对比
Break、Continue对比continue结束本次循环(即跳过当前的本次循环) break 结束本层循环(即结束当前循环所在的一个循环体)(如双层循环,break在内层循环,只结束内层循环,不管是while,do...while,for同理)//continue break对比/*continue结束本次循环(即跳过当前的本次循环) break 结束本层循环(即结束当前循...原创 2019-10-15 23:22:02 · 199 阅读 · 0 评论 -
第5周笔记3-三队员匹配
三队员匹配 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为d,e,f三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和d比,c说他不和d,f比,请编程序找出三队赛手的名单./*两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为d,e,f三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和d比,c说他不和d,f比,请编程序...原创 2019-10-10 10:15:36 · 128 阅读 · 0 评论 -
第5周笔记2-斐波拉切数列
斐波那契数列(Fibonacci sequence) 又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。 指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F...原创 2019-10-10 10:04:29 · 458 阅读 · 0 评论 -
第5周笔记1-小球弹回
Problem:一个小球从10m处落下,每次弹回一半,小球静止的时候一共走了多少路程。#include<stdio.h> int main(){ double distance=0; double height=10.0; distance=height; double bound=height/2; while(bound&g...原创 2019-10-10 09:15:07 · 135 阅读 · 0 评论 -
第4周笔记3-最小公倍数
标准输入两个数(n和m),求解两数的最小公倍数穷举法//穷举法#include<stdio.h>int main(){ int n,m,i; scanf("%d%d",&n,&m); if(n<m){ int tmp=m; m=n; n=tmp; } for(i=m;;i++){ if(i%n==0&&i...原创 2019-10-03 11:43:46 · 160 阅读 · 0 评论 -
第4周笔记2-寻找完数
求解从1~20000的所有的完数。所有的真因子(即除了自身以外的约数)之和恰好等于本身的数,则成为完数。 比如:第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。#include<stdio.h>#include<math.h>int main(){ int i;...原创 2019-10-03 11:11:30 · 319 阅读 · 0 评论 -
CCF-CSP201909-2:小明种苹果(续)
#include<iostream>#include<cmath>using namespace std;#define N 1001#define M 1001int tree[N],list[N];bool drop[N];int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ ...原创 2019-10-03 10:28:52 · 517 阅读 · 0 评论 -
CCF-CSP201909-1:小明种苹果
#include<iostream>#include<cmath>using namespace std;#define N 1001#define M 1001int tree[N],res[N],list[N];int main(){ int n,m; cin>>n>>m; int tmp[m+1]; for(int i=...原创 2019-10-03 10:27:35 · 353 阅读 · 0 评论 -
Algorithm:快速排序
#include<iostream>using namespace std;int a[50];void qsort(int s,int e){ if(s<=e){ int x=a[s]; int i=s,j=e; while(i<j){ while(i<j&&a[j]>=x) --j; while(i<j...原创 2019-03-23 23:44:04 · 139 阅读 · 0 评论 -
C++篇:max_element() 和 min_element()
【1】在头文件#include <algorithm>中,返回的是迭代器,所以输出值的话要在前面加*。【2】第三个参数cmp可写可不写,max_element()和min_element()默认是从小到大排列,然后max_element()输出最后一个值,min_element()输出第一个值,但是如果自定义的cmp函数写的是从大到小排列,那么会导致m...转载 2019-03-21 19:57:58 · 640 阅读 · 0 评论
分享