数据结构
大一下
qqqcp3
0.0
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SCAU 18730 涂色问题
ans = 总方案 - 不发疯的方案要在求幂过程中取模#include<iostream>#include<cstdio>#include<algorithm>using namespace std;#define mod 1000000007long long pow(long long x,long long y){ if(y==1) { return x%mod; } long long half=po原创 2021-05-11 15:25:17 · 251 阅读 · 0 评论 -
SCAU 18725 宇宙跃迁
这个是搜到的二分做法 顺便附上我的不知道哪里错了的做法 大家有兴趣看着乐呵乐呵就行(大家写题还是按照oj上的标签方法写吧)#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;/*在基地的科学家发明“透镜”之后,宇宙航行变得更加效率。作为基地元首的的代理人,你需要在K天内乘坐飞船到达首都川陀。飞船可以花费一天转载 2021-04-28 17:11:38 · 441 阅读 · 1 评论 -
SCAU 18935 贪吃的小Q
#include<malloc.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<math.h>#include<queue>using namespace std;int n,m;int sum(int s){ int sum1=0; int i=0; for(i=0;原创 2021-04-27 13:57:03 · 239 阅读 · 1 评论 -
SCAU 18726 查找最接近的元素
虽然知道顺序会超时,但是我还是试了一下-。-#include<malloc.h>#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<math.h>#include<queue>using namespace std;int erfen(int x,int a[],int n){ int lo原创 2021-04-27 12:54:14 · 186 阅读 · 0 评论 -
SCAU 18722 稀疏矩阵的运算
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct node{ int a,b,c;//横 纵 数据}data[25038];bool paixu(struct node s,struct node d){ if(s.a==d.a) { return s.b<d.b;//x相等按y从小到大 }原创 2021-04-23 17:07:10 · 585 阅读 · 0 评论 -
18959待修改
#include<malloc.h>#include#include#include#include#include<math.h>#includeusing namespace std;int main(){char tree[10000];char s[10][10000];gets(tree);int t=0;int len=strlen(tree);int cengshu=log(len)/log(2)+1;for(int i=1;i<=原创 2021-04-21 12:54:11 · 141 阅读 · 0 评论 -
18724 二叉树的遍历运算
Description二叉树的三种遍历都可以通过递归实现。如果我们知道一棵二叉树的先序和中序序列,可以用递归的方法求后序遍历序列。输入格式两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。思路:先序的第一个结点为树的根节点,中序确定了左右子树,然后递归遍历输出结点。#include<iostream>#include<cstring>using namespace std;char pre[1000];ch转载 2021-04-13 13:41:59 · 472 阅读 · 2 评论 -
SCAU 18930 逛街
这题的思路是用单调栈,栈里储存的是能看到的楼栋高度。用两个栈储存当前位置向左看向右看的楼栋,两个栈的大小+1(当前位置的楼)即为答案附上大佬的简洁代码#include <iostream>#include <vector>#include <stack>#include <algorithm>using namespace std;vector<int> a, b;stack<int> st1, st2; int转载 2021-04-11 20:40:02 · 159 阅读 · 0 评论 -
SCAU 18931 分形
#include <iostream>#include <cmath>#include <cstring>using namespace std;char c[1000][1000];int main(){ int n; c[0][0] = 'X'; for(int len = 1;len <= pow(3,5);len *= 3){ for(int i = 0;i < len;i++){原创 2021-04-09 21:00:17 · 402 阅读 · 0 评论 -
小易爱回文
#include <iostream>#include <algorithm>#include <string>using namespace std;int main(){ string s; cin>>s; int i; int len= s.size(); for(i=0;i<len;i++) { string temp=s; reverse(temp.beg原创 2021-04-08 13:39:05 · 268 阅读 · 0 评论 -
SCAU 18964 蛇形方阵
Description给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。从左上角填上 1 开始,顺时针方向依次填入数字。如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。输入格式一个整数n。输出格式n对应的蛇形方阵。输入样例4输出样例1 2 3 412 13 14 511 16 15 610 9 8 7//顺时针方向:右下左上代码如下#include<iostream>#include<stdio.h>原创 2021-04-04 15:51:24 · 464 阅读 · 0 评论 -
SCAU 18942 偏爱字母
Description小美喜欢字母E,讨厌字母F。在小美生日时,小团送了小美一个仅包含字母E和F的字符串,小美想从中选出一个包含字母E数量与字母F数量之差最大的子串。*子串:从字符串前面连续删去若干个字符,从后面连续删去若干个字符剩下的字符串(也可以一个都不删),例如abcab是fabcab的子串,而不是abcad的子串。我们将空串看作所有字符串的子串。输入格式第一行一个正整数n表示字符串的长度。第二行长度为n,且仅包含大写字母’E’,’F’的字符串(不含引号)输出格式输出一个整数,表示最大原创 2021-04-03 16:10:34 · 557 阅读 · 0 评论 -
SCAU 18939 最长单词
#include #include using namespace std;char a[550],b[510],Max[510];int main(){gets(a);int len=strlen(a);int k=0,mm=0;for (int i = 0; i < len;i++) {if(a[i]’ '||a[i]’.’){b[k]=’\0’;//在末尾加上\0if(mm<k){//k等于长度strcpy(Max,b);mm=k;//找到最大长度}k=0;.原创 2021-04-02 23:04:38 · 465 阅读 · 0 评论 -
SCAU 18712 递归实现组合————DFS
#include<iostream>#include<cstdio>using namespace std;int book[12];int box[12];int n,k;void dfs(int step){ if(step==k+1) { for(int i=1;i<=k;i++) { printf("%d ",box[i]); } printf("\n"原创 2021-04-01 14:43:06 · 209 阅读 · 0 评论 -
SCAU 18928 递归实现全排列(字典序)
//递归回溯 具体思路见下图但是这样输出的并不是字典序,为解决该问题,我在每次交换前加入排序函数,排序交换的位,具体大家可以代数写写。代码如下#include <iostream>#include <algorithm>using namespace std;int n;int x[10];void display(int *x){ for (int i = 0 ; i < n ; i ++) cout<<x[i] ;原创 2021-04-01 13:27:04 · 293 阅读 · 0 评论 -
SCAU 18718 航行————DFS
DFS#include <iostream>#include <algorithm>#include <cstdio>using namespace std;/*帝国首都为起点(坐标0),基地为终点(坐标L),在这条航线上有N个空间站可以补充飞船的能源。第i个空间站的坐标为ai,飞船停靠在第i个空间站必须花费bi个银河币,同时让你的飞船能量恢复为最大值M。出发前飞船的能量是满额的M,每一点能量都可以让飞船航行一个坐标单位。现在你已经通过募捐(榨篇)获得了原创 2021-03-31 19:59:49 · 307 阅读 · 0 评论 -
KMP算法个人笔记
计算next函数值算法4.3中定义了i与j,j指向了前缀末尾,i指向了后缀末尾,起始时,i=1,j=0在此算法中,next数组的值被定义为最长相等前后缀的值+1由于字符串首元素储存字符串长度,所以当j=0时,i j同时向前移动,并记录next[0]=0,事实上第一个元素没有前后缀,next值不存在。当i j指向的对应元素相等时,i j同时向后移,并记录此时next值,而next值计算代码为next[i]=j实际上如果不先i++ j++的话, j的数值等于最长相等前后缀的值,这里的算法是进行了调整原创 2021-03-30 14:27:00 · 109 阅读 · 0 评论 -
迷宫问题(最短路径)————BFS
迷宫是一个n*m的矩阵,玩家需要迷宫入口(坐标1,1)出发,寻找路径走到出口(n,m)。请判断玩家能否从迷宫中走出,如果能走出迷宫输出,输出最短的路径长度,否则输出-1。输入格式第一行两个整数n和m,代表n行m列。(1<=n,m<=10)下面n行每行m个字符,0代表可以通行,1代表不可以通行。输出格式如果能从迷宫走出,输出最短的路径长度,否则输出-1。输入样例8 800100010001000100000110001110000000100000100010001原创 2021-03-28 19:32:24 · 3965 阅读 · 0 评论 -
SCAU 18932 出栈序列合法性判定
//思路参考自LEETCODE@acvv_itdef 即下图231`#include #include using namespace std;stack s;int a[20000],b[20000];int main(){int n;cin>>n;int flag =0;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n;i++){cin>>b[i];}int i=0,j.原创 2021-03-27 15:20:02 · 681 阅读 · 0 评论 -
SCAU 18933 括号匹配问题
//用while(scanf("%s",s)!=EOF){}过不了 Oj不知道原因#include <iostream>using namespace std; int main() { string s; while(scanf("%s",s)!=EOF) { int len=s.length(); for(int i=0; i<len; i++) { for(int j=i-1; j>=0; j-原创 2021-03-26 20:43:00 · 504 阅读 · 2 评论 -
SCAU 18938 汉诺塔问题
//不一样的地方就是这道题最终是要移到b上//解决汉诺塔问题的关键是把最下面的盘子当作一个整体,把剩下的盘子当作另一个整体//代码如下#include <stdio.h>#include <string.h>int m=0;void hanoi(int n,char a,char b,char c){ if(n==1) printf("%c->1->%c\n",a,b); else { hanoi(n-1,a,c,原创 2021-03-26 16:55:09 · 1915 阅读 · 0 评论 -
SCAU 8588 表达式求值
大家可以参考这个大佬//不过有几点需要更改一下//根据题目是按空格中止 所以计算结果函数中的while应该以CH==’='为终止条件//还有就是最后主函数修改一下转载 2021-03-25 14:54:06 · 350 阅读 · 0 评论 -
8585 栈的应用——进制转换
//只放主函数了 不然审核过不了#include<stdlib.h>#include<stdio.h>#define OK 1#define ERROR 0#define STACK_INIT_SIZE 100 // 存储空间初始分配量#define STACKINCREMENT 10 // 存储空间分配增量int main(){ SqStack S; InitStack(S); int n; scanf("%d",&原创 2021-03-23 16:59:14 · 177 阅读 · 0 评论 -
SCAU 18925 试卷排序(双向链表)
18925 试卷排序(双向链表)Description老师要将N张试卷重新排序,每张试卷都有编号为1∼N,采取如下的方法:先将编号1的试卷放进队列,剩下从第2张到第N张依次放入队列,放入的时候老师会把编号i的试卷插入到编号为x试卷之前或之后(x<i),在老师完成这N-1次操作之后,请输出试卷序列的最终编号。输入格式第1行为一个正整数N,表示了有N张试卷。第2-N行,第i行包含两个整数x,p,其中x为小于i的正整数,p为0或者1。若p为0,则表示将第编号为i的试卷放入编号为x试卷的左边原创 2021-03-21 10:42:02 · 645 阅读 · 0 评论 -
SCAU 18770 差值最大
// 依旧是i左最小i右最大相减的思路 唯一坑点是最后相减时i不能相等#include<stdio.h>#define max(a,b) a>b?a:b#define min(a,b) a<b?a:blong long maxt[1000005],mint[1000005],ans;long long a[1000005];int main(){ int n; scanf("%d",&n); mint[0]=1234567890; maxt[n+1].原创 2021-03-20 17:45:47 · 835 阅读 · 0 评论 -
SCAU 18708 最大子段和
```//动态规划```javascript#include <stdio.h>int main(){ int N; scanf("%d",&N); int a[N]; for(int i=1;i<=N;i++) scanf("%d",&a[i]); long long maxa=-10001; int sum[200000]; for(int i=1;i<=N;i++) { if原创 2021-03-20 16:06:50 · 282 阅读 · 0 评论 -
SCAU 18709 魔法
```// 思路:以某个元素为分界线,将该元素前的2改为1,该元素及其后的1改为2//方法1超时#include <stdio.h>int main(){ int n; scanf("%d",&n); int a[n]; int i,j=1; int cnt[n]; for(i=0;i<n;i++) cnt[i]=0; for(i=0;i<n;i++) scanf("%d",&a原创 2021-03-19 14:43:06 · 544 阅读 · 0 评论 -
SCAU 18927 前缀和
前缀和是一种重要的预处理方法,能极大地降低查询序列区间和的时间复杂度。现在一个序列中有n个整数,下标从1…n。有m个查询,每个查询给出一个区间的左右端点下标,请输出这个区间所有数据的和。输入格式第一行一个整数n。(1<=n<=100000)第二行n个整数,用空格分隔,int范围。第三行一个整数m。(1<=m<=100000)下面m行每行两个整数L,R。(1<=L<=R<=n)输出格式输出共m行,每行一个整数为对应区间[L,R]的序列和。注意序列和原创 2021-03-18 20:04:28 · 1213 阅读 · 1 评论 -
SCAU 18710 统计不同数字的个数(升级版)
由键盘输入n个整数,统计不同数字的个数(0<=n<=200000)#include <stdio.h>int book[200001];int main (){ int n; scanf("%d",&n); int num; for(int i=0;i<n;i++) { scanf("%d",&num); book[num]=1; } int cnt=0; f原创 2021-03-17 21:04:42 · 1101 阅读 · 2 评论 -
SCAU 18711 字符串去重
Description一个完全由小写字母组成的长度为n的字符串,现在要求你去除所有重复的字母,并将剩下的字母按从小到大的次序输出。如输入baaadccaab,输出abcd。输入格式第一行一个整数n,表示字符串长度(0<=n<=100000)。第二行一个字符串。输出格式去除所有重复的字母,并将剩下的字母按从小到大的次序输出。输入样例10baaadccaab输出样例abcd放代码://思路:由于全为小写,只需记录26字母每个字母是否出现,然后输出// 一个值得注意的小原创 2021-03-17 20:45:11 · 1556 阅读 · 0 评论
分享