同上一篇博客;

贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里

pat的题也刷了点,acwing 的题也刷了点,基本都攒下了。以后也会慢慢补过来的

这几天都在备战四级,上午司机下午算法,有点忙不过来就一直没写博客,今天打完比赛就想趁热写一下吧,正好昨天也做了22年夏的甲级考试

来说说pat甲级:

第一次做pat甲级考试真题感受,一共4道题须在3个小时内做完,我感觉这真的是时间很充裕了

同时四道题的难度可能也是逐级拉开的,通常甲级前两道题是可以A出来的,对于高手们来讲满分直接轻轻松松,但是或许我甲级题库刷的还不少很多并且很多算法和数据结构有点手生了,就比如二叉树和图论的一些算法就不太会写了。。。。。甚至第三道题建立邻接表的时候我都在想邻接表是怎么写来着???

所以说第一次做就只做了前两道

在经过和队友的讨论和算法构思上把第三道自己不会的题目也是顺利切了,最后一道题是考的完全多叉树的遍历,由于树的知识点还没有开始全面复习就只能等刷完list之后在补了

题目大意:两小儿争辩日期,A小儿和B小儿分别说了三个日期:y(昨天),td(今天),tom(明天,哟,这不快明天了吗),并且这两个小儿说的话每人只有一句真话,确认今天的同时输出today并且输出那两句话为真并且输出他们是y or td or tom;

题目思路:他们两个人每人只有一句话为真,所以我们只要是标记他们的话与1~7的匹配,如果他们匹配次数都是1,就说明他们的话不仅连了起来并且那两句话是真话,

打的string表在标记后输出就可以了;

 1 #include<bits/stdc++.h>//2022 pat 甲级1
2 using namespace std;
3 #define int long long
4 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
5 int a,b,c;
6 int d,e,f;
7 int yes[10]={6,0,1,2,3,4,5};
8 int fut[10]={1,2,3,4,5,6,0};
9 string day[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
10 int cur1;
11 int cur2;
12 int flag1;
13 int flag2;
14 string t[7]={"yesterday","today","tomorrow"};
15 signed main()
16 {
17 IOS;
18 cin>>a>>b>>c>>d>>e>>f;
19 for(int i=0;i<7;i++)
20 {
21 int cur1=0,cur2=0;
22 int flag1=0,flag2=0;
23 if(a==yes[i])
24 {
25 cur1++;
26 flag1=0;
27 }
28 if(b==i)
29 {
30 cur1++;
31 flag1=1;
32 }
33 if(c==fut[i])
34 {
35 cur1++;
36 flag1=2;
37 }
38 if(d==yes[i])
39 {
40 cur2++;
41 flag2=0;
42 }
43 if(e==i)
44 {
45 cur2++;
46 flag2=1;
47 }
48 if(f==fut[i])
49 {
50 cur2++;
51 flag2=2;
52 }
53 if(cur1==1&&cur2==1)
54 {
55 cout<<day[i]<<endl;
56 cout<<t[flag1]<<endl;
57 cout<<t[flag2];
58 return 0;
59 }
60 }
61 return 0;
62 }

题目大意:模拟LRU算法,所谓的LRU算法就是访问页面次数最小的网页会在进来新网页的时候被kick off

面向样例:

6,

可以这样来看(其实上图已经很明确了....)

4 11
1 2 3 1 4 5 2 1 5 6 3

先进来的是1,2,3,1四个网页,并且当前网页1的访问次数是2,所以说当前网页2是LRU状态,在进来网页4,达到满值n,再进来网页5,网页2是LRU状态被开,再进来网页2,网页3是LRU状态被开,再进来网页1,网页4是LRU状态被开并且网页1的访问次数是3,在5,6,3........

那怎么来写代码呢

首先直观感受是用queue了,并且还有一个数组来记录被开的网页和记录网页访问次数的数组,所以说可以酱紫分析:

首先是将每个网页入队,如果没有达到满值状态就记入队并且记录网页访问次数,同时未被访问的网页入队的时候计数器也要加一;

当计数器大于n时候也就是达到满值状态的时候,首先要考虑这个网页没有被访问过的情况

如果它没有被访问过,我们要找的肯定是下一个LRU状态就是按照次序删除访问页最少的网页,所以就每次取队头找最少访问网页,找到以后直接进入记录数组且出队并且减少访问次数(因为已经被弹出了)

参考代码:

 1 #include<bits/stdc++.h>//2022 pat 甲级2
2 using namespace std;
3 #define int long long
4 #define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
5 const int N=1e5+10;
6 //int a[N];
7 //map<int,int>p;
8 int f[N];
9 queue<int>p;
10 vector<int>q;
11 int n,m;
12 int cnt;
13 signed main()
14 {
15 IOS;
16 cin>>n>>m;
17 for(int i=0;i<m;i++)
18 {
19 int a;
20 cin>>a;
21 if(cnt<n)
22 {
23 p.push(a);
24 if(!f[a])
25 cnt++;
26 f[a]++;
27 }
28 else
29 {
30 if(!f[a])
31 {
32 while(f[p.front()]!=1)
33 {
34 f[p.front()]--;
35 p.pop();
36 }
37 q.push_back(p.front());
38 f[p.front()]--;
39 p.pop();
40 }
41 p.push(a);
42 f[a]++;
43 }
44 }
45 for(int i=0;i<q.size();i++)
46 {
47 cout<<q[i];
48 if(i<q.size()-1)
49 cout<<" ";
50 }
51 return 0;
52 }

题目思路:

没采用dfs一是因为怕爆栈,二是因为dfs在处理没有下一个地址的时候的回溯和对于重复走的点的处理有点麻烦了,就选择了模拟dfs

参考代码:

#include<bits/stdc++.h>//pat夏甲级3
using namespace std;
#define int long long
#define IOS ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int N=1e4+10;
vector<int>G[N];
int s[N];
bool vis[1010];
bool f[1010][1010];
int t[1010];
signed main()
{
IOS;
int n,m,k;
cin>>n>>m>>k;
for(int i=0;i<m;i++)
{
int a,b;
cin>>a>>b;
f[a][b]=true;
G[a].push_back(b);
}
while(k--)
{
memset(t,0,sizeof(t));
memset(vis,false,sizeof(vis));
for(int i=0;i<n;i++)
{
cin>>s[i];
t[s[i]]++;
}
bool flag1=true;
for(int i=0;i<n;i++){
if(t[s[i]]!=1)
flag1=false;
}
bool flag2=true;
for(int i=0;i<n;i++)
{
int st=s[i];
int ed=s[i+1];
vis[st]=true;
if(!f[st][ed])
{
for(int j=0;j<G[st].size();j++)
{
int v=G[st][j];
if(!vis[v])
{
flag2=false;
}
}
}
}
if(flag1&&flag2)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}

太困了太困了,有些细节没写,明天再写吧,困死我了

pat甲级考试+pat1051+1056的更多相关文章

  1. 2021.9.12周六PAT甲级考试复盘与总结

    周六PAT甲级考试复盘与总结 先说结论:仍未步入"高手"行列:现在的学习节奏与方法是对的,有十万分的必要坚持下去. 题目 知识点 分数 T1 前缀和.二分 11 / 20 T2 排 ...

  2. 2019年春PAT甲级考试

    这次考试不是很理想,一道题目没能做完. 自己原因差不多三条: 1.自己实力不够,准备时间也有点仓促,自己没能做到每道题目都有清晰的思路. 2.考试的心理素质不行,因为设备原因东奔西跑浪费了挺多时间,自 ...

  3. 2019秋季PAT甲级_备考总结

    2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...

  4. PAT甲级满分有感

    时间轴: 2017年,数据结构加入了我的课程清单. 2018年12月,我从网易云课堂下载了数据结构的所有课程视频(学校里没有网,只能离线看),开始一刷.一刷只看了视频,基本没有做题,看到AVL树的时候 ...

  5. PAT甲级满分攻略|记一次考试经历

    一次考试经历 今天是"大雪",很冷. 来到隔壁的学校考试,记得上一次来河中医是两年前大一刚开学吧,那天晚上印象比较深刻,6个室友骑车到处闲逛.当时还不会Hello world. 很 ...

  6. PAT甲级考前整理(2019年3月备考)之一

       转载请注明出处:https://www.cnblogs.com/jlyg/p/7525244.html 终于在考前,刷完PAT甲级131道题目,不容易!!!每天沉迷在刷题之中而不能超脱,也是一种 ...

  7. PAT甲级题解(慢慢刷中)

    博主欢迎转载,但请给出本文链接,我尊重你,你尊重我,谢谢~http://www.cnblogs.com/chenxiwenruo/p/6102219.html特别不喜欢那些随便转载别人的原创文章又不给 ...

  8. PAT甲级考前整理(2019年3月备考)之三,持续更新中.....

    PAT甲级考前整理一:https://www.cnblogs.com/jlyg/p/7525244.html,主要讲了131题的易错题及坑点 PAT甲级考前整理二:https://www.cnblog ...

  9. PAT甲级题分类汇编——排序

    本文为PAT甲级分类汇编系列文章. 排序题,就是以排序算法为主的题.纯排序,用 std::sort 就能解决的那种,20分都算不上,只能放在乙级,甲级的排序题要么是排序的规则复杂,要么是排完序还要做点 ...

随机推荐

  1. typescript 的安装和检测是否安装成功

    全局安装typescript npm install -g typescript 检查typescript是否安装成功 tsc -v

  2. elementUI 输入框用户名和密码取消自动填充

    <!-- 用户名取消自动填充 autocomplete="off" --> <el-form-item label="用户名" prop=&q ...

  3. 绿色城市智慧运营:Web 3D 垃圾分类 GIS 系统

    前言 感谢所有为上海疫情奉献的人,祈求上海疫情早日清零,中国加油,上海加油! <上海市生活垃圾管理条例>施行至今已有两年多,上海市民践行绿色低碳理念.主动参与生活垃圾分类的习惯基本养成,分 ...

  4. 【Java面试】请说一下Mysql索引的优点和缺点?

    今天分享的这道面试题,让一个工作4年的小伙子去大众点评拿了60W年薪. 这道面试题是: "请你说一下Mysql索引的优点和缺点" 关于这道题,看看普通人和高手的回答 普通人: 嗯. ...

  5. 如何在 Mac 和虚拟机上安装 macOS Big Sur、Monterey 和 Ventura

    请访问原文链接:https://sysin.org/blog/how-to-install-macos/,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 名词解释: 硬件 ...

  6. SSMS设置为深色模式

    更新记录 2022年4月16日:本文迁移自Panda666原博客,原发布时间:2022年2月8日. 2022年4月16日:SSMS很好用,但现在我更多使用DataGrip了. 2022年6月11日:S ...

  7. Leetcode----<Diving Board LCCI>

    题解如下: public class DivingBoardLCCI { /** * 暴力解法,遍历每一种可能性 时间复杂度:O(2*N) * @param shorter * @param long ...

  8. 分布式机器学习:同步并行SGD算法的实现与复杂度分析(PySpark)

    1 分布式机器学习概述 大规模机器学习训练常面临计算量大.训练数据大(单机存不下).模型规模大的问题,对此分布式机器学习是一个很好的解决方案. 1)对于计算量大的问题,分布式多机并行运算可以基本解决. ...

  9. iftop使用

    在linux中监控系统资源.进程.内存占用等信息,可以使用top命令. 查看网络状态可以使用netstat工具. 如果想查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop工具. 一.if ...

  10. Linux 源码编译安装软件

    程序包编译安装的步骤: 源代码-->预处理-->编译-->汇编-->链接-->执行 多文件:文件中的代码之间,很可能存在跨文件依赖关系 1.编译源码的项目工具 使用相关的 ...