同上一篇博客;

贪心题目我已经刷了将近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. 使用pdfcrack & crunch暴力破解PDF密码

    crunch是密码字典生成器,可以根据指定的字符来生成组合密码字典. pdfcrack是Linux下一个PDF暴力破解密工具,可以使用crunch生成的密码字典来暴力破解PDF文件的密码. 注:没有强 ...

  2. 第06组 Alpha冲刺 (1/6)

    1.1 基本情况 队名:守护(发际)线程 组长博客:郝雷明 作业博客:郝雷明 组员人数:10 1.2 冲刺概况汇报 1. 郝雷明(组长) 过去两天完成了哪些任务 学习了微信开发平台的文档内容,熟悉微信 ...

  3. 【小程序自动化Minium】一、框架介绍和环境搭建

    微信小程序自动化测试系列分享 一.Minium 简介 minium 是微信团队为小程序专门开发的自动化框架,我们可以用它来做小程序的UI自动化测试,但是它的能力却不仅仅在于UI自动化. 正是得益于官方 ...

  4. 软件成分分析(SCA)完全指南

    上一篇文章中,我们讨论了 DAST 的概念.重要性及其工作原理.那在开发过程中如何查找开源软件包中的漏洞并学习如何修复?本指南带你一起了解 SCA 工具及其最佳实践. 如今,绝大多数代码驱动的应用程序 ...

  5. 关于vue项目中搜索节流的实现

    我们经常会遇到这种需求,现在我们在使用百度搜索的时候他们的思想也是根据防抖节流而实现的,至于用防抖还是节流根据自己需求. <template> <input type="t ...

  6. [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇

    目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...

  7. 《Java编程思想》学习笔记_多态

    多态 多态指一个行为产生多种状态,针对父类类型可接收其子类类型,最终执行的状态由具体子类确定,其不同子类可呈现出不同状态.例如人[父类]都会跑步[行为],但小孩[子类]跑步.成年人[子类]跑步.运动员 ...

  8. UiPath文本操作Set Text的介绍和使用

    一.Set Text的介绍 向输入框/文本框写入文本的一种操作 二.Set Text在UiPath中的使用 1.打开设计器,在设计库中新建一个Sequence,为序列命名及设置Sequence存放的路 ...

  9. vi与vim使用

    简介 Vi是一个命令行界面下的文本编辑工具(最早1976年由Bill Joy开发,原名ex),vi 支持就大多数操作系统(最早在BSD上发布)并且功能已经十分强大. 1991年Bram Moolena ...

  10. Json多层级动态结构数据解析

    一.工具 (1)GSON Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然. 它是由Google开发的一个开源库. 以下几点说明为什么应该使用这个库 - ...