CSP2019.3考试记录

Update 2019.8.10

更新了挂掉的链接 qwq,然后来耍耍存在感 QAQ

  • 最近被老师拉去考了一个$CSP$,什么$CCF$职业认证考试…..
  • 考点在$S$大,用那里的电脑连接$CCF$的华为云服务器,在那里做题,真是太傻逼了
  • 代码要钱,我太穷了,所以没有任何$Code$。

考试题目

PDF文档

$Task 1$

  • 题意:有$n$个整数,按照升序或者降序排列,请你输出这些数的最小值、中位数、最大值。如果中位数存在分数,四舍五入到第$1$位输出。
  • 分析:没有任何分析,一道模拟。
  • $Code$:被$CCF$吃了

$Task2$

  • 题意:有$n$个数学算式,只会出现加(+)、减(-)、乘($\times$)、除($\div$)和个位数,乘号使用小写字母x代替,除号使用/代替。计算这个式子的值是否等于$24$,若等于,输出Yes;否则输出No
  • 分析:我是用一种递归的思想吧。。把乘号或者除号统一直接处理成一个数,然后进行加减计算就可以了。我这道题好像因为乘号问题只拿了$30$分,难道我打成了*
  • $Code$:被$CCF$吃了

$Task 3$

  • 题意:一个非常长的模拟题,堪比猪国杀。
  • 分析:不想看啊$qwq$,我一辈子不会做这种题的。

更新分割线$(2019.3.30)$


$Task4$

  • 题意:自己看题目吧$QAQ$
  • 分析:这个直接while一直死循环,依次判断每个进程是否可以结束任务,如果可以,就结束两个进程的任务,并让它们进行下一个任务,循环之中在判断一下死循环是否跳出。我这道题应该是在输入和判断死循环方面出现问题了,如果输入每行多个空格,程序就错,因为我用的是getchar $qwq$。判断死循环我用的比较复杂方法,其实这要判断一次循环过后有没有完成任务就可以了,一个任务也没完成就是死循环。
  • $Code$:强迫症的我决定打上

$Task5$

  • 题意:同上$\Uparrow\Uparrow\Uparrow\Uparrow$
  • 分析:因为我在学校要讲这题,所以我就详细一点,就当做是备课吧。
    1. $\leq30$分
      • 当然是$Floyd/Dijkstra+堆优化$啦,太简单了(太懒了)我就不写了,这里地方太小我写不下。
      • 到底是$Floyd$还是$Dijkstra+堆优化$自己权衡。我觉得$Floyd$好,毕竟这题是多源最短路,而且代码打得少。有人想用$SPFA$,毕竟有单源最短路平均$O(m)$的优秀复杂度,但是在不被卡的情况下$30$%的数据依然无法满足要求。这30分的极限数据下$Floyd$也会爆,所以上面我写:$\leq 30$,但是这是三种中最优的,可以手动算下。
    2. 100分
      • 复杂度:$O(k(n+m)\log m)$
      • 可以发现普通的$Dijkstra$的复杂度是$O(n^2(n+m)\log m)$,但是题目中有一个条件是:只需要输出前$k$个据点距离的和,所以我们为什么不利用一下呢?
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×