zoukankan      html  css  js  c++  java
  • CCF NOI plus 201(7)6 初赛题 解题报告

    GTMDCCF。

    今年这题怎么评价?

    去看我在知乎的回答:https://www.zhihu.com/question/66621360/answer/244222388

    挨个说一遍。

    单项选择题

    T1.CCF有毒,我一个cpp选手有什么义务去关注pascal的存亡问题?挺让我震惊的,虽然我知道这个时间。

    2022年。

    T2.补码,考前正好复习到了这个考点,这个数是10101011,显然它是负数,所以补码等于反码+1.

    反码为除符号位外按位取反,这样就得到了11010100,补码就是11010101,-(2^0 + 2^2 + 2^4 + 2^6) = -85.

    T3.说实话一开始拿到这个题我是懵逼的,但其实一想发现,16位,16位。。嗯,8个二进制位是1byte,这样一个16位是不是2啊。。

    那我试试1600*900*2/1024?噫,还真算出来了。

    T4.丧心病狂的推建国日的星期,我反正没推出来。。查日历可得是星期六。

    T5.好题。有一个连通图有n个节点m条边,问至少删掉多少边会使这个图变成一棵树。

    如果你代数求值会在A和B之间徘徊不定。但是 你可以想啊,树有什么性质?一棵n个点的树有n-1条边啊,那不妨设我们最少需要删掉x条边,然后有m-x = n-1,算出x是m-n+1就好了。

    T6.这个递推关系式比去年那个稍微好看点。。

    之前我貌似做过一个T(n) = 2T(n/2) + n的,我还记得答案,于是猜测是不是有相似的性质。。这个题,T(n) = 2T(n/2) + nlogn,前边那个递归应该是logn,两边乘起来就是C选项,遂选之,居然对了。

    T7.后缀表达式,考之前有好多人问我怎么做。。。

    我记得老师用的方法是画树,这个太麻烦了。。

    其实只需要按照每个操作加括号就好,保证每个括号里只有一个运算符外加两个数,然后把符号相应的移到其所在的右括号之前,删掉所有括号就是答案。

    T8.我不会啊

    T9.这个好像是一个排列组合。。我当时算错了。。。应该选120但我选的96。。。

    T10.说实话这题做错也有我方法有误的原因。本身这个是一个递推式可以求通项公式然后再看无限逼近的。。。

    我居然想到了画图。。。画图发现也是无限逼近,但毕竟草图不精确,鬼知道我定到的点是0.666还是0.618。。

    T11.卧槽这题我也做错了?应该是2n-1。。

    T12.这题做对了。。。

    强行程序填空。。。从去年开始就是这样,保不准明年还会有?

    从一个地方就能看出来,c语句是给n赋值,而下面正好对应的是对n值的判定,那自然是第三个空填c语句,只有D选项是,选D。

    T13.原来是动态规划的老祖宗数字三角形。这题最早出现在IOI1994,当时难倒了不少人,现在已经成最简单的例题之一了。。。时代变化真快

    当时求的是最小路径,这个求最大路径,还不都一样。。

    选A。

    T14.人教版高中数学选修2-3第二章,概率有关的内容。我就用平时做题的做法做出来了,挺简单的。

    设事件A = “第一个航班准点”

    设事件B = “第二个航班准点”

    设事件C = “第三个航班准点”

    设事件D = “小明旅行成功”

    则有P(A) = 0.9 , P(B) = 0.8 , P(C) = 0.9.

    可以推出 P(A的对立面) = 0.1 , P(B的对立面) = 0.2.

    (X的对立面应该写作X上边一道横线,我不知道这样的符号怎么打出来。。。)

    由题意可知,第1个航班晚点,第2个航班准点,旅行失败;且第2个航班晚点,第3个航班准点,旅行失败

    则可以推出P(D的对立面) = P(A的对立面)P(B) + P(B的对立面)P(C)  = 0.08 + 0.18 = 0.26.

    则答案P(D) = 1 - P(D的对立面) = 1 - 0.26 = 0.74.

    挺简单吧。

    T15.人教版高中数学选修2-3第二章,数学期望有关的内容。

    我们知道,期望 = 均值*概率。

    我们知道乒乓球平均喷出速度为2个/秒,喷三分钟平均会出2 * 180 = 360个球

    小朋友只能坐在某一节车厢里,一节车厢占整个场地面积的二十分之一,只有球落到车厢里面小朋友才能捡到。

    由几何概型的相关知识,接到球的概率就是二十分之一。

    所以期望值 = 360 * 1/20 = 18. 压轴题并没有想象中那么难,反倒挺简单。

    不定向选择题

    T1.最坏情况下快排会退化, 归并和堆排序不会退化。

    T2.考察栈的常规操作,挨个模拟一下就好。

    T3.希尔排序是什么?这题选D。

    T4.QAQFortran不是面向对象的!!!!!!!!!!!!!!!!!!!!!!!

    T5.GTMD王选,出题人你给我出来。这题选BD。

    问题求解

    T1.变换格子,看起来没法下手其实挺简单,瞎jb试试就知道是3步,不可能会有比3步更优的算法了。

    T2.传说中的最小割。最小代价是4,挨个试总能试出来。不同的方案数其实我也是查的,少查了两种情况。。

    读程

    T1.一道常规递归题,woc这我也做错了。。。我菜爆了我退群吧。。。直接多算了一个10。。。。答案是15.

    T2. 鬼知道这是http://www.cnblogs.com/OIerShawnZhou/p/7449299.html  

    T3.第三题是归并排序求逆序对,本来这题不该错,因为我初赛之前刚做了一个求逆序对的题。这个答案是8但我查出来是7。。。

    结果我数反了。。

    T4.好像是数论。。而且据说第二个和第三个的测试数据要循环几十万次。。。woc。。

    程序填空

    依照惯例,正确的答案我会标成色。

    T1.说好的不考高精度除法呢?说好的这东西不在NOIP范围之内的呢?

    没办法,凭着感觉走吧。。。

    我真不会这个所以。。分析不出来。。

    第一空是p[0]  第二空是 rest< q 第三空是 rest / q 第四空是 rest % q * 10 + p[i] 第五空是 rest % q (我r我居然又写错了)

    T2.惊了,这是拓扑排序。

    对BFS了然于心的我很快就把这题一遍做出来了。

    第一空的用途是记录入度,方便以后查找入度为0的点。能很快想到degree[b]++

    第二空所在的循环是用来把所有开始时入度为0的点入队的,那这个判定条件肯定是判断某个点是不是入度为0,那么就是 degree[i] == 0 了。

    第三空就是拓扑排序的主过程了,是一个裸的bfs。这里第三空所处的环境是程序在扩展节点的时候发现一个合法点,后文也明确表示如果这个点的入度变成0就会入队,那应该不难会想到这个空填的应该是“删边”操作,即让这个点的入度-1,那么就是degree[i]--了。

    第四空有人看不出来吗?可能有人真的看不出来,要知道bfs每次都是要弹出队首的,但前面的代码没有写这个操作,那自然第四空是需要做这个操作的,否则bfs就结束了。。

    让队首+1不就相当于原来那个数弹出来了么?所以head++

    第五空就是去寻找最长路了。自然程序会把求得的答案放在len[a]里,我们要更新ans以便于输出,所以这里的判断条件应该就是,如果当前求得的这个值比ans大,那就让ans更新为这个值。

    所以,len[a] > ans

    47.5分。。。。。应该。。。。不会。。。。出事。。。。吧。。。。吧。。。。吧。。。。

    我。。。很。。。慌。。。张。。。啊。。。。

  • 相关阅读:
    KnockoutJS 3.X API 第五章 高级应用(4) 自定义处理逻辑
    KnockoutJS 3.X API 第五章 高级应用(3) 虚拟元素绑定
    KnockoutJS 3.X API 第五章 高级应用(2) 控制后代绑定
    KnockoutJS 3.X API 第五章 高级应用(1) 创建自定义绑定
    KnockoutJS 3.X API 第四章(14) 绑定语法细节
    KnockoutJS 3.X API 第四章(13) template绑定
    KnockoutJS 3.X API 第四章 表单绑定(12) selectedOptions、uniqueName绑定
    KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
    KnockoutJS 3.X API 第四章 表单绑定(10) textInput、hasFocus、checked绑定
    KnockoutJS 3.X API 第四章 表单绑定(9) value绑定
  • 原文地址:https://www.cnblogs.com/OIerShawnZhou/p/7668499.html
Copyright © 2011-2022 走看看