比赛链接:https://pintia.cn/market/item/1287964475579875328

7-1 对称日

题解

模拟,注意年月日不足位在前面补零。

代码

#include <bits/stdc++.h>
using namespace std; map<string, string> mp{
{"Jan", "1"},
{"Feb", "2"},
{"Mar", "3"},
{"Apr", "4"},
{"May", "5"},
{"Jun", "6"},
{"Jul", "7"},
{"Aug", "8"},
{"Sep", "9"},
{"Oct", "10"},
{"Nov", "11"},
{"Dec", "12"}
}; bool is_palindrome(const string &s) {
string t(s);
reverse(t.begin(), t.end());
return s == t;
} void solve() {
string m, d, y; cin >> m >> d >> y;
d.pop_back();
if (y.size() < 4) y = string(4 - y.size(), '0') + y;
if (m.size() < 2) m = '0' + m;
if (d.size() < 2) d = '0' + d;
string s = y + mp[m] + d;
cout << (is_palindrome(s) ? 'Y' : 'N') << ' ' << s << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

7-2 超标区间

题解

维护一个元素超过阈值的区间,然后以小于阈值的数为分割点。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
int n, t; cin >> n >> t;
int a[n + 1] = {};
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
vector<pair<int, int>> res;
int l = 0, r = 0;
for (int i = 0; i <= n; ++i) {
if (a[i] > t) {
if (a[r] > t) {
r = i;
} else {
l = i;
r = i;
}
} else {
if (a[r] > t) {
res.emplace_back(l, r);
}
l = i;
r = i;
}
}
if (!res.empty()) {
for (auto pr : res)
cout << "[" << pr.first << ", " << pr.second << "]" << "\n";
} else {
cout << *max_element(a, a + n) << "\n";
}
}

7-3 钱串子的加法

题解

将两个数去除前导零后统一为同一长度,模拟相加即可,注意进位。

Tips

这题数据似乎卡得不是很严,像去除前导零和计算两个数的和如果用 $O_{(n)}$ 的  s.erase(s.begin())  和  ans = ch + ans 即使总时间复杂度会达到 $O_{(n^2)}$ 也不会超时。只会比下面 $O_{(n)}$ 的代码慢十倍左右。

代码

#include <bits/stdc++.h>
using namespace std; map<char, int> mp1;
map<int, char> mp2; void init() {
int num = 0;
for (char c : string("0123456789abcdefghijklmnopqrst")) mp1[c] = num++;
for (auto pr : mp1) mp2[pr.second] = pr.first;
} void del_lead_zero(string &s) {
reverse(s.begin(), s.end());
while (s.size() > 1 and s.back() == '0') s.pop_back();
reverse(s.begin(), s.end());
} void sum(string &s1, string &s2) {
del_lead_zero(s1);
del_lead_zero(s2);
if (s1.size() < s2.size()) {
swap(s1, s2);
}
s2 = string(s1.size() - s2.size(), '0') + s2;
bool carry = false;
for (int i = s1.size() - 1; i >= 0; --i) {
int sum = mp1[s1[i]] + mp1[s2[i]] + carry;
s1[i] = mp2[sum % 30];
carry = (sum >= 30);
}
if (carry) s1 = "1" + s1;
} int main() {
init();
string s1, s2; cin >> s1 >> s2;
sum(s1, s2);
cout << s1 << "\n";
}

7-4 全素日

题解

模拟。

代码

#include <bits/stdc++.h>
using namespace std; bool isprime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; ++i)
if (n % i == 0) return false;
return true;
} int main() {
string s; cin >> s;
bool all_prime = true;
for (int i = 0; i < s.size(); ++i) {
string t = s.substr(i);
bool is_prime = isprime(stoi(t));
if (not is_prime) all_prime = false;
cout << t << ' ' << (is ? "Yes" : "No") << "\n";
}
if (all_prime) cout << "All Prime!" << "\n";
}

7-5 裁判机

题解

因为时间复杂度为 $O_{(n^2)}$ 且最多的情况有 $10^4$ 个数,所以不能再用  map 或 set 这类每次操作时间复杂度为 $O_{(log_n)}$ 的容器了,可以使用 $O_{(1)}$ 的散列(数组映射)。

代码

#include <bits/stdc++.h>
using namespace std;
constexpr int N = 1e5 + 100; bool appear[N], sub[N]; int main() {
int t1, t2; cin >> t1 >> t2;
appear[t1] = appear[t2] = true;
sub[abs(t1 - t2)] = true;
int n, m; cin >> n >> m;
int a[n][m] = {};
for (int i = 0; i < n; ++i) {
for (int j = 0; j < m; ++j) {
cin >> a[i][j];
}
}
vector<int> res = {t1, t2};
bool out[n] = {};
for (int j = 0; j < m; ++j) {
for (int i = 0; i < n; ++i) {
if (out[i]) continue;
if (appear[a[i][j]] or !sub[a[i][j]]) {
cout << "Round #" << j + 1 << ": " << i + 1 << " is out.\n";
out[i] = true;
continue;
}
for (auto ele : res) sub[abs(a[i][j] - ele)] = true;
res.push_back(a[i][j]);
appear[a[i][j]] = true;
}
}
if (find(out, out + n, false) - out == n) {
cout << "No winner.";
} else {
cout << "Winner(s):";
for (int i = 0; i < n; ++i)
if (not out[i]) cout << ' ' << i + 1;
}
}

PAT(乙级)2020年春季考试的更多相关文章

  1. PAT(甲级)2017年春季考试

    PAT(甲级)2017年春季考试 A.Raffle for Weibo Followers #include<bits/stdc++.h> using namespace std; int ...

  2. PAT乙级:1094 谷歌的招聘 (20分)

    PAT乙级:1094 谷歌的招聘 (20分) 题干 2004 年 7 月,谷歌在硅谷的 101 号公路边竖立了一块巨大的广告牌(如下图)用于招聘.内容超级简单,就是一个以 .com 结尾的网址,而前面 ...

  3. PAT乙级:1088 三人行 (20分)

    PAT乙级:1088 三人行 (20分) 题干 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整 ...

  4. PAT乙级:1072开学寄语(20分)

    PAT乙级:1072开学寄语(20分) 题干 下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其 QQ,封其电脑,夺其手机,收其 ipad,断其 wifi,使其百无聊赖,然后,净面 ...

  5. PAT乙级:1090危险品装箱(25分)

    PAT乙级:1090危险品装箱(25分) 题干 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清 ...

  6. PAT乙级:1053 住房空置率 (20分)

    PAT乙级:1053 住房空置率 (20分) 题干 在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断.判断方法如下: 在观察期内,若存在超过一半的日子用电量低于某给 ...

  7. PAT乙级:1057 数零壹 (20分)

    PAT乙级:1057 数零壹 (20分) 题干 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一 ...

  8. PAT乙级:1069 微博转发抽奖 (20分)

    PAT乙级:1069 微博转发抽奖 (20分) 题干 小明 PAT 考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔 N 个人就发出一个红包.请你编写程序帮助他确定中奖名单. 输入 ...

  9. PAT乙级:1092 最好吃的月饼 (20分)

    PAT乙级:1092 最好吃的月饼 (20分) 题干 月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风 ...

随机推荐

  1. 【JavaWeb】HTML&CSS 基础

    HTML&CSS 基础 HTML 基础 HTML 标签 HTML标题:HTML 标题(Heading)是通过 h1 - h6 等标签进行定义的. HTML段落: HTML 段落是通过 p 标签 ...

  2. intellij idea2020将javaWeb项目打成war包并部署到阿里云服务器遇到java.lang. UnsupportedClass VersionError问题(已解决)

    首先将javaweb项目打包成war文件(有关如何打包参考 https://jingyan.baidu.com/article/20b68a88642829386cec62f7.html.https: ...

  3. 立完flag,你可能需要对flag进行量化

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

  4. ASP.NET Core错误处理中间件[1]: 呈现错误信息

    NuGet包"Microsoft.AspNetCore.Diagnostics"中提供了几个与异常处理相关的中间件.当ASP.NET Core应用在处理请求过程中出现错误时,我们可 ...

  5. 解压rpm文件

    rpm2cpio zabbix-2.2.2-0.el6.zbx.src.rpm |cpio -div

  6. 【Oracle】从删除的recyclebin中查看并恢复数据

    如果数据库中用了drop删除表,后面没有加上purge的话,会出现在oracle的回收机制中 dba_recyclebin可以查看当前删除的都是哪些 这个只是部分截图,可以看到删除的对象是什么,删除的 ...

  7. kubernets集群的安全防护(下)

    一   集群角色以及集群角色绑定 1.1  前面我们提到过角色以及角色绑定,那么现在为什么会出现集群级别的角色以及角色绑定,作用有如下所示 我们如果需要在所有的命名的空间创建某个角色或者角色绑定的时候 ...

  8. 攻防世界 - Web(三)

    PHP2: 1.进入页面,进行抓包或后台扫描都没有什么发现,然后网上查一波wp,发现是关于.phps文件,进入index.phps,弹出一段代码,查看源代码, <?php if("ad ...

  9. 如何创建一个 PostgreSQL 数据库?

    PostgreSQL 官网截图 PostgreSQL 是什么? PostgreSQL 是一个功能非常强大的,历史悠久,开源的关系数据库.PostgreSQL支持大部分的SQL标准并且提供了很多其他现代 ...

  10. IP2723T中文规格书PDF

    IP2723T 是一款集成多种协议.用于 USB 输出端口的快充协议 IC.支持多种快充协议,包括 USBTypeC DFP,PD2.0/PD3.0/PPS,HVDCPQC4/QC4+/QC3.0/Q ...