码蹄集部分题目(2024OJ赛15期;前缀和+栈+堆+队列)

1🐋🐋🐋门票(钻石;前缀和)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟输入输出格式

🐟样例

🐚样例

🐚备注

🐟题目思路

这道题目乍看就是简单的前缀和+判断区间值而已,但是暴力求解只能拿70分。满分题解是求逆序数+归并排序。至于为什么求逆序数,那是因为,如果该段内都满足条件,那前缀和的值应该是非减的,所以所有可能减去逆序数量就是我们要的答案了。

🌮归并排序知识补充

定义

归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。

算法思路

归并排序算法有两个基本的操作,一个是,也就是把原数组划分成两个子数组的过程。另一个是,它将两个有序数组合并成一个更大的有序数组。

  • 1、将待排序的线性表不断地切分成若干个子表,直到每个子表只包含一个元素,这时,可以认为只包含一个元素的子表是有序表。

  • 2、将子表两两合并,每合并一次,就会产生一个新的且更长的有序表,重复这一步骤,直到最后只剩下一个子表,这个子表就是排好序的线性表。

分治图解

排序图解

算法性能

速度仅次于快速排序。

时间复杂度

O(nlogn)

空间复杂度

O(N),归并排序需要一个与原数组相同长度的数组做辅助来排序。

稳定性

稳定

摘自:排序——归并排序(Merge sort)-CSDN博客

🐟代码

🥪70分暴力求解(超时)

#include<bits/stdc++.h> 
​
using namespace std;
int a[1000010],sum[1000010];
const int N=1e9+7;
int main( )
{int n,t;cin>>n>>t;long long count=0;for(int i=0;i<n;i++) cin>>a[i];for(int i=0;i<n;i++) sum[i]=sum[i-1]+a[i];for(int i=0;i<n;i++){for(int j=i;j<n;j++){int cn=j-i+1;if((sum[j]-sum[i-1])/cn>=t) count++;}}count=count%N;cout<<count<<endl;return 0;
}

🥪100分逆序数+归并排序

#include<bits/stdc++.h> 
​
using namespace std;
const int MOD=1e9+7;
const int N=1e6+10;
#define ll long long
ll n,t,a[N],sum[N],ans;//ans记录逆序子序列数量
ll q[N];//归并排序的结果数组
void merge_sort(int l,int r)
{if(l>=r) return;//递归停止条件//分int mid=(l+r)/2;merge_sort(l,mid);//划分成子任务并分别递归调用归并排序算法merge_sort(mid+1,r);//归并算法本体int i=l,j=mid+1,t=0;//i和j分别是左右两部分的指针,t是结果数组当前要放位置的下标while(i<=mid&&j<=r){if(sum[i]>sum[j])//结果数组先放小的那个,也就是j那里的{q[t++]=sum[j++];ans+=mid-i+1;//对于每一部分来说,前边的分治任务都已经将这一部分排好序了,所以i~mid和j~r这两部分都已经是升序排列,如果i那里的比j这里的大,那么i+1~mid的一定比j这里的大,所以求逆序数直接减就可以了ans%=MOD;}else q[t++]=sum[i++];//否则就放i那里的,这时不计逆序数}//这时i或j某一边提前结束的情况,另一边直接全部移到结果数组while(i<=mid) q[t++]=sum[i++];while(j<=r) q[t++]=sum[j++];for(i=l,j=0;i<=r;i++,j++) sum[i]=q[j];//最后更新一下sum数组,因为每次都是基于sum计算的
}
int main( )
{cin>>n>>t;long long count=0;for(int i=1;i<=n;i++){cin>>a[i];a[i]-=t;//根据公式,平均值大于等于t,也就是求和大于等于nt,所以每次直接在a[i]中就减去t,这样只要区间和大于等于0就满足条件sum[i]=sum[i-1]+a[i];} merge_sort(0,n);//归并排序cout<<(n*(n+1)/2-ans)%MOD<<endl;//所有可能子序列数减去ans数量并取模return 0;
}

2🐋🐋🐋逆波兰式(星耀;栈)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟输入输出格式

🐟样例

🐚样例

🐚备注

🐟题目思路

这道题目还是用栈进行算式运算,只用两个栈就可以实现结果输出那种样子,一个是st存放结果字符串成员,一个是op临时存放操作符。数字直接放入st,操作符在遇到以下情况时要从op拿出放到st:

  • 当前为“)”,需要将op中的小括号前的所有操作符放入st,最后别忘了把“(”也pop掉

  • 当前运算符比op.top( )的优先级低或同级,要将op.top( )的放入st,目的是保证运算顺序,包括同级从左到右运算的顺序

到这里第一步就结束了,接下来就是正常的calculate函数运算了,多的就是遇到运算符时进行运算后需要cout出来当前运算结果情况

🐟代码

#include<bits/stdc++.h> 
#include<string>
using namespace std;
​
bool is_op(char c){ return c =='/'||c=='+'||c=='-'||c=='*';}
​
int priority(char op){if(op == '+'|| op == '-')  return 1;if(op == '*' || op == '/')  return 2;return -1;
}
void calculate(string s){stack<int> st;bool change = false;for(int i=0;i<s.length(); i++){if(is_op(s[i])){int r= st.top();st.pop();int l= st.top();st.pop();switch(s[i]){//这里不知道为什么改成if语句就报错case '+':st.push(l + r);break;case '-':st.push(l-r);break;case '*':st.push(l * r);break;case '/':st.push(l /r);break;}change = true;} elsest.push(s[i]-'0'),change = false;if(change){stack<int> temp, temp2;temp = st;//反转顺序到temp2中while (!temp.empty())temp2.push(temp.top()), temp.pop();//对temp2中的成员进行输出while (!temp2.empty())cout << temp2.top()<<" ",temp2.pop();for(int j=i+1;j<s.length(); j++)cout << s[j] << " ";cout << endl;}}
}
​
string work(string s){ stack<char> st;//结果stack<char> op;//操作符栈for(int i=0;i<s.size();i++){if(s[i]=='('){op.push('(');}else if(s[i]==')'){while (op.top()!='('){st.push(op.top());op.pop();}op.pop();}else if(is_op(s[i])){while(!op.empty() && priority(op.top())>= priority(s[i])){st.push(op.top());op.pop();}op.push(s[i]);} else {st.push(s[i]);}}while(!op.empty()){st.push(op.top());op.pop();}string ans;int len = st.size();while(len--){ans =st.top()+ ans;st.pop();}return ans;
}
​
int main( )
{string s;cin >> s;string s2=work(s);for(int i=0;i<s2.length(); i++)cout << s2[i] <<" ";cout << endl;calculate(s2);return 0;
}

3🐋🐋🐋新月轩就餐(钻石;双端队列)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟输入输出格式

🐟样例

🐚样例

🐚备注

🐟题目思路

这道题目因为涉及到顺序不变问题,所以使用deque双端队列,目的是方便改变区间的首尾。

具体详见代码注释~

🌮deque vs priority_queue

这里主要对比的是双端队列deque和最大/小堆priority_queue,二者有以下不同:

  • 端口进出:deque双端都可进出;priorty_queue只有一端可进出

  • 排序:deque中的元素无法排序,只是queue加上一端可操作而已;priority_queue中的元素是要进行排序的,每次top的是最大/小值

  • 使用的函数:deque用的是front和back;priority_queue用的是top(这一点只是提醒一下,不要用错了)

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
const int N=1e6+7;
const int INF=0x3f3f3f;
deque<int> q;
int ans=INF;
int n,m,a[N],cnt[2001],l,r,type;
int main( )
{cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];if(!cnt[a[i]]) type++;//该类型还没有记录过,记一下cnt[a[i]]++;//标记为记录过了q.push_back(i);//当前位置入队列while(!q.empty()&&cnt[a[q.front()]]>1) //这是在判断,如果头上的元素在当前区间内还有,那么头上这个就可以去掉了,这样就能得到更小的区间了{cnt[a[q.front()]]--;q.pop_front();}if(type==m&&q.size()<ans) //所有类型都有了,并且比当前记录的最短区间长度还要短,就更新{ans=q.size();l=q.front();r=q.back();}}cout<<l<<" "<<r<<endl;return 0;
}

4🐋🐋🐋植发(星耀;堆)

时间限制:2秒

占用内存64M

🐟题目描述

🐟输入输出格式

🐟样例

🐟题目思路

这个重点在于怎么安排头发的放置顺序和放在哪里:

  • 先放寿命最小的点,因为寿命小的点所能到达的位置,寿命大的都能到达

  • 先放到离出发点最近的位置,这样可以给另一个出发点的头发更多的放置机会

🐟代码

#include<bits/stdc++.h> 
​
using namespace std;
const int N=1e4+10;
struct node
{int x,y;int dis;bool operator<(const node &a) const {return dis<a.dis;}
};
int a1[N],a2[N],n,m,k,l;//a1a2存储了不同寿命的头发都有多少根
bool used[N][N];
vector<pair<int,int> > s1[N],s2[N];//s1s2存储的是不同距离下有哪些点,s1是与(0,0)的距离,s2是与(0,m+1)的距离
priority_queue<node> down,up;
int distance(int x1,int y1,int x2,int y2) {return abs(x1-x2)+abs(y1-y2);}
int main( )
{cin>>n>>m;cin>>k;//获得(0,0)处的头发寿命for(int i=0;i<k;i++){int cur;cin>>cur;a1[cur]++;//(0,0)处寿命为cur的头发数加一}cin>>l;//获得(0,m+1)处的头发寿命for(int i=0;i<l;i++){int cur;cin>>cur;a2[cur]++;//(0,m+1)处寿命为cur的头发数加一}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)//记录每个距离都有哪些位置{s1[distance(i,j,0,0)].push_back({i,j});//记录与(0,0)的距离s2[distance(i,j,0,m+1)].push_back({i,j});//记录与(0,m+1)的距离}//如果有多个点和(0,0)或(0,m+1)距离相同,就会被都放进去}int flag=0;//先看与(0,0)的距离for(int i=1;i<=n+m;i++)//遍历所有n+m个距离{for(int j=0;j<s1[i].size();j++)//对于指定的距离,遍历满足这些距离的所有点的坐标,把符合的点放到队列里{int x=s1[i][j].first,y=s1[i][j].second;int tmp=distance(x,y,0,m+1);down.push({x,y,tmp});//因为使用的是最大堆,要想距离(0,0)最近,就是按距离(0,m+1)的距离排序得到与之的最大距离}for(int j=0;j<a1[i];j++)//来放(0,0)的每一根头发,遍历距离为i的所有头发{if(down.empty())//从(0,0)出发距离为i处没有能放的头发了{flag=1;break;}int tmpx=down.top().x,tmpy=down.top().y;//得到在(0,0)处拿到的与(0,m+1)距离最大的坐标down.pop();used[tmpx][tmpy]=1;//这个位置被放上头发了}if(flag==1) break;}//再看离(0,m+1)的距离,下边与上方同理for(int i=1;i<=n+m;i++){for(int j=0;j<s2[i].size();j++){int x=s2[i][j].first,y=s2[i][j].second;if(used[x][y]==1) continue;node tmp;tmp.dis=distance(x,y,0,0),tmp.x=x,tmp.y=y;up.push(tmp);}for(int j=0;j<a2[i];j++){if(up.empty()){flag=1;break;}int tmpx=up.top().x,tmpy=up.top().y;up.pop();used[tmpx][tmpy]=1;}if(flag==1) break;}if(flag==0) cout<<"YES"<<endl;else cout<<"NO"<<endl;return 0;
}

5🐋🐋🐋第一节离数课后(星耀;栈)

时间限制:0.5秒

占用内存:64M

🐟题目描述

🐟输入输出格式

🐟样例

🐚样例

🐚备注

🐟题目思路

这道题目也是使用栈进行表达式运算。重点是检查出有无非法表达的情况。

非法表达情况:

  • 开头或结尾不能是and或not:以为她们是双目运算符,不能只有一个成员参与运算

  • not后边只能跟not或操作数

  • 我们将not及其后边的操作数看作一个整体,那么操作数和运算符应该是一一间隔的,如 a and b or c

🐟代码

#include <bits/stdc++.h>
using namespace std;
const int N = 267;
string s[N];
int cnt, s2[N];
​
bool is_op(string s) {return s=="or"||s=="and"||s=="not";}
​
int priority(string op)
{if(op=="or") return 1;if(op=="and") return 2;if(op=="not") return 3;return -1;
}
​
void calculate(stack<string> &st, string op)
{//取出两个操作数(没有两个就取一个)string l, r;r = st.top();st.pop();if (!st.empty()) l = st.top();//计算if (op == "not"){if (r == "true") st.push("false");//not true即为falseelse st.push("true");//not false即为true}if (op == "and"){st.pop();if (r == "true" && l == "true") st.push("true");else st.push("false");}if (op == "or"){st.pop();if (r == "false" && l == "false") st.push("false");else st.push("true");}
}
​
string work(string *s, int cnt)
{stack<string> st;//操作数栈stack<string> op;//运算符栈for (int i = 0; i < cnt; i++){if (is_op(s[i])){string cur = s[i];if (cur != "not")while (!op.empty() && priority(op.top()) >= priority(cur)){calculate(st, op.top());op.pop();}op.push(cur);//先把优先级高的计算完再放进去这个运算符}else//是操作数{st.push(s[i]);while (!op.empty() && op.top() == "not"){calculate(st, op.top());op.pop();}}}while (!op.empty()){calculate(st, op.top());op.pop();}return st.top();
}
​
bool check(string *s, int cnt)//检查是否error
{bool flag = true;if (s[0]=="or"||s[0]=="and"||s[cnt-1]=="or"||s[cnt-1]=="and"||s[cnt-1]=="not")//1首尾为双目运算符;2尾为not(即not后边没有跟操作数)。这些都是error的情况{flag = false;return flag;}for (int i = 0; i < cnt; i++)//剩下需要遍历所有的内容检查not的正确性{if (s[i] == "not" && (s[i + 1] == "or" || s[i + 1] == "and"))//not后边紧跟运算符{flag = false;return flag;}}int cnt2 = 0;for (int i = 0; i < cnt; i++){if (s[i] == "or" || s[i] == "and")s2[cnt2++] = 1;else if (s[i] == "true" || s[i] == "false")s2[cnt2++] = 0;if (cnt2 >= 2 && (s2[cnt2 - 2] ^ 1) != s2[cnt2 - 1])//说明有两个运算符或操作数连在一起,如果是1010/0101,那么等式会相等{flag = false;return flag;}}return flag;
}
​
int main()
{while(cin >>s[cnt]) cnt++;if (!check(s,cnt)){cout << "error";return 0;}cout << work(s, cnt);return 0;
}

6🐋🐋🐋二阶前缀和(黄金;前缀和)

时间限制:1秒

占用内存:128M

🐟题目描述

🐟输入输出格式

🐟样例

🐚样例

🐚备注

🐟题目思路

二维矩阵前缀和的典型模板题,题目不难,只要看懂要干什么就好写很多,总结一下题目要点:

  • 整个过程类似卷积的过程,就是拿着一个边长为r的正方形覆盖过整个矩形的所有位置,每次移动的距离为1

具体解题过程详见代码注释~

🐟代码

#include<bits/stdc++.h> 
using namespace std;
const int N=1010;
int a[N][N], sum[N][N], ans;
​
int main( )
{// 录入数组内容的同时构建二维前缀和int n,r;cin>>n>>r;while(n--){int x,y,w;cin>>x>>y>>w;x++,y++;a[x][y] += w;}// 计算二维前缀和for(int i=1;i<=1001;i++){for(int j=1;j<=1001;j++)  sum[i][j]+=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];}        // 寻找指定范围的最大子阵,每次都是以(i,j)为右下角画正方形for(int i=r;i<=1001;i++){for(int j=r;j<=1001;j++) ans=max(ans,sum[i][j]-sum[i-r][j]-sum[i][j-r]+sum[i-r][j-r]); }// 输出结果 cout<<ans<<endl;return 0;
}

有问题我们随时评论区见~

⭐点赞收藏不迷路~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker和containerd的区别

docker和containerd的区别 1、容器运行时 1.1 容器运行时概念 容器运行时&#xff08;Container Runtime&#xff09;是一种负责在操作系统层面创建和管理容器的软件工具或组件。它是容器化技术的核心组件之一&#xff0c;用于在容器内部运行应用程序&#xff0c;并提供隔离…

ORACLE 资源管理参数与等待事件resmgr:cpu quantum

RESOURCE_MANAGER_PLAN 先来看下参数的含义 官网链接&#xff1a;RESOURCE_MANAGER_PLAN (oracle.com) 意思翻译过来这个参数用于资源计划。后边的看完也不是很明白具体的作用 于是参考了以下文章 Oracle 参数 RESOURCE_MANAGER_PLAN 官方解释&#xff0c;作用&#xff0c;…

Steam致富:玩免费游戏Banana获得可交易道具

最近&#xff0c;Steam平台上一款普普通通的免费游戏《Banana》引起了轰动&#xff0c;接近2万人同时在线&#xff0c;好评率高达94&#xff05;&#xff0c;究竟是什么让这款游戏如此受欢迎呢&#xff1f;原来&#xff0c;玩家们都在争相获取稀有的香蕉。 《Banana》属于点击放…

C++初阶学习第十弹——探索STL奥秘(五)——深入讲解vector的迭代器失效问题

vector&#xff08;上&#xff09;&#xff1a;C初阶学习第八弹——探索STL奥秘&#xff08;三&#xff09;——深入刨析vector的使用-CSDN博客 vector&#xff08;中&#xff09;&#xff1a;C初阶学习第九弹——探索STL奥秘&#xff08;四&#xff09;——vector的深层挖掘和…

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传

1.1什么是反序列化 就是把一个对象变成可以传输的字符串&#xff0c;目的就是为了方便传输。假设&#xff0c;我们写了一个class&#xff0c;这个class里面存有一些变量。当这个class被实例化了之后&#xff0c;在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…

CentOS-9配置静态IP地址

查看配置命令nmcli CentOS 9 使用 nmcli 命令行工具进行网络配置。以下是配置静态 IP 地址的步骤和示例代码&#xff1a;相对以前centos7之类的&#xff0c;9版本的默认的网络是NetworkManager&#xff0c;网络配置也有较大改变 nmcli con show用vim进行编辑配文件 cd /etc/…

JavaScript基础(九)

冒泡排序 用例子比较好理解: var arry[7,2,6,3,4,1,8]; //拿出第一位数7和后面依次比较&#xff0c;遇到大的8就换位&#xff0c;8再与后面依次比较&#xff0c;没有能和8换位的数&#xff0c;再从下一位2依次与下面的数比较。 console.log(排列之前&#xff1a;arry); for (…

开源大模型与闭源大模型:技术哲学的较量

目录 前言一、 开源大模型的优势1. 社区支持与合作1.1 全球协作网络1.2 快速迭代与创新1.3 共享最佳实践 2. 透明性与可信赖性2.1 审计与验证2.2 减少偏见与错误2.3 安全性提升 3. 低成本与易访问性3.1 降低研发成本3.2 易于定制化3.3 教育资源丰富 4. 促进标准化5. 推动技术进…

自养号测评是什么?亚马逊产品评价的全新策略

1、什么是亚马逊测评&#xff1a; 亚马逊测评&#xff0c;简而言之&#xff0c;是基于亚马逊购物平台的一种特定活动。他的核心在于模拟国外消费者的购物行为&#xff0c;并在完成购买后&#xff0c;对所获得的产品进行真实、中肯的评价。这种测评不仅为消费者提供了购物参考&…

微软开发者大会,Copilot Agents发布,掀起新一轮生产力革命!

把AI融入生产力工具的未来会是什么样&#xff1f;微软今天给出了蓝图。 今天凌晨&#xff0c;微软召开了Microsoft Build 2024 开发者大会&#xff0c;同前两天的Google I/O开发者大会一样&#xff0c;本次大会的核心词还是“AI”&#xff0c;其中最主要的内容是最新的Copilot…

成都爱尔胡建斌院长提醒近视超过600度,记得每年检查眼底!

高度近视是指近视度数在600度及以上的一种屈光不正的状态。 近视的眼睛必定是变形的。在正常情况下&#xff0c;人的眼球类似球体&#xff0c;但随着近视加深&#xff0c;眼轴变长&#xff0c;眼球体积逐渐增大&#xff0c;整个眼球从圆球型向椭圆球形发展&#xff0c;而眼球壁…

Linux:top命令的每一列的具体含义

Linux&#xff1a;top命令的每一列的具体含义 文章目录 Linux&#xff1a;top命令的每一列的具体含义图片显示top命令的概念语法显示字段的含义顶部字段第二行第三行第四行第五行每列字段的含义 图片显示 top命令的概念 top命令上一个常用的Linux命令行工具&#xff0c;用于实…

php部分特性漏洞学习

php部分函数漏洞学习 简单总结一些我遇到的ctf中的php的一些函数或特性的漏洞&#xff0c;我刷题还是太少了&#xff0c;所以很多例子来自ctfshow&#xff0c;以后遇到相关赛题再更新 1.MD5和其他hash 弱类型比较 php中&#xff0c;有两中判断相等的符号&#xff0c;和&…

位运算符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 位运算符是把数字看作二进制数来进行计算的&#xff0c;因此&#xff0c;需要先将要执行运算的数据转换为二进制&#xff0c;然后才能进行执行运算。…

[建堆堆排序的时间复杂度推导]向上建堆向下建堆堆排序的时间复杂度分析推导

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到动画详解数据结构系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭…

hypermesh二次开发tcl脚本

hypermesh二次开发tcl脚本 1、tcl读csv文件,得到list,再转成二维数组2、tcl写csv文件3、hypermesh tcl根据读入的节点坐标建节点, 再显示节点号4、hypermesh tcl根据节点号建节点set5、hypermesh tcl根据节点set读取节点号&#xff0c;再根据节点号读取节点坐标&#xff0c;再将…

深度学习之Pytorch框架垃圾分类智能识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着城市化进程的加快和人们环保意识的提高&#xff0c;垃圾分类已成为城市管理的重要一环。然而&am…

成本管控:如何利用 SOLIDWORKS Costing 高效估算成本?

现在全球材料短缺、生活成本上升以及能源价格上涨而导致的成本上升问题突显。 生产产品需要的成本以及如何让产品的成本下降就成为很多的企业越来越关注的问题。 SOLIDWORKS Costing是集成到 SOLIDWORKS Professional 和 Premium 中的一款允许用户和制造商估算产品生产成本的工…

判定字符是否唯一

题目链接 判定字符是否唯一 题目描述 注意点 0 < len(s) < 100s[i]仅包含小写字母 解答思路 首先想到的是使用数组存储字母是否出现过&#xff0c;如果多次出现则直接返回false为了不适用额外的数据结构&#xff0c;可以使用位运算判定字符是否唯一&#xff0c;思路…

Wpf 使用 Prism 实战开发Day22

客户端添加IDialogService 弹窗服务 在首页点击添加备忘录或待办事项按钮的时候&#xff0c;希望有一个弹窗&#xff0c;进行相对应的内容添加操作。 一.在Views文件夹中&#xff0c;再创建一个Dialog 文件夹&#xff0c;用于放置备忘录和待办事项的弹窗界面。 1.1 备忘录&…