zoukankan      html  css  js  c++  java
  • 考试总结10-08

    本次考试:

    第一题通过与李泽铎相同的办法想了出来:能拿钱的原因在于最左右两边的钱只算了一次,而中间的都算了两次.只要拿中间的补上就可以了,让那部分钱承担更多"责任".如果第一个拿走了x,那么以后偶数个都要加x,没有任何关系.但奇数位置都要减少x,如果减少到0就不满足题意了.而且如果n为偶数时最后一个位置的钱还要增加x,不得不把钱放回去.

    因此n为偶数时一定为0,否则取奇数的最小值-1.如果有1的话答案还是0.但是也没办法.

    第二题想了很久,刚开始以为n每一组都是50000,乘上个T=5000复杂度就很大,应该考虑贪心了,于是想了很久贪心策略还是想不出来.再看一遍数据发现n一共不超过500000,那么可以考虑n*logn带二分性质的算法了美滋滋.本题与lis类似,并根据之前想贪心的时候的推出来的各种性质写出了正解:a[i]=read()-i后对a[i]做最长的不小于零的不下降子序列,答案就是n-len.求lis的时候可以上一个二分,正好又复习了一遍二分的模板(复习的意思就是调了很久).

    第三题想到了是dp了,想到了一个自以为很对,复杂度也很优秀的算法,然后开始推转移,发现代码很难写,但是以为是正解,就继续敲了下去.于是最后发现是错的.再写另一个四重dp来不及了,只好水了一共dfs尝试30分,然后数组谜之开的很大,拿了零分.

    以后做题要仔细看好每一个条件,考虑出题人要考什么,我会写什么算法,在纸上推好后再开始敲代码.

  • 相关阅读:
    26、面向对象设计模式之单例模式——泛型单例
    Unity 汽车碰撞
    makeObjectsPerformSelector对数组中的对象发送消息执行对象中方法
    NSHashTable NSPointerArray
    webrtc 音频一点相关知识
    记一次ios加急上架经历
    iOS 获取当前正在显示的ViewController
    ios表单上传图片或文件
    https适配
    swift block
  • 原文地址:https://www.cnblogs.com/qywyt/p/9757104.html
Copyright © 2011-2022 走看看