zoukankan      html  css  js  c++  java
  • 2016.9.17初中部下午NOIP普及组比赛总结

    2016.9.17初中部下午NOIP普及组比赛总结

    2016.09.17【初中部 NOIP普及组 】模拟赛
    最近几次的题目都不是自己擅长的啊。。。
    不过含金量挺高的,也好。。。


    进度
    比赛:0+0+10+55=65;
    改题:AC+0+AC+100=300


    一、打印序列
    这次比赛告诉我一个道理:如果比赛时遇到模拟题,就惨了。
    因为我模拟题总是错的,而别人很擅长。
    题目简化
    一串数列,有两项操作

    1.如果第一个是数列中最大或并列最大的就把它取出
    2.如果不是则把它放最后。

    问那个人的文件何时取出。
    考试思路
    用了个像一个队列一样的东西,有头尾指针i和j。
    有一个看看自己的有没有取出的文件的位置m
    如果是情况1,那么直接取出来,i++,time++(我没编c++只是赶时间而已)
    判断是否已取自己的文件。
    否则,j++,a[j]:=a[i],i++。
    如果移的正是自己的,m:=j
    不然不变。
    错因
    m是重点,可是在换位时变错了。
    我在其他数换位时m–,删掉就对了。
    还有,陷入死循环,和d数组爆了
    正解
    我的方法已经是正解了。

    讲讲郑少怀小同学的方法: 也是像上面一样判断,可是操作有点特别。
    这没有头尾指针,移到后面去后用for把所有的补空(话说不会爆吗?)
    删掉前面的也是补空。
    用bz数组来标记一下哪个格为自己的(话说自己的只有一个,费这么多空间干嘛?)
    也是用for移。。。
    (刚来的就爱这样。。。) (只能怪纪中数据水。。。)


    二、Candy 出去玩
    考试时不懂意思啊!!
    题目简化
    有点晕,但知道大概意思。
    如果a[i]>a[j],b[i]>b[j]就证明i比j好。
    然后分组分组。。。
    上面的都要比下面的差
    好像就是这样。。。
    正解
    吴大神的方法:
    先以a为1关键字,b为2关键字排序。
    然后就很好分了。


    三、闯王的宝藏
    其实有用的就几句话。
    我审题错了,把n为看成是这个数是n。
    题目简化
    一个数(也可以说是一个长串),
    去掉某些数位之后的最小值。
    考试思路
    审题错误,以为输入的那个数是n。N<=5000000
    然后算了算时间复杂度,
    发现爆搜能过!OWO
    兴奋地打了爆搜(枚举位数,并去掉)。
    错因
    审题错误。
    看到那血红血红的运行时错误10分,
    猛地发现小小的longint容纳不下。
    正解
    如果后面的比前面的小,就删前面的。
    注意不能用字符串,会80。邓神说,那要一位一位向前挪。
    要用数组模拟链表(好像是这个)。
    last数组存放之前的。
    next数组存放之后的。
    删东西时只需变一下next和last就好了(机智!)
    原来以为要

    
    type
        pxian=^xian;
        xian=record 
               next:pxian;
               ...
             end;

    如果真这样就好玩了。


    四、稀有逛超市
    审题错误(即使我没审错题,也能错)
    逆天之题。
    题目简化
    1:01背包
    2:完全背包
    其他:这类当中只选一个(比如两个3类,只能选其中一个)
    最大值。
    考试思路
    直接01和完全。
    干脆把
    1变成01背包。
    2变成完全背包。
    其他的就不管啦!
    错因
    因为没管其他的呀!
    正解
    因为这题有些逆天,所以我们把它分成两部分:01和完全,分组只选一的。
    具体解法:
    首先看看这里的第三题优化一
    你会发现这类型和那里的分组差不多,
    只是为了证明是同一组而已。但有些组是空的。
    所以这可以省掉一些时间。
    还要把2以上的类型删掉,存到另外的地方。
    然后做01和完全(当然要一维)
    接下来是重点:
    f2=f;
    k=1–>不含1,2种类个数
    {
    j=1–>这个种类的物品个数
    i=n<–这物品的重量
    转移方程不变(f改f2,但是max的第二个参数要改为f)
    f[i]:=max(f[i],f2[i]) 1<=i<=n
    }
    输出f[n]
    (很水是不是?


    题外话
    1.模拟题其实不难,只不过有很多奇怪的细节。
    2.字符串很慢。
    3.我发现越来越少人打总结了。
    4.最近几次的题目总不是很擅长。

  • 相关阅读:
    java list随机截取(洗牌)
    LINUX安装Docker及Portainer可视化界面
    总结一些选题
    深入理解BIO、NIO、AIO
    InnoDB和MyISAM存储引擎的区别
    MyBatis的解析和运行原理
    [杂项/无聊向]《美食大战老鼠》强卡最优策略搜索代码(非玩家勿入)
    CSP 2019 游记
    NOI 2019 游记
    Comet OJ
  • 原文地址:https://www.cnblogs.com/jz-597/p/11145338.html
Copyright © 2011-2022 走看看