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低级错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值