模拟赛总结(21.12.11)

错题

  1. T5 军事机密(secret)

    【问题描述】 军方截获的信息由 n(n<=30000)个数字组成,因为是敌国的高端秘密,所以一时不能破获。最原始的想法就是对这 n 个数进行从小到大排序,每个数都对应一个序号,然后对第 i 个是什么数感兴趣,现在要求编程完成。

    【输入格式】 第一行 n,接着是 n 个截获的数字,接着一行是数字 k,接着是 k 行要输出数的序号。

    【输出格式】 k 行序号对应的数字。

    【输入样例】 5 121 1 126 123 7 3 2 4 3

    【输出样例】 7 123 121

    其实这题压根不该错...因为与上一题极度相似所以就直接把上一题代码交上去了...可惜人算不如出题人算,他改范围了...因此上一题的数组范围放到这题就太小了...改完再交就过了

  2. T9 士兵站队问题 (洛谷P1889)

    【问题描述】 在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数坐标(x,y)表示。士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),...,(x+n-1,y)。如何选择x和y的值才能使士兵们以最少的总移动步数排成一列。

    【编程任务】 计算使所有士兵排成一行需要的最少移动步数。

    【输入格式】 第1 行是士兵数n,1≤n≤10000。接下来n 行是士兵的初始位置,每行2个整数x 和y,-10000≤x,y≤10000。

    【输出格式】 第1行中的数是士兵排成一行需要的最少移动步数。

    【输入样例】5 1 2 2 2 1 3 3 -2 3 3

    【输出样例】8

    当时做的时候按照样例的思路就横着挪了一步得了9分再就用剩下的将近一个小时抠这题了...最后还是9分TAT

    纵向移动可以搬过来上题的代码

    重点是横向移动的思路

    正解的思路大概是

    假设第一名士兵站的位置是\(k\),那么后面\(n\)个士兵站的位置依次是\(k+1,k+2,...,k+n\)

    那么士兵横向移动的举例就是

    \[|x_1-k|+|x_2-(k+1)|+|x_3-(k+2)|+...+|x_n-(k+n-1)| \]

    现在还看不出来什么

    但是再整理

    \[|(x_1-0)-k|+|(x_2-1)-k|+|(x_3-2)-k|+...+|(x_n-(n-1))-k| \]

    如果我们令\(t=x_i-i+1\),那么距离和就是\(\displaystyle\sum_{i=1}^n|t_i-k|\)

    那么,距离和最小值的时候,\(k\)即为\(x_1,x_2,...,x_n\)的中位数

耍了小聪明的题(

  1. T8(洛谷P1862

    【问题描述】

    某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n口油井的油田。从每口油井都要有一条输油管道沿最短路径(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置?证明可在规定时间内确定主管道的最优位置。

    【编程任务】 给定n口油井的位置,编程计算各油井到主管道之间的输油管道最小长度总和。

    【输入格式】第1行是油井数n,1≤n≤10000。接下来n 行是油井的位置,每行2个整数x和y,-10000≤x,y≤10000。

    【输出格式】 第1行中的数是油井到主管道之间的输油管道最小长度总和。

    【输入样例】

    5

    1 2

    2 2

    1 3

    3 -2

    3 3

    【输出样例】

    6

    打的暴力,从最低点到最高点遍历了一遍寻找最小的长度和并输出

    我觉得吧,要是这题认真想想也不至于第九题做不出来...

    设最终管道y坐标为m,那么最后的长度和即为

    \[S=|m-y_1|+|m-y_2|+|m-y_3|+...+|m-y_n| \]

    长度和的最小值其实就是\(y_1\)\(y_n\)的中位数

    算就完了(

总结

  • 大部分题一次AC,好耶!
  • 手和脑子不能同时懒(
  • 数学很重要
  • 不会的题要试着去推式子

这OJ名字绝了——996OJ
刚发现这是一本通附赠光碟里的题(

posted @ 2021-12-12 13:02  Burnling  阅读(58)  评论(0编辑  收藏  举报