欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2020.06.06【NOIP普及组】模拟赛C组37

程序员文章站 2022-06-11 08:53:57
...

题外话

这一次的考试,我的心态不太好,
第一题因没有看懂而心态崩了,
一直休息到10:20才开始继续做题,
而最后在重新通读了第一题之后,
终于AC了T1

所以,往后我要吸取教训,沉下心来,认真对待每一场考试!!!

回归正题

先来看看一位大佬的解题思路:
2020.06.06【NOIP普及组】模拟赛C组37

T1: 打牌

题目描述

有A、B两个玩家玩打牌游戏: 

    ●一共有2N张牌,每张牌上数字不同,从12N(1<=N<=100);

    ●每个玩家有N张牌;

    ●每个玩家按照以下规则轮流出牌也可能不出:

        ⅰ:第一个玩家先打出一张牌;

        ⅱ:每次玩家出的牌必须比另一个玩家刚刚出的牌要大;

        ⅲ:如果有牌可以出就一定要出;

        ⅳ:如果玩家没有牌可以出就不出,这种情况下由刚才的玩家继续出牌;

    ●当某个玩家手上没牌时游戏结束;

    ●每个玩家获得的分数为对手剩下的牌数;

    ●最重要的一点是每个玩家必须在可出的牌中找一个最小的来出!

A先出牌,写一个程序计算A,B两个人的得分。

输入输出格式

输入
第1行一个整数N;
2-N+1行每行一个数字为玩家A的牌。

输出
输出包含两行,分别玩家A和B的分数。

此乃样例

输入样例15
1
7
9
6
10

输出样例13
0


输入样例210   
8 
7 
14 
18 
4 
11 
3 
17 
5 
19 

输出样例22 
0  

难度:★★

方法:模拟

易错点:A和B拿的牌不一样!!!

题解

实际分数:AC

T2:寻找星座

题目描述

题目描述
现在你在一张卫星图片中寻找星座,已知该星座在图片中正好出现一次,而且形状一样,方向一样,大小也一样。注意图片中可能有一些与该星座无关的星星。

例如图1中的星座出现在图2的卫星图片中(用圆圈标识部分)。图1中给定的星座需要在X轴上平移2个单位同时在y轴上平移-3个单位才能与卫星图片中的卫星正好吻合。 写一个程序,计算给定星座的星星需要在X和Y方向上分别平移多少单位才能与卫星图片吻合。

2020.06.06【NOIP普及组】模拟赛C组37

输入输出格式

输入
第1行:一个整数M,表示需要寻找的星座中星星的数量; 

第2..M+1行:每行两个用空格隔开的整数表示这M个星星的坐标; 

第M+2行:一个整数N,表示卫星图片中星星的数量。

第M+3..M+N+2行:每行两个整数表示图片中星星的坐标。 
注意:星座和卫星图片中任意两个星星都不重叠;1<=M<=200,1<=N<=1000,X,Y坐标值范围为0..1000000。

输出
输出一行,两个用空格隔开的整数dx,dy,表示需要在X,Y方向上平移的单位。

样例在此

样例输入15
8 5
6 4
4 3
7 10
0 10
10
10 5
2 7
9 7
8 10
10 2
1 2
8 1
6 7
6 0
0 9

样例输出12 -3


样例输入25
904207 809784
845370 244806
499091 59863
638406 182509
435076 362268
10
757559 866424
114810 239537
519926 989458
461089 424480
674361 448440
81851 150384
459107 795405
299682 6700
254125 362183
50795 541942

样例输出2-384281 179674

难度:★★★

方法:还是模拟,因为数据比较小

题解

实际分数:AC

T3:烤饼干

题目描述

NOIP烤饼干时两面都要烤,而且一次可以烤R(1<=R<=10)C(1<=C<=10000)列个饼干,当一面烤到规定时间时,机器会把整个翻过来以接着烤另一面。 

有一天,正当机器准备翻饼干时发生了地震,有一些饼干被翻了过来,有一些没有。幸运的是,地震过后你可以手工操作,一次可以同时翻若干行或者若干列,但不能单独翻某一个饼干。

写一个程序计算通过翻转使得最终翻过来的饼干的数量得最大值。 例如下图是地震之后的情况,黑点表示未翻转,白点表示已经翻转: 

2020.06.06【NOIP普及组】模拟赛C组37

翻转第一行后得到:

2020.06.06【NOIP普及组】模拟赛C组37

接着翻转第1列和第5列得到下图:

2020.06.06【NOIP普及组】模拟赛C组37

这样可以使得9个饼干翻转过来。

输入输出格式

输入
第1行: 两个整数R和C(1<=R<=10,1<=C<=10000);

接下来R行,每行C个空格隔开的数,其中aij=1表示未被翻转,0表示已经翻转。

输出
输出一个整数表示通过翻转行列操作最多被翻转的饼干数量。

此乃样例

样例输入12 5
0 1 0 1 0
1 0 0 0 1

样例输出19

样例输入23 6
1 0 0 0 1 0
1 1 1 0 1 0
1 0 1 1 0 1

样例输出215

难度:★★★★★

方法:状压dp

状压dp详情

实际得分:16.7打表

T4:坐船旅行

题目描述

NOIP有N个岛屿,编号为1..N,NOIP决定在岛屿之间发展船运网络。

你在船运票务中心工作,

很多人想花尽量少的钱从一个岛到另一个岛进行坐船旅行,

他们每个人都报上自己的出发地和目的地,你的任务是告诉他最小花费。

但是在这个过程中船的航线不会一直不变,

可能会在某个时候增加一些航线,

这些新增加的航线显然对之前的询问没有作用,但对之后的询问就要考虑到这些航线了。

按照时间先后的顺序给你一个清单,里面包含询问以及增加航线的信息,

写一个程序回答游客提出的问题。

输入输出格式

输入
第1行:两个数 N(1<=N<=100)k(1<=k<=5000),分别表示岛屿的数量以及清单的长度。 

下面K行描述清单内容,有两种:

 (1)格式为0 a b(1<=a<=n,1<=b<=n,a<>b)表示游客询问岛a到岛b的最小费用;
 
 (2)1 a b e(1<=a,b<=n,a<>b,1<=e<=1000000)表示在a到b之间新增一条航线,费用为e,注意航线都是双向的。 
 
一开始,没有任何航线,并且总的航线数不超过1000,两个岛之间可能有多条航线。

输出
对于每个询问输出对应的最小费用。

样例在此

样例输入13 8
1 3 1 10
0 2 3
1 2 3 20
1 1 2 5
0 3 2
1 1 3 7
1 2 1 9
0 2 3

样例输出1-1
15
12


样例输入25 16
1 1 2 343750
1 1 3 3343
1 1 4 347392
1 1 5 5497
1 2 3 123394
1 2 4 545492
1 2 5 458
1 3 4 343983
1 3 5 843468
1 4 5 15934
0 2 1
0 4 1
0 3 2
0 4 2
0 4 3
0 5 3
 
样例输出25955
21431
9298
16392
24774
8840

难度:★★★

方法:最短路(我用的是Floyd)

实际得分:16.7

在此说明一下:
我本来交的是对的,但是后来改了一下,但是OI赛制只计最后一次,所以…
QAQ

. . . . . . . . . . . . . . . . . .华丽的分界线. . . . . . . . . . . . . . . . . .

这一次考了233.4分,总体还是不错,希望以后能小心点,不要因为情感等原因影响了比赛。

再插一句题外话

提前祝我生日快乐!!!爱你们哦!

相关标签: 考试总结