zoukankan      html  css  js  c++  java
  • 清华大学软件2014机试

    清华大学软件2014机试

     9月 24 2014 更新日期:9月 24 2014

    今天刚刚机试完,乘者还没忘记,把自己知道的记下来,也算是泽被后来人吧~~~

    这次的机试题,相对来说,会更简单一点,总共3题,时间是3小时。

    1 超级幸运数

    题目大致描写叙述:

    一个数字,若是仅仅含有1和4,这个数字就是幸运数,比如,14,114。可是514这种就不是了,由于含有其他数字。 若这个幸运数字中,1和4的数量同样,那么就是超级幸运数,比如14,1144,41等等。

    题目要求,输入一个n,n的范围是[1,1e9],输出[1,n]的最大超级幸运数。无解的话,输出-1.

    解题思路:

    这个题目,当n<14,那么显然是无解的,其余情况,最起码还有14,事实上就是当>=14的时候,找一个最大的就好了,那么最大有什么规律,如果输入的n有x位,当位数是奇数的时候,输出(x-1)/2个4,和(x-1)/2个1,就好了。如果位数是偶数的话,那么,要考虑一下一些情况了,由于输出是不能大于n的,而且4和1的个数相等。还有,注意这种数据1000,它的输出应该是41。

    一些測试数据:

    in: 20 out:14

    in: 10 out: -1

    in:1000 out: 41

    2 移动小球

    有一些小球,1,2,。。。,n;
    有两种操作,各自是

    • 1 x y ,把x移动至y的左边
    • 2 x y ,把x移动至y的右边

    问得是,m次操作后,小球的顺序是什么..

    事实上就是这种,原本1,2,3,4,5.(假设n=5的话)。经过1 1 4操作后,变成2 3 1 4 5

    n数据范围[1,1000]

    m 数据范围[1,200000]

    解题思路:

    双向链表就行解决问题。再用一个数组存储这些个节点的位置。

    測试数据:

    in :

    5, 2 (输入是 n m)

    1 1 4 (表示操作,1,x, y)

    2 4 2

    out: 2 4 3 1 5;

    3 整理书架

    书店管理员要把书架上的书整理一下,事实上就是一排书,让书的排序是依照书的高低,每本书有一个重量,重量越大,移动书时越费力,越累,让我们求的是,总的移动书本的最小重量是多少。

    给出的数据是:

    5(书的数量)

    1 2 5 3 3 (表示书的高度)

    1 1 3 1 1 (标示书的重量)

    输出是2,

    为什么是2,由于这里仅仅须要把第4,第5本书移动到第三本书的前面,就行保证书的有序,移动的重量和是2。

    解题思路:

    移动的重量和最小,事实上就是求,不移动重量和的最大是多少。那么怎么求不移动的最大重量和呢?事实上就是记录下每本书的位置,高度,重量,然后依照高度排序,排序完后,依照节点的位置,来求一个最大子序列,只是这个最大子序列,大不在长度上,而是重量和上,这样求出来的最大子序列重量和,就是不移动的最大重量和,总的重量减去它,就是我们要的答案

  • 相关阅读:
    mongodb入门安装与配置
    mssql export db
    初识django
    git
    水晶报表的使用经验和资料总结
    SQL中CONVERT转化函数的用法▲
    生活
    SQL中的临时表和表变量
    Convert Datetime to String in Sql Server
    转:探讨SQL Server 2005的安全策略
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4470533.html
Copyright © 2011-2022 走看看