NOIP前模拟赛总结

NOIP前模拟赛总结

from 2018.10.7 to ???

Date Name Score(Rank) Problems
2018.10.7 McfXH AK Contest 42(?) 期望得分230,T1因为没有仔细看数据范围以及没有测试极限数据爆成12分,T3dp方程推错爆零,T2不会,只有30分暴力
2018.10.7 noi.ac第三场 150(?) 第一题因为map常数大爆成45,第三题又因为写了十颗线段树去完成一颗线段树就能完成的工作,常数爆炸,得到80,第二题dp状态没有想到只有25
2018.10.8 noi.ac第五场 230(?) 第三题没有想到。。。T2dp又一次不会。。。
2018.10.9 noi.ac第六场 270(?) 比较顺利,T2动态规划接近正解,获得70分
2018.10.9 正睿OI普及组摸底测试02 390(1) 挂了两道题,都是95分。。。T3是因为少判断一种情况,T4图可能不连通,在tarjan的时候写到了这种情况,但是后来dfs的时候忘了改了。。。
2018.10.9 学校模拟赛 ?(?) 非常不正式,只考了1h+,想出来前两题,时间多的话T3可能也能想出来
2018.10.10 noi.ac第四场 170 感觉好难啊,T3线性基可以维护序号没想到,T2题解都看不懂。。。
2018.10.10 正睿OI普及组摸底测试03 200(10) 打的极差,大部分因为环境原因(学校就没有一个能做题的地方。。。)还有是因为想法不够全面(可能跟环境差也有关系,没法好好思考)
2018.10.11 学校模拟赛(by lqs) 230(?) 前两题做的很快,但是T3卡住了,最后只得到30分,字符串水平急需加强(不过似乎NOIP没考过字符串。。。)
2018.10.11 正睿OI普及组摸底测试04 390(1) 题目简单,做的比较顺利,问题是把Hulk打成了Halk,看来得补一补英语了😆
2018.10.13 正睿OI提高组十连测07 230(3) 哇好像十连测马上就结束了,可是感觉状态还是不咋的啊。。。挺简单的比赛(良心出题人JOHNKRAM)T1直接暴力,T2大概就是树形dp,树上的随机游走好像挺经典的,可是在第二个dp的部分我调了1h?真不知道怎么回事,就是一个break打错位置了。。。T3一开始没有仔细想,后来发现是个水题,考完后10min写完了。。。
2018.10.11 CF Edu Round 52 6(4) 莫名其妙打的极好,但还是有问题,第四题的代码其实存在问题,0,1,2打成了1,2,0所幸没有人发现也没有人hack我。。。
2018.10.14 CF Round #516 2(398) 打得极差。。。主要是卡在B题上1h左右,事实上B题不管怎么做都能做出来。。。感觉如果开D说不定还能翻上去,我感觉数学题还是比较友好的。。。
2018.10.15 正睿OI停课训练01 400(2) 简单的比赛
2018.10.16 正睿OI停课训练02 300(2) 简单的比赛
2018.10.16 学校模拟赛 70(11) 想出来的分数大概有200+,实际只得到了70,首先是取模除了问题,不够仔细,然后是想法有漏洞,运气又不好,数据不弱,时间不够还有一题没写,然后就爆炸了
2018.10.17 六校联考02 170(57) 策略出了问题,一直肝T2,事实上T3是个大水题,然后T1写挂了没有测出来
2018.10.18 正睿OI停课训练04 260(3) 前两题很快搞定,但是T3卡了2h+,事实上就是爆搜,但是一直以为是个性质题,想歪了
2018.10.19 正睿OI停课训练05 200(6) T3做了3h,最后没开ll挂掉了
2018.10.20 51nod模拟赛 100(3) 奇怪的比赛,T1明显树dp但是调了3h过不去,非常无聊的卡我的快速幂,T2水过,T3不会做,没有题解,不给看别人的代码,差评
2018.10.20 正睿OI提高组十连测day8 130(10) 很难的比赛,T2想到正解但是代码太乱常数太大挂掉了,T3想不到主席树有求前k大的和的操作,T1真难
2018.10.21 CF Round 517 1(414) 爆炸了,T1一个很水的策略一开始没想到,T2非要用set加了一个log,而且做得极慢,然后就爆炸了
2018.10.22 正睿OI联赛停课训练day6 240(6) T1T3都是水题,T2想不到
2018.10.24 正睿OI联赛停课训练day8上午 113(6) 打得不行啊,T1水题公式变形没看出来,T2想到接近正解但是实际上还有细节没有考虑,T3很难,完全不会,暴力应该可以拿不少分但是没有去打
2018.10.25 正睿OI联赛停课训练day9 300(2) 原题场,没啥意思
2018.10.25 CF Edu Round 53 4(328) C一个地方一开始忘记判断导致罚时爆炸,D最后20min rush出来但是存在问题
2018.10.26 省队集训 102(20) T2数位dp没有调出来,别的没什么问题
2018.10.27 学校比赛(by wzy) 300(1) 对时间分治的时候要注意一些细节
2018.10.28 正睿OI普转提day22 130(40+) 根本不会啊,结论猜不出,想出来正解却没发现自己想出来了,心态有点浮躁
2018.10.29 正睿OI联赛停课训练day10 110(19) T1没有开long long,100->30,T2没有注意取模非常坑爹,100->30,T3哈夫曼树dp没见过,于是就爆炸了

具体分析

在模拟中我出现的问题如下:

1、没有仔细读题

2、动态规划能力严重不足

3、没有仔细检查程序,不好对拍的题没有手动写小样例并测试

4、常数太大,写的时候没有注意常数

5、思考的不够深入,想到就开始写,没有想有没有更好的做法

6、思维不够全面

7、发现程序存在问题的时候只改了一处,忘了改另一处

8、字符串水平急需加强(虽然好像NOIP不考字符串)

9、思考问题不能快速进入状态

10、打错字严重(比如之前用0表示什么状态,1表示什么状态,结果后面就反过来了。。。)

11、不够抓紧时间

12、不能准确判断做题顺序,一直做一道超出能力范围的题目

13、忘记开long long

14、代码写的太长太丑,常数巨大

解决方法

1、认真读题,尤其注意数据范围,测试极限数据能否通过

2、练习动态规划

3、每题都要尽可能对拍,尽量构造比较强的数据和特殊数据

4、不要调用太多常数,注意把可以预处理的部分全部预处理出来

5、不要放弃比赛,当思路乱的时候就去厕所洗把脸,鼓励一下自己

6、好好想题,想得细致一点,想想解法有没有反例或者是可优化的地方

7、每次修改的时候都把程序重新看一遍,看有没有别的地方也会被影响到

8、可能真正比赛的时候状态会好一点?还是要模拟考场环境和氛围,不能老走来走去的,要坐在座位上用纸和笔算

9、仔细敲代码,不要太追求速度

10、把每一题都认真思考十分钟以上,确定哪题比较容易,确定做题顺序

11、感觉怎么都做不了的时候不妨搜索试试,NOIP还是经常有搜索题的

12、一定要记得看要不要开long long

13、多看别人的短小且效率高的代码

做的好的

1、坚持对拍

2、有一场比赛虽然打的不怎么样,但是列出来了每题每个部分分大概要花多长时间写完,按照性价比去写,很好

可以打的模拟赛

学校还有四场

正睿开放的一场17年的模拟

正睿开放的一堆题目

学校的一堆题目

(完了真的做不完了!!!)

小技巧

  1. 考一棵树里面选了几个点,并且要有一个联通块包含这几个点的时候,我们可以考虑把点按照dfs序排序,然后联通块的最少边数就是 \(\frac {\sum dis(a_i,a_{i+1})} 2,(a_{n+1}=a_1)\)

  2. 一种常见的dp状态是 \(dp[a][b][c][d]...\) 表示每种物品有几个,假如物品没有区别的时候,我们可以只考虑 \(a \le b \le c \dots\) 的状态,转移的时候也将数量排序再转移,可以大量减少状态数

  3. reverse特别慢,尽量不reverse

  4. char[] 求strlen特别慢,可以记录在变量里,不能反复求,尤其避免

    for(int i=0;i<strlen(s);i++)
    

    慢成狗。。。

  5. 线性基的小技巧:

    我们要维护 \([l,r]\) 的线性基的时候,可以记录下来线性基的 \(i\) 位对应的序号,然后按照序号顺序更新线性基,像下面这样写:

    int lb[40],at[40];	//线性基及编号
    for(int i=1;i<=n;i++){
       //枚举右端
       int x=nw[i],p=i;
       for(int j=30;j>=0 && x;j--){
          if(x&(1<<j)){
             if(lb[j]==0){lb[j]=x;at[j]=i;break;}
             else if(at[j]<p){swap(at[j],p);swap(lb[j],x);}	//把原来的向下更新
             //因为如果两个同时拥有这一位,那么后来的肯定更优
             x^=(1<<j);
          }
       }
       for(int x=head[i];x;x=nxt[x]){
          //枚举右端点为i的查询,可以用邻接表存储
          for(int j=30;j>=0;j--){
             if(at[j]>=q[x].l) q[x].ans=min(q[x].ans,q[x]^lb[j]);
          }
       }
    }
    
  6. Meet in the middle 极好的想法,当数据范围恰好卡着你两倍左右让你过不去的时候,极有可能是Meet in the middle

  7. 预处理!!!预处理!!!预处理!!!

    好像数数题大部分都要预处理。。。

  8. 某一种dp要求你把所有的东西都消除,配对。。。之类的,可以考虑其中的某一个元素,这个元素一定会被消除,配对。。。然后可能能优化一下复杂度

  9. size把 \(O(n^3)\)\(\text{dp}\) 优化成 \(O(n^2)\)

  10. 一个数与一群数一个个取 \(\gcd\) 只会有 \(\log\) 种不同的答案,因为每次要么不变,要么变成一半或者更少,然后可以优化一些题

  11. 搜索的时候为了不重复可以只搜索单调不降的序列

  12. 当题目要求必须选某一个元素或者必须不选某一个元素的时候,可以用前缀加后缀合并得到答案

  13. 对时间分治的时候注意撤销操作要从后向前做!!!

  14. 合并果子的模型非常常见,当贪心想不出来的时候可以试试看

posted @ 2018-10-07 20:07  wawawa8  阅读(339)  评论(0编辑  收藏  举报