刷了几十道题后,我突然想到,这些 oj 类的网站,感觉难的不是做题的人,而是出题的人。 他们怎么想出来这些题目,怎么生成测试用例来验证提交程序的准确性和性能要求
1
5200721 2023-06-06 10:51:20 +08:00 via Android
也不全是所有的题测试案例完整覆盖吧?如果你有正确的程序,把案例丢进去跑不就生成了测试用例了吗
|
2
emSaVya 2023-06-06 10:57:23 +08:00
近期周赛新题都搞成老题换皮了。越来越没意思。
|
3
gam2046 2023-06-06 11:32:34 +08:00
就是拍脑袋想的。当然也可以说是经验。
假设出了一道题要求实现 a+b ,那么出题人就会想一下一些可能存在的边界值,比如正数+负数,正数+正数,负数+负数,0+0 除了边界值以外,常见的还有越界问题,比如超大正数相加,超大负数相加等等。 |
4
xth12138 2023-06-06 12:02:27 +08:00
出题人自己想的,如果你遇到没覆盖的情况,可以去贡献测试用例
|
5
zzzlight 2023-06-06 13:12:47 +08:00
有没有可能,当你发现问题后你也可以提交用例(众人拾柴火焰高)
|
6
corcre 2023-06-06 13:15:19 +08:00
不能, 所以提供测试用例会得金币
|
7
S179276SP 2023-06-06 13:35:25 +08:00
所以有些题目很傻逼,看踩就知道。
|
8
Tompes 2023-06-06 14:26:39 +08:00
不是一定能全覆盖的
|
9
LavaC 2023-06-06 14:32:57 +08:00 1
所以像周赛就会有 rejudge ,我也试过几次以为是奇思妙想结果只是刚好过了所有测试用例的错误解题代码。
|
10
kachu673 2023-06-06 14:33:05 +08:00
跟高考出题人一样,都是先有的答案,或者先有的一个思路,然后给你不断加难点
|
11
threebr 2023-06-06 14:35:31 +08:00
全覆盖在数学上叫做形式化验证。但实际工程里没人这么搞,都是出了 bug 再去补
|
13
menc 2023-06-06 20:41:56 +08:00
如果你打信息学竞赛,就会发现有 case 给错的,有 case 不够导致错误解法也能 ac 的,也有用例太少选手直接暴力提交碰答案的
|
14
txy3000 2023-06-06 21:30:20 +08:00
贪心过了 很可能是 case 不够全 得 dp 然后被 rejudge
|
15
learningman 2023-06-07 09:45:18 +08:00 via Android
数据出弱了挺常见的吧
|
16
UMadeleine 2023-06-07 10:03:04 +08:00 via Android
我在学校的程序设计竞赛校队呆过,也担任过校赛的出题人。这个其实不能很好地保证,数据弱了是常有的事情。出题不是一个人,会有其它人验题,我们校赛出题是一个人出之后至少两个人验,leetcode 这种网站完全可以增加更多验题人的数量,这样基本能覆盖到(但其实也不能保证每一道题都不出问题)。更好的机制是 codeforces (程序设计竞赛网站)的 hack 机制,通过对提出 hack 的参赛选手给予加分,来鼓励参赛选手找出题目中的问题。
|