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

    2016.10.29【初中部 NOIP普及组 】模拟赛

    做得好爽!


    进度
    比赛:35+45+AC+0=180
    改题:AC+AC+AC+0=300


    幸运的数
    有点无语……之前怕超限,还特意利用程序打了一个数据库,
    还被老师发现,尴尬了好一阵子……因某些细节而35分,
    并且……不用常量数据库也能简简单单地过!无语ing……
    题目简化
    幸运数就为4或7组成的数的倍数,仅此而已……
    比赛思路
    见上↑
    有点像二进制一样。
    正解
    用递归在程序内生成数据库,就不怕人家看你代码长了。
    其他一样,不多说。


    整人的方程
    这题做得特别爽!不过,也有不爽的地方。
    题目简化
    让程序解一元一次方程!
    这个方程没乘除没乘方(当然,在这里,比如3x省略乘号的不算)
    比赛思路
    一个一元一次方程左右两边都是整式。
    每个整式又可以变成几个单项式的和。
    所以,我们可以把它们当成一个一个单项式存起来。
    怎么把它当成单项式呢?在这里的单项式可以由系数和字母组成,
    反正字母一样、指数一样,就弄一个布尔类型来存这里有没有字母。
    还有一个整型存系数。
    处理好左式和右式的单项式后,
    我就分别化简(后来事实证明直接合并同类项速度还快些),
    把含x项放左一的格子里,把不含x项放右一的格子里。
    最后直接系数化一,输出答案。
    错因
    我也想不清是什么回事。
    我想不通为什么当时我要在答案那里加个abs。
    所以悲惨地答案错误。
    正解
    同上↑


    233 计数
    此时感受如题。
    题目简化
    一串长度为n的”233”串,
    能由”233”“2333”“23333”等组成
    但是2的个数必须为1,3的个数在2或2以上。
    比赛思路
    我原本想要打爆搜,可是1<=n<=10^6
    爆搜一定会爆炸,所以我就想递推的方法。
    因为3的个数在2或2以上,所以有时候全排列还有不同的情况。
    可以分成三种:

    1. 末尾没有3的。
    2. 末尾有一个3的。
    3. 末尾的3够的。

    当然,这要保证除最后的233串之外,
    其他的全部符合233串的规则。
    所以,设
    f[i,0]为长度为i时后面0个3(2),
    f[i,1]为长度为i时后面1个3(23),
    f[i,2]为长度为i时后面2个或以上个3(233,2333,23333……)。
    因为要保证前面的要符合规则,所以
    f[i,0]:=f[i-1,2];(f[i-1,2]是符合规则的,直接加2)
    f[i,1]:=f[i-1,0];(在2后加一个3)
    f[i,2]:=f[i-1,2]+f[i-1,1];(原来够的加上末尾为23的,让它们加3成立)
    结果输f[n,2]
    正解
    听说我的这个方法只是其一,貌似还有更好的方法。

    gjy’s idea:
    设f[i]为长度为i的个数
    f[i]:=f[i-1]+f[i-3];
    i-1是直接加3,i-3是直接加233。


    流浪者的叹息
    我不会告诉你我是来不及做的,
    即使有时间也难做出。
    施工中……


    题外话
    1. 初赛还好过了。
    2. 今天有many低级错误。

  • 相关阅读:
    JavaScrip t将单词的字母按大小写间隔写出
    JavaScript将数组包含某字符串内容的项组成新数组
    JavaScript找出唯一不同的数字
    JavaScript将数组变成电话号码
    JavaScript数组查找是否包含某些字符串
    JavaScript 找出整数的约数
    Excel导出
    yii打印sql
    yii使用createCommand()增删改查
    yii 图片展示
  • 原文地址:https://www.cnblogs.com/jz-597/p/11145328.html
Copyright © 2011-2022 走看看