zoukankan      html  css  js  c++  java
  • 二模 (8) day1

    第一题:

    题目大意:

    梦幻城市每年为全市高中生兴办一次运动会。为促使各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同。为增加比赛的竞争性,希望分成越多队越好。你的任务是由各校的人数决定最多可以分成的队数。

    解题过程:

    1.直接求所有数的最大公约数即可。

    初始得分100.


    第二题:

    题目大意:

    给出一个式子火柴棍组成的A+B=C。(A,B,C<=999),求移动最少的火柴使得等式成立。不允许改变位数以及符号,不要制造0开头的数。

    解题过程:

    1.一开始想到用dfs什么的直接暴搜,但是写起来各种麻烦。。而且可能还很慢。

    2.考虑到数的范围<=999,那么就枚举目标状态的A和B,1000*1000的复杂度,然后计算初始状态到目标状态的最少步数。。

    3.计算最少步数的过程:先打个表,move[i][j]表示数字i到数字j需要移动多少根火柴使得i是j的一部分,或者j是i的一部分。

    比如 0到6,需要把0的一根火柴移到最中间,所以move[0][6]=1.   1 到 7,1本身就是7的一部分,所以move[1][7]=0;

    然后用hash[i][j] 表示 i 变成 j 需要添加 多少根火柴。 比如 4需要4根火柴,8需要7根,所以

    hash[4][8]=3;

    hash[8][4]=-3; (负数表示需要拿掉火柴)

    4.然后把初始状态和目标状态逐位 比较 计算距离 , 比如 12 到 23 ,1变成2 需要添加3根火柴,2到3需要移动1根火柴。

    用tmp1表示一共需要添加多少根火柴,tmp2表示一共需要移走多少根火柴(就是所有负数的绝对值的和),tmp3表示需要移动多少根火柴。   首先必须满足tmp1= tmp2,也就是目标状态和初始状态用的火柴一样多。。然后更新ans。

    ans=min(ans,tmp1+tmp3);

    有点贪心的思想。 初始得分100。


    第三题:

    题目描述:

    长郡中学校长打算举行建校100周年的晚会。学校的职员是分等级的,也就是说职员之间的上下级关系组成一棵以校长为树根的树。校长要亲自邀请一些职员参见晚会。同时校长亲自到场欢庆这个节日。职员用1~n之间的整数编号,人事处给出了每个职员的搞笑指数。如果一个人和他上司一起参加,那么便可能产生麻烦。为了使晚会的每个参加者都高兴,校长不会同时邀请某个职员和他的顶头上司。
    你的任务是给出一个客人列表,使得客人的搞笑指数之和最大。

    解题过程:

    1.裸的树形dp。但是 题目说的不是很清楚,题目的本意 貌似是 校长在1~n里,且校长必须选。。

    2.一开始把校长不考虑在n个人中,然后虚拟了一个节点(校长),结果就WA 5个点了。 初始得分50.

  • 相关阅读:
    Ubuntu中设置永久的DNS
    Ubuntu上OpenStack DashBoard主题修改的方案
    OpenStack 控制台不能不能访问的问题
    树莓派2试玩
    SharpMap V1.1 For Web教程系列之——地图展示
    剑指offer12 矩阵中的路径
    flex布局中关键词整理
    浏览器缓存 强缓存 协商缓存整理
    二叉搜索树中第K小的元素
    leetcode cs-notes-树(一)【js】
  • 原文地址:https://www.cnblogs.com/vb4896/p/4004878.html
Copyright © 2011-2022 走看看