学习目录1

  • 第一期 (2022/07/11~2022/07/16)
    • Day 1:复习——**STL、二叉堆、二维费用背包**
      • `Morning`——STL复习
        • [T1. 车站铁轨](http://222.180.160.110:1024/contest/2643/problem/1)
        • 理解与感悟
        • [T2. 简单计算器](http://222.180.160.110:1024/contest/2643/problem/2)
        • 理解与感悟
        • [T3. 括号平衡](http://222.180.160.110:1024/contest/2643/problem/3)
        • 理解与感悟
        • [T4. 卡片游戏](http://222.180.160.110:1024/contest/2643/problem/4)
        • 理解与感悟
        • [T5. 队列及其操作](http://222.180.160.110:1024/contest/2643/problem/5)
        • 理解与感悟
        • [T6. 机器翻译](http://222.180.160.110:1024/contest/2643/problem/6)
        • 理解与感悟
        • [T7. 公交换乘](http://222.180.160.110:1024/contest/2643/problem/7)
        • 理解与感悟
        • [T8. 合并果子](http://222.180.160.110:1024/contest/2643/problem/8)
        • 理解与感悟
        • [T9. 简单计算器(单组数据)](http://222.180.160.110:1024/contest/2643/problem/9)
        • 理解与感悟
        • [T10. 看病](http://222.180.160.110:1024/contest/2643/problem/10)
        • 理解与感悟
        • [T11. 查字典](http://222.180.160.110:1024/contest/2643/problem/11)
        • 理解与感悟
        • [T12. Let the Balloon Rise](http://222.180.160.110:1024/contest/2643/problem/12)
        • 理解与感悟
        • [T13. Blah 数集](http://222.180.160.110:1024/contest/2643/problem/13)
        • 理解与感悟
        • [T14. 去重](http://222.180.160.110:1024/contest/2643/problem/14)
        • 理解与感悟
        • [T15. 发牌者](http://222.180.160.110:1024/contest/2643/problem/15)
        • 理解与感悟
      • `Afternoon`——STL、二位费用背包、搜索测试
        • 考试“游记”
        • 题目总结
          • [T16. 性格公交车(bus.cpp)](http://222.180.160.110:1024/contest/2629/problem/1)
          • 理解与感悟
    • Day 2:复习——**线性DP、背包DP、区间DP**
    • Day 3:新知——**并查集**
      • `Morning`——并查集新课学习
        • 学习笔记
          • 一、概念
          • 二、基本操作
          • 三、并查集优化1——路径压缩
          • 四、并查集优化2——按秩合并(启发式合并)
          • 五、带权并查集(边带权并查集)
          • 六、种类并查集(扩展域并查集)
      • `Morning & Afternoon`——并查集题目练习
        • [T41. 亲戚(relation)](http://222.180.160.110:1024/contest/2630/problem/1)
        • 理解与感悟
        • [T42. 打击犯罪(black)](http://222.180.160.110:1024/contest/2630/problem/2)
        • 理解与感悟
        • [T43. 银河英雄传说](http://222.180.160.110:1024/contest/2630/problem/3)
        • 理解与感悟
        • [T44. 食物链](http://222.180.160.110:1024/contest/2630/problem/4)
        • 理解与感悟
        • [T45. 格子游戏](http://222.180.160.110:1024/contest/2630/problem/5)
        • [T46. 团伙(group)](http://222.180.160.110:1024/contest/2630/problem/6)
        • 理解与感悟
        • [T47. 搭配购买(buy)](http://222.180.160.110:1024/contest/2630/problem/7)
        • [T48. 家谱(gen)](http://222.180.160.110:1024/contest/2630/problem/8)
    • Day 4:练习——**并查集**
      • `Morning & Afternoon`——并查集题目练习
        • [T49. 犯罪集团](http://222.180.160.110:1024/contest/2631/problem/1)
        • 理解与感悟
        • [T50. 老旧的桥](http://222.180.160.110:1024/contest/2631/problem/2)
        • [T51. 造船](http://222.180.160.110:1024/contest/2631/problem/3)
        • [T52. 关押罪犯](http://222.180.160.110:1024/contest/2631/problem/4)
        • [T53. 明辨是非](http://222.180.160.110:1024/contest/2631/problem/5)
        • [T54. 箱子](http://222.180.160.110:1024/contest/2631/problem/6)
        • [T55. 亲戚](http://222.180.160.110:1024/contest/2631/problem/7)
        • [T56. 程序自动分析](http://222.180.160.110:1024/contest/2631/problem/8)
      • `Evening`——资源分配DP题目练习
        • [T57. 调度问题](http://222.180.160.110:1024/contest/2702/problem/1)
        • 理解与感悟
    • Day 5:新知——**树状数组**
      • `Morning`——树状数组新课学习
        • 学习笔记
          • 一、概念
          • 二、问题的提出
          • 三、解决办法
          • 四、离散化
      • `Afternoon`——并查集复习测试
        • 考试“游记”
        • 题目总结
          • [T72. 葡萄酒](http://222.180.160.110:1024/contest/2704/problem/1)
          • 理解与感悟
          • [T73. 雾山五行](http://222.180.160.110:1024/contest/2704/problem/2)
          • 理解与感悟
          • [T74. 龙珠](http://222.180.160.110:1024/contest/2704/problem/3)
          • 理解与感悟
          • [T75. 教练](http://222.180.160.110:1024/contest/2704/problem/4)
          • 理解与感悟
    • Day 6:练习——**树状数组**

2022暑初二信息竞赛学习成果分享系列

上一篇 这一篇 下一篇
2022暑初二信息竞赛学习成果分享1 2022暑初二信息竞赛学习成果分享2

第一期 (2022/07/11~2022/07/16)

Day 1:复习——STL、二叉堆、二维费用背包

Morning——STL复习

新的一天从#include <cstdio>开始。 ——C2024XSC249

T1. 车站铁轨

题目描述
有 nnn 节车厢从 A 方向驶入车站,按进站顺序编号为 1...n1...n1...n。

你的任务是让他们按照某中特定的顺序进入 B 方向的铁轨并驶出车站。为了重组车厢,你可以借助中转站 C。这是一个可以停放任意多节车厢的车站,但由于末端封顶,驶入 C 的车厢必须按照相反的顺序驶出 C。对于每个车厢,一旦从 A 移入 C,就不能再回到 A 了;一旦从 C 移入 B,就不能回到 C 了。换句话说,在任意时刻,只有两种选择:A->C 和 C->B。

现在需要你写一个程序,判断给定的 B 方向驶出车站的车箱顺序是否可行,若不可行输出 no;若可行则输出 yes,并输出要能得到这个出站顺序,中转站 C 至少需要几个存放车厢的位置。

输入格式
第 111 行一个整数 nnn,表示有 nnn 节车厢;
第 222 行 nnn 个整数,是 1...n1...n1...n 的排列,表示 B 方向驶出的车厢顺序。

输出格式
若 B 方向出站车厢顺序不可行输出 no,若可行,则输出 yes,并在第二行输出中转站至少要提供车厢位置数。

样例
输入样例

5
1 2 3 4 5

输出样例

yes
1

数据范围与提示
n≤10000n \le 10000n≤10000

理解与感悟

一看这个火车轨道,就想到栈。

栈中先存1...n1...n1...n的排列。每枚举到一个放一个即可。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <stack>
using namespace std;int main () {int n, x, a[10005], step = 1, ans = 1;//a数组表示放车的顺序,step表示现在正在放的车的编号。stack <int> s;scanf ("%d", &n);for (int i = 1; i <= n; i ++) {scanf ("%d", &a[i]);}for (int i = 1; i <= n; i ++) {s.push (i);ans = max (ans, (int) s.size());while (s.size()) {if (s.top() == a[step]) {//可以放车就popstep ++;s.pop();} else {break;}}}if (s.size()) {//输出,注意yes后还要写ans。printf ("no");} else {printf ("yes\n");printf ("%d", ans);}return 0;
}

T2. 简单计算器

题目描述
读入一个只包含+、-、*、/、的非负整数计算表达式,计算该表达式的值。

输入格式
测试数据有多组,每组占一行。

每行不超过200个字符,整数和运算符之间用一个空格分隔。

没有非法表达式。

当一行中只有一个0时,表示输入结束,相应的结果不要输出。

输出格式
对于每组测试数据输出一行,即该表达式的值,精确到小数点后两位。

样例
输入样例

30 / 90 - 26 + 97 - 5 - 6 - 13 / 88 * 6 + 51 / 29 + 79 * 87 + 57 * 92
0

输出样例

12178.21

理解与感悟

也是用栈进行模拟。

由于输入当中含空格,所以要注意过滤空格。

先输入第一个数和第一个空格。

如果第一个数是000且不是空格,就表示输入结束,结束程序。

否则,就每一次已符号+' '+数+' '的格式进行输入:

  • 如果符号为+,直接压入栈;
  • 如果符号为-,将相反数压入栈;
  • 如果符号为*或/,则将栈顶元素取出,乘除操作后再压入。

每行操作完后,栈中的元素相当于原式的代数和,最后累加这些代数和即可。

代码

#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
#include <cstring>
#include <stack>
using namespace std;stack <double> s;
double a, p;
char b, k;int main () {while (scanf ("%lf", &a) == 1) {//第一个数+' 'k = getchar ();if (a == 0 && k != ' ') {break;}s.push(a);while (~scanf ("%c%lf", &b, &a)) {//符号+' '+数+' 'k = getchar ();if (b == '*') {p = s.top() * a;s.pop();s.push(p);} else if (b == '/') {p = s.top() / a;s.pop();s.push(p);} else {if (b == '-') {a = -a;}s.push(a);}if (k != ' ') {break;}}double ans = 0;while (s.size()) {//累加ans += s.top();s.pop();}printf ("%.2lf\n", ans);}return 0;
}

T3. 括号平衡

题目描述
在本题中,题目会先给你一个包含小括号()及中括号[]的字串。当字串符合下列条件时我们称它为正确的运算式:

  1. 该字串为一个空字串。

  2. 如果 A 和 B 都为正确的运算式,则 AB 也为正确的运算式。

  3. 如果 A 为正确的运算式,则 (A) 及 [A] 都为正确的运算式。

现在,请你写一支程序可以读入这类字串并检查它们是否为正确的运算式。字串的长度不超过 128128128。

输入格式
第一行为正整数 nnn,代表接下来有 nnn 个字符串。

接下来的 nnn 行,每行是一个仅含小括号和大括号的字符串(长度不大于100001000010000)。

输出格式
针对每个输入的括号字符串,如果是正确的运算式,则输出 Yes,否则输出 No

样例
输入样例

4
([])
(([()])))
([()[]()])()
([)]

输出样例

Yes
No
Yes
No

数据范围与提示
1≤n≤1001 \leq n \leq 1001≤n≤100

理解与感悟

还是用栈进行模拟。

  • 如果输入的字符能与栈顶字符匹配,则pop
  • 否则压进栈。

若最后栈内没有元素,输出Yes
否则输出No

代码

#include <cstdio>
#include <stack>
#include <algorithm>
#include <cstring>
using namespace std;int n, len;
stack <char> s;
char a[10005];bool match (char a, char b) {return (a == '(' && b == ')') || (a == '[' && b == ']');
}int main () {scanf ("%d", &n);while (n --) {scanf ("%s", a);len = strlen (a);for (int i = 0; i < len; i ++) {if (s.size() && match (s.top(), a[i])) {//可以匹配,pops.pop();} else {s.push(a[i]);}}if (s.size()) {//还有东西,输出Noprintf ("No\n");while (s.size()) { s.pop(); }//清空栈,为下一个数据做准备} else {printf ("Yes\n");}}return 0;
}

T4. 卡片游戏

题目描述
桌子上有一叠牌,从第一张牌(即位于顶面的牌)开始从上到下依次编号为 1...n1...n1...n,当至少还剩下两张牌时进行以下操作:把第一张扔掉,然后把新的一张放到整叠牌的最后。
输入 nnn,输出每次扔掉的牌,以及最后剩下的牌。

输入格式
第一行是一个整数nnn 。

输出格式
一行 nnn 个整数,按顺序输出扔掉的 n−1n-1n−1 张牌的序号和最后剩牌的序号。

样例
输入样例

7

输出样例

1 3 5 7 4 2 6

数据范围与提示
n≤20000n \le 20000n≤20000

理解与感悟

按照题目要求用栈模拟即可。

  • 先输入并取出。
  • 在把这时顶上的加在后面去,并删除。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;queue <int> q;
int n;int main () {scanf ("%d", &n);for (int i = 1; i <= n; i ++) {q.push(i);}while (q.size() >= 2) {printf ("%d ", q.front());q.pop();q.push(q.front());q.pop();}printf ("%d", q.front());return 0;
}

T5. 队列及其操作

题目描述
队列(queue):在线性表的一端插入元素,在另一端删除元素,所以遵循先进先出( FIFO)原则,元素从队尾进,队首出,不允许插队!

其中删除元素的一端称为队首(front),插入元素的一端称为队尾(rear)。

队列就像我们排队打饭,先来的先打饭,后来的只能排在队尾。

输入格式
第1行包含一个整数 nnn,表示有 nnn 条关于 queue 的操作,在进行任何操作之前,queue 都是空的。接来的 nnn 行,每行是一个关于 queue 的操作,格式和含义如下:
clear:把队列置空。

empty:判断队列是否为空。

push:把整数 xxx 插入队尾(xxx 为 int 范围里的数)。

pop: 队首元素出队列。

front:获取队首元素的值。

输出格式
对于 front 操作,输出一个整数,如果这个操作失败,则输出单词 error

对于 pop 操作,如果这个操作失败,则输出单词 error

对于 empty 操作,如果队列是空,则输出 empty,否则输出 not empty

样例
输入样例

8
push 10
front
push 15
pop
front
clear
front
pop

输出样例

10
15
error
error

数据范围与提示

n≤20000n \le 20000n≤20000

理解与感悟

按照题目的相应方式调用queue中的成员函数即可。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;queue <int> q;
int n, k;
char str[15];int main () {scanf ("%d", &n);for (int i = 1; i <= n; i ++) {scanf ("%s", str);if (strcmp (str, "push") == 0) {scanf ("%d", &k);q.push(k);} else if (strcmp (str, "pop") == 0) {if (q.size() == 0) {printf ("error\n");} else {q.pop();}} else if (strcmp (str, "front") == 0) {if (q.size() == 0) {printf ("error\n");} else {printf ("%d\n", q.front());}} else if (strcmp (str, "empty") == 0) {if (q.empty()) {printf ("empty\n");} else {printf ("not empty\n");}} else if (strcmp (str, "clear") == 0) {while (q.size()) {q.pop();}}}return 0;
}

T6. 机器翻译

题目描述
小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。

假设内存中有 MMM 个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过 M−1M-1M−1 ,软件会将新单词存入一个未使用的内存单元;若内存中已存入 MMM 个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。

假设一篇英语文章的长度为 NNN 个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。

输入格式
输入共 222 行。每行中两个数之间用一个空格隔开。

第一行为两个正整数 MMM 和 NNN,代表内存容量和文章的长度。

第二行为 NNN 个非负整数,按照文章的顺序,每个数(大小不超过 1,0001,0001,000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

输出格式
输出共 111 行,包含一个整数,为软件需要查词典的次数。

样例
样例输入 1

3 7
1 2 1 5 4 4 1

样例输出 1

5

样例 1 说明
整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:

空:内存初始状态为空。

  1. 1:查找单词 111 并调入内存;
  2. 1 2:查找单词 222 并调入内存;
  3. 1 2:在内存中找到单词 111 ;
  4. 1 2 5:查找单词 555 并调入内存;
  5. 2 5 4 :查找单词 444 并调入内存替代单词111 ;
  6. 2 5 4:在内存中找到单词 444;
  7. 5 4 1:查找单词 111 并调入内存替代单词 222;
    共计查了 555 次词典。

样例输入 2

2 10
8 824 11 78 11 78 11 78 8 264

样例输出 2

6

数据范围与提示
对于 10%10\%10% 的数据有 M=1M=1M=1,N≤5N \le 5N≤5;
对于 100%100\%100% 的数据有 0≤M≤1000 \le M \le 1000≤M≤100,0≤N≤10000 \le N \le 10000≤N≤1000。

理解与感悟

用队列进行模拟,可以用map进行映射,也可以用一个bool数组来标记。

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <map>
using namespace std;queue <int> q;
map <int, bool> mp;//second==1,队列中有first元素int m, n, x, ans;int main () {scanf ("%d %d", &m, &n);for (int i = 1; i <= n; i ++) {scanf ("%d", &x);if (mp[x] == false) {mp[x] = true;q.push(x);if (q.size() > m) {//空间爆了,向前递补。mp[q.front()] = false;q.pop();}ans ++;}}printf ("%d", ans);return 0;
}

T7. 公交换乘

题目描述

著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案:

在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车。在有效期内指 开始乘公交车的时间与开始乘地铁的时间之差小于等于 45 分钟,即:tbus−tsubway≤45t_{bus}-t_{subway} \le 45tbus​−tsubway​≤45

搭乘地铁获得的优惠票可以累积,即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。

搭乘公交车时,如果可以使用优惠票一定会使用优惠票;如果有多张优惠票满足条件,则优先消耗获得最早的优惠票。

现在你得到了小轩最近的公共交通出行记录,你能帮他算算他的花费吗?

输入格式

输入文件的第一行包含一个正整数 nnn,代表乘车记录的数量。

接下来的 nnn 行,每行包含 3 个整数,相邻两数之间以一个空格分隔。第 iii 行的 第 1 个整数代表第

2022暑初二信息竞赛学习成果分享1相关推荐

  1. 2022暑初二信息竞赛学习成果分享2

    学习目录2 第二期 (2022/07/17~2022/07/23) Day 7:复习&测试--**树状数组** `Morning`--树状数组复习测试 考试"游记" 题目总 ...

  2. 学大伟业:2019年数学竞赛学习经验分享

    学习是一个持之以恒的过程,需要不断探索.不断前行.在这路上,我认为最重要的是学习心态.每个人都不可避免地会遇到自己的学习困难,产生消极的想法.有区分度的是能否及时调整好自己,再重新投入到学习中去.身处 ...

  3. 为什么学习信息学竞赛 信息学奥赛学习规划 信息竞赛如何高效刷题

    OI 教育漫谈(一):为什么学习信息学竞赛 OI 教育漫谈(一):为什么学习信息学竞赛 [NOI2022]PV「什么是信息学精神?」 [NOI2022]PV「什么是信息学精神?」-CSDN博客 少儿 ...

  4. 【算法竞赛学习】学术前沿趋势-作者信息关联

    任务5:作者信息关联 5.1 任务说明 学习主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系: 学习内容:构建作者关系图,挖掘作者关系 学习成果:论文作者知识图谱.图关系 ...

  5. 英语学习经验分享(四六级、竞赛、口语)

    英语学习经验分享(四六级.竞赛.口语) 什么时候开始下决心好好学英语的,自己又经历了哪些苦逼事儿??? Listening Speaking 英语竞赛有哪些需要参加??? 全国大学生英语竞赛 河南省翻 ...

  6. 学术交流 | InForSec 2023年网络空间安全国际学术研究成果分享及青年学者论坛

    隐私计算研习社 InForSec定于2023年4月8日-9日(周六.日)在南方科技大学举办"InForSec 2023年网络空间安全国际学术研究成果分享及青年学者论坛".本次学术活 ...

  7. 2022年双非计算机保研经历分享(浙大、北航、中科院等)

    2022年双非计算机保研经历分享(浙大.北航.中科院等) 1.个人情况 本科院校:湖北某不知名双非 专业:网络工程 排名:1/90 (专业和综测排名) 英语:CET4-536,CET6-464 竞赛: ...

  8. 2022级东南大学935计算机考研经验分享

    2022级东南大学935计算机考研经验分享 个人情况 政治 英语 数学 专业课 复试 总结 个人情况 我报考的是东南大学计算机科学与工程学院的电子信息计算机技术方向(专硕),初试总分396,排名第二. ...

  9. 港科招生 | 香港科大DBA(工商管理博士)项目介绍和科研成果分享

    香港科大DBA(工商管理博士) 项目介绍和科研成果分享 科技会减少我们对官方数据的依赖吗? 在追求卓越研究和创新思维的抱负下,香港科技大学商学院延续其 30 年的卓越历史,坚定不移地致力于学术独创性和 ...

最新文章

  1. 世界上第一台电子计算机到底是谁发明的?
  2. 2020-11-28(不定参数的函数)
  3. Windows环境下手动更新boot2docker.iso
  4. 一些简单的例子让你在Java中能更好的学习并理解循环结构(1)!
  5. 第四十四篇 面向对象高阶
  6. mysql使用innodb需要注意的情况
  7. 《深入理解Linux内核》笔记1:内存寻址
  8. Systemd基础篇:systemd vs SysVinit
  9. 嵌入式linux开发实战——项目1认识嵌入式系统
  10. 魔兽争霸lostTemple地图
  11. C++字符串常量总结(包含表达式必须是可修改的左值问题)
  12. 全网详解如何设计数据库的ER图,即实体关系图
  13. 经典的二叉树的先根、中根和后根遍历序列题
  14. 大脑神经中枢分布图结构,大脑神经网络结构图片
  15. OpenGL with QtWidgets:练习之扑克翻转
  16. 微信小程序动态获取和设置元素宽高
  17. VS coda C++、python运行与Dbug配置
  18. 微型计算机代表性机型,微型计算机原理及应用技术
  19. 视频教程-JavaScript从入门到精通2016版教学视频-JavaScript
  20. CAD电气工程图教程之布局方法和设计规则

热门文章

  1. ouc2022移动软件开发 实验二:天气查询小程序
  2. CSDN贴子: rundl132.exe和logo1_.exe病毒如何清除
  3. css 揭秘-读书笔记
  4. Lock锁与synchronized锁的区别
  5. 企业文档服务器,企业如何进行文档的规范管理
  6. 公司做一个网站的流程是什么?需要准备些什么呢?
  7. edward_mj退役经验帖(浙大final队员-陈伟杰)
  8. Logistic Loss函数
  9. 城市地下综合管廊建设管理模式及其关键策略研究
  10. comsol圆柱形永磁体_几组特殊形状永磁体的磁场及梯度COMSOL分析