您的位置:首页 > 其它

NOIP2017提高组初赛题解

2017-10-14 23:39 155 查看
先送上标准答案:



第1题,傻逼题(然而我做错了)。

第2题,不算难,看过补码转原码的应该都能做出来,首先首位符号位为1说明是负数,然后其他几位全部取反得到1010100,转为十进制是84,然后记得加1,于是选-85。

第3题,直接上公式吧:1600∗900∗16÷8÷1024=2812.5(KB)。至于公式怎么推出来的,可以自己百度:位图存储空间如何计算。

第4题,历史书上说的很清楚是星期六啊其实就是个奥数题啦,我们算出1949~2017年里闰年和平年分别有多少个,然后算出1949年10月1日到2017年10月1日经过了多少天,然后对7取余即可。

(博主发现了一个很神奇的算法,只要给出年月日就能秒算星期几,网址戳

第5题,严格的证明还没想出来,但是只要画个n=m的图就可以选出正确答案了吧。

第6题,泥萌翻翻算法导论去吧,懒得码字了(大雾)~

第7题,题目给出的是中序表达式,我们观察到了“b+c”是有个括号的,所以有棵子树是以+为根,b和c分别为左右孩子。然后就这么画一遍,后缀形式自然就出来了。



第8题,C36+C46+C56+C66−4=38。

第9题,不就是个组合数吗,直接算出C310=120即可。思路:隔板法。

第10题,一个叫特征根的奇技淫巧,过程见下(转载自一个dalao的博客



第11题,常识题吧。

第12题,看懂注释就很好填了。

第13题,没写过这题的人请右转,慢走不送。

第14题,概率题,不过很简单啊,就是把i=1和i=2的情况都算下就行了,算式是1−0.9∗0.2−0.8∗0.1=0.74。

第15题,这个题目其实还是挺容易的,算式在下面列出来了:

2*60*3=360(个/min)
360÷20=18(个)


不过这个算式略了很多步骤,如果是数学题估计没分。。。

好啦单选结束!

多选题懒得说了,百度都有。

问题求解1,我们只要对最上面的1、中间的0和中间的0右边那个0做操作即可,共3次。

问题求解2,(裸的)最小割转对偶图。

阅读程序1,一个比较烦的递归,细心点应该没啥问题,10分钟肯定能模拟出来的。

阅读程序2,一看就是幻方吧,直接写上就好啊。

阅读程序3,一看就是逆序对啊。

阅读程序4,矩形内45°反弹。

完善程序1:

(1)是不是不少人填了0。。。但是注意下面i的循环是从1开始的!所以呢,rest的初始值是p[0]啊。

(2)这个空的话,我当时是在草稿纸上举了个100÷3来计算的,我们把这个while里面的东西模拟一遍,就可以发现它是求出一个最大的k使得q*k<=p(似乎就是p div q?),那么这里就是填rest < q咯(这里rest=q*k)。

(3)跟上面一个思路的,上面填对了下面就不可能错,很明显是rest/q。

(4)把当前的余数跟除数的下一位合起来继续除,注意要写模!

(5)最后的余数,直接模就好了啊。

完善程序2:

(1)很明显是b的入度加1吧。

(2)找到入度为0的点并进队。

(3)删掉所有与当前队头连接的边,如果有新的点入度为0就进队。

(4)傻逼空,肯定队头指针加1啊。

(5)更傻逼的空,替换最优解,就是比大小啊。

试题:https://wenku.baidu.com/view/22d7316186c24028915f804d2b160b4e767f81ff.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: