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

    2016.10.7初中部上午NOIP普及组比赛总结
    这次的题还可以,重新入了比赛的前十。


    进度
    比赛:90+10+70+30=200
    改题:AC+AC+AC+AC=AK


    找试场
    这题很简单,但是被欺负了十分。
    题目简化
    一个人在(0,0),然后盲目听信别人的意见,
    顺着某些方向走啊走啊。
    问最后的坐标。
    比赛思路
    方向数组就不用说了吧……
    有一个东西专门标记方向。
    用字符串读入,如果是字母,则标记方向的要变。
    如果是数字,则改变坐标,输出。
    然后就没什么了。
    (其实这题的难点没有什么,我只强调一个,y轴朝上!)
    错因
    有一个非常非常奇怪的数据,
    那个人只会转身而不走。
    正解
    同上,记得判断只转弯的情况,输出(0,0)。


    圆的国度
    这题,一开始好多人觉得这题是最难的,
    可在XYW讲过之后,瞬间感觉智商被侮辱。
    题目简化
    一个人,要从A到B,每经过一个圆他就会
    没了50%的命。所以他想知道最少穿过多少圆(可以绕道)。
    圆不会手拉手。
    比赛思路
    匆匆地打了个表。10分。
    正解
    因为两个圆不能连在一起,
    所以它也不能手拉手围着你。
    并且你是零维的,所以不管两个圆围着有多密,
    只要它们不拉手,就能穿过去。

    有四种情况:
    1. 只围A不围B,那么ans++
    2. 只为B不围A,同上。
    3. 两个都圈,忽略。
    4. 都不围,忽略。

    枚举每个点,
    用勾股定理计算A或B与那个点的长度,
    然后两个都比较,中间用xor(相反为true,相同为false)连接。
    为true就加一吧。


    幂运算
    快结束时就在赶这道题,在某些细节错了,
    因此70。
    题目简化
    输出A^B
    而且精度要够,不能用科学计数法。
    还有一个特别可恶的:如果结果是0.x的形式,
    要把0去掉。
    比赛思路
    小数的高精度嘛……
    把它变成整数*10^n(n是负数哟)的形式。
    把前面的高精度乘法,最后给它加小数点。
    注意小数点位置!
    错因
    小数点位置错了……
    正解:
    同上,判断好小数点位置就好了。


    箱子嵌套
    我什么都不想说……
    题目简化
    有几个n维箱子,要让它们一个装着一个,
    这个又装着一个……问能做这种操作最多用多少个箱子。
    比赛思路
    贪心,先把每个箱子里的维度以大到小排个序,
    然后又让箱子直间再排个序(长为第一关键字,宽为第二关键字,高第三……)
    然后就一个循环把能放的加起来,输出。
    后来,我改了一下,排序部分不变,
    然后就爆搜……(能时超50分哟!)
    我又加了一个小小的记忆化。
    设bz[i]为用了i个箱子时最里面的箱子最大(不是体积)的每个维度的长度。
    为什么说是个“小小”的记忆化呢?因为那其实没什么大用处,多了10分。
    错因
    答案错误30分。证明了这种方法不!可!行!
    正解
    我记得箱子里面的维度排序不用变。
    然后要DP!
    听别人说是最长不下降序列改一下……
    再讲讲我的方法:
    仍然是一个厚颜无耻的爆搜。
    把记忆化改一改。
    因为上面所说的那个只是一个小小的记忆化,
    并没有多大的用处。
    我本打算定义bz[cd(为一个n为体的各条边的长度)]
    为到最里面的为i(假设是cd类型)时的最大能嵌套的个数。
    但是前面我打的是type cd:array[1..10]of longint;
    题目说了每个维度在longint范围内(负数肯定没有)。
    这样的话则是有(2^32)^10的空间,而且还是4KB的longint!
    编译时都能显示错误!!!
    所以我之前就把它反过来,所以没多大用处。
    但我后来发现:
    box数组中的东西排完序后就再也不会变了,
    也不会凭空产生一个盒子来。
    所以bz的下标只需要是序号就够了(奇妙地解决了空间问题)。
    然后就简单了,如果还是不比之前的大,就直接能退出了。
    这样可以去掉很多不必要的运算,使得程序加快。


    题外话
    1. 初赛快到了,我得要专门训练一下初赛的题型,太难了。
    2. 多次翻车终于有一次回到前十,还不错的。

  • 相关阅读:
    20200816
    20200815
    20200813
    20200811
    20200810
    20200806
    20200804
    20200803
    20200802
    20200801
  • 原文地址:https://www.cnblogs.com/jz-597/p/11145329.html
Copyright © 2011-2022 走看看