• 初三复训考试2


    初三复训考试2

    初三学长太神力!!!!

    挂分日常

    A 怪物猎人

    背包变种

    会吃人

    题意就是在一堆物品中按顺序选k个使得下面式子小于某个数,求k的最大值

    [p=sum_{i=1}^{k}(a[i]+(i-1)*d)(b[i]+(i-1)*d) ]

    把它拆开以后是

    [p=sum_{i=1}^{k}(a[i]*b[i]+(a[i]+b[i])*(i-1)*d+(i-1)*(i-1)*d*d) ]

    如果物品已经排好序,那么(a[i]*b[i])((i-1)^2d^2)就是定值了不用考虑

    就直接跑一遍背包选数就可以了

    那按什么顺序排序呢

    [p'=sum_{i=1}^k (a[i]+b[i])*(i-1)*d ]

    这是去除常数之后的式子

    只与(a[i]+b[i])有关

    我们希望它最大

    发现((i-1)*d)是单调递增的

    即问题转化为有两个序列:(a_1,a_2,a_3,...,a_n)(b_1,b_2,b_3,...,b_n),求(sum_{i=1}^na_{p_i}b_{q_i})最大时的排列p和q

    用到排序不等式

    [两个从大到小排好序的序列\ 反序和 leq 乱序和 leq 顺序和 ]

    所以当(a[i]+b[i])单调递减的时候,(p')是最小的

    我们按它从大到小排序跑一遍背包就行了

    B 无敌的宠物

    线段树板子 注意pushdown位置要不然越界危

    C bamboo

    最短路建图题注意double最短路是最大值要在double范围内判无解的时候要用>=

    D 水杯

    题意:给一个序列,求O(nlogn)从一个数出发的最长上升子序列和最长下降子序列的和

    直接维护俩单调队列一个上升一个下降复习LIS写法有简单写法更简单的改板子了吐了

    E 大白兔的聚会

    原题考过原题luogu上原题没有上司的舞会原题

  • 相关阅读:
    Git使用笔记
    javascript获取表单值的7种方式
    javascript里阻止事件冒泡
    PHP面向对象04_串行化
    MySQL数据库锁定机制
    SAP R3和JAVA交换数据之JCO
    @XStreamAlias使用
    JCO 自定义DestinationDataProvider
    IBM websphere MQ 消息发送与获取
    WebSphere MQ 入门指南
  • 原文地址:https://www.cnblogs.com/wsyunine/p/14959201.html
Copyright © 2020-2023  润新知