首页 > 其他分享 >ACM预备队-week3(线性表)

ACM预备队-week3(线性表)

时间:2022-11-14 10:47:14浏览次数:80  
标签:case 线性表 int top ACM break pop && week3

1.寄存柜

题目链接:P3613 【深基15.例2】寄包柜 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

二维map学到了   stl大法好

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 map<int,map<int,int>>a;
 4 int main()
 5 {
 6     int n,q;
 7     int x,i,j,k;
 8     scanf("%d%d",&n,&q);
 9     while(q--)
10     {
11         scanf("%d%d%d",&x,&i,&j);
12         if(x==1)
13         {
14             scanf("%d",&k);
15             a[i][j]=k;//在第i个柜子里第j个格子里存放k值
16         }
17         else
18         {
19             printf("%d\n",a[i][j]);
20         }
21     }
22     return 0;
23 }

2.括号序列

题目链接:P1241 括号序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int a[110];
 4 int main()
 5 {
 6     string s;
 7     cin>>s;
 8     int i,j;
 9     for(i=0;i<s.length();i++)
10     {
11         if(s[i]==')')
12         {
13             for(j=i-1;j>=0;j--)
14             {
15                 if(s[j]=='('&&a[j]==0)
16                 {
17                     a[i]=a[j]=1;//标记
18                     break;
19                 }
20                 else if(s[j]=='['&&a[j]==0)break;//匹配失败
21             }
22         }
23         else if(s[i]==']')
24         {
25             for(j=i-1;j>=0;j--)
26             {
27                 if(s[j]=='['&&a[j]==0)
28                 {
29                     a[i]=a[j]=1;
30                     break;
31                 }
32                 else if(s[j]=='('&&a[j]==0)break;//匹配失败
33             }
34         }
35     }
36     for(i=0;i<s.length();i++)
37     {
38         if(a[i]==0)
39         {
40             if(s[i]=='('||s[i]==')')cout<<"()";
41             else cout<<"[]";
42         }
43         else cout<<s[i];
44     }
45     return 0;
46 }

3.后缀表达式

题目链接:P1449 后缀表达式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 1 //模拟栈
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 stack<int>s;
 5 int x,y,n;
 6 char c;
 7 int main()
 8 {
 9     while( cin>>c &&c!='@')
10     {
11         switch(c)
12         {
13             case '+':x=s.top();s.pop();y=s.top();s.pop();s.push(x+y);break;
14             case '-':x=s.top();s.pop();y=s.top();s.pop();s.push(y-x);break;
15             case '*':x=s.top();s.pop();y=s.top();s.pop();s.push(x*y);break;
16             case '/':x=s.top();s.pop();y=s.top();s.pop();s.push(y/x);break;
17             case '.':s.push(n);n=0;break;
18             default :n=n*10+c-'0';break;
19         }
20     }
21     cout<<s.top();
22     return 0;
23 }

4.队列安排(双向链表)

题目链接:P1160 队列安排 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e5+10;
 4 int l[N],r[N];
 5 int n,m;
 6 void init()
 7 {
 8     r[0]=1;
 9     l[1]=0;
10     r[1]=-1;
11 }
12 
13 int main()
14 {
15     cin>>n;
16     init();
17     for(int i=2;i<=n;i++)
18     {
19         int k,p;
20         cin>>k>>p;
21         if(p==1)
22         {
23             l[i]=k;
24             l[r[k]]=i;
25             r[i]=r[k];
26             r[k]=i;
27         }
28         else
29         {
30             r[i]=k;
31             r[l[k]]=i;
32             l[i]=l[k];
33             l[k]=i;
34         }
35     }
36     //开始remove
37     cin>>m;
38     for(int i=1;i<=m;i++)
39     {
40         int x;
41         cin>>x;
42         if(r[x]==-1&&l[x]==-1)continue;
43         r[l[x]]=r[x];
44         l[r[x]]=l[x];
45         r[x]=-1;
46         l[x]=-1;
47     }
48     for(int i=r[0];i!=-1;i=r[i])
49     {
50         cout<<i<<' ';
51     }
52     return 0;
53 }

 

标签:case,线性表,int,top,ACM,break,pop,&&,week3
From: https://www.cnblogs.com/Zac-saodiseng/p/16888266.html

相关文章

  • ACM-ICPC World Finals 2022 L Where Am I? 题解
    题目链接我们要干的事情其实是对于输入矩阵中的每个位置,求出从它开始至少走几步形成的序列能跟所有位置走同样步数形成的序列不同。注意到每个位置至少走\(200^2\)步就能......
  • ACM-ICPC World Finals 2022 L Where Am I? 题解
    题目链接我们要干的事情其实是对于输入矩阵中的每个位置,求出从它开始至少走几步形成的序列能跟所有位置走同样步数形成的序列不同。注意到每个位置至少走\(200^2\)步就能......
  • 函数递归+线性表
    今日学习了函数的递归,递归指的是函数重复引用自身,为了避免栈溢出,应设置合适的限制条件。下面将今天做的练习进行整理:练习1:接收一个整型值,按照顺序打印他的每一位#include<st......
  • 第三章 线性表
    一、线性表定义线性表:零个或多个数据元素的有限序列。(零个的时候是空表)线性表的特性是:除了第一个元素(只有后继)和最后一个元素(只有前驱),每个元素都只有一个前驱和后继。二、线......
  • 数据结构:线性表
    线性表分类区别​顺序表一般是使用数组存储的,存储空间是连续的;​链式表一般是使用指针,将一个个结点联系起来。结点有数据域和指针域,数据域用来存储数据,指针域用......
  • 输入n组测试数据(1<=n<=10),每组数据中第一行输入一个整数m,表示下行有m个数据输入,判断每
    输入:一行输入一个整数n接下去每组数据中,第一个输入整数m下一行输入m个整数输出:输出每组大于6000的数的个数#include<stdio.h>main(){intn,m,i,j,a,s=0;scanf("......
  • 数据结构学习笔记——线性表
    参考书目:《王道论坛之数据结构联考复习指导》在学习数据结构部分时对线性表的结构特别困惑,所以总结了笔记,并分享出来,特别是蓝色和红色字体。转载请注明出处。 重点难点:一、......
  • 1 线性表
    1.线性表(list):零个或多个数据元素的有限序列2.线性表的顺序存储结构优点:(1)无须为表示表中元素之间的逻辑关系而增加额外存储空间;(2)可快速存取表中任一位置元素缺点:(1)......
  • 数据结构之线性表的顺序表示和实现1
    #defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2typedefintStatus;typedefcharElemType;//一些数据......
  • 线性表_顺序表简单实现
    #include<stdlib.h>#include<stdio.h>#include<stdbool.h>#defineElementTypeint#defineMAXSIZE100#defineERROR-1typedefintPosition;typedefstruc......