zoukankan      html  css  js  c++  java
  • 10.27,28考试总结

    27
    T2
    小 Z 按时间点从早到晚对 N 位同学排序并依 次编号为 1..N 。但小 Z 并不知道运送行李的货车会在什么时候到来,为了避免 同学
    们在宿舍楼下等待太长时间,小 Z 规定,只留最后一位准备好行李的同学 在宿舍楼下看守着行李,若第 i 位同学收拾
    好行李后,货车恰好到来,则由这 位同学和小 Z 一起把前 i 位同学的行李搬上货车。 但由于货车有载重量 M 的限制
    ,小 Z 计划,当货车来临时,会在已经收拾 好行李的前 i 位同学中,在必定选取第 i 位同学的行李的前提下,选取
    尽可能 多的同学的行李,优先把他们的行李搬回家。已知货车载重量为 M ,第 i 位同 学的行李重量为 a[i] ,你能
    计算出在任何一种情况下,当货车运走第一批行李 后,会剩下多少位已经收拾好行李的同学,享受不到优先运送行李的服务吗

    用权值线段树+线段树上二分即可,全值线段树维护个数和和

    T3
    小 Z 带来的糖果比较特别,一共有 N 个糖果连成一串,编号为 1..N,第 i 个糖果有一个数值 a[i] 表示蛀牙的可能性,数值越大的糖果越容易
    导致蛀牙, 多个糖果的蛀牙值认为是各个糖果的蛀牙值之和。 现在小 Z 打算取 N 个糖果的前若干个,分成 K 段分给 K 个
    孩子。小 Z 好奇, 他该怎么分糖果,才能使得分到糖果蛀牙值最大的孩子尽可能不蛀牙

    二分+dp+树状数组
    最大值最小很容易想到二分答案。

    然后关键是怎么写 judge

    函数。

    设 f[i]
    表示前 i

    个数最多能分成多少段。

    转移则有 f[i]=max(f[j]+1)
    ,其中要满足 sum[i]−sum[j]<=mid

    这样就可以做到 O(n2)
    的 dp

    考虑用数据结构优化一下。

    把转移条件换一下形式写成 sum[j]>=sum[i]−mid

    然后发现他是一个后缀最大值的东东。

    考虑权值线段树或者树状数组,这里 a[i]

    的范围比较大,所以我们考虑离线之后用树状数组。

    复杂度 O(nlog2n)

    T1
    排列的一个规律题,当前排列的下一个排列,就是当前排列从后向前找,找到第一个不递增的位置,然后在
    这个位置的后面找一个大于当前位置但是最小的一个数,把当前位置替换成这个数,然后剩下的数顺序排列就好了;

  • 相关阅读:
    几行代码搞定图片模糊模式
    SVN源代码管理规范
    模仿苹果手机虚拟键的代码分享,有兴趣的可以玩玩。 下面的是链接,复制粘贴到浏览器就能下载
    keytool使用方法
    Unity导出APk出错解决方法二
    学习网址
    eclipse中手动设置library,选择编译工具方法
    apk接入google play邮箱登陆及充值注意事项
    unity导出apk错误出错解决方法
    java自动生成jar包工具
  • 原文地址:https://www.cnblogs.com/Aswert/p/13895874.html
Copyright © 2011-2022 走看看