OSDN Git Service

:speech_balloon: update docs/topic/problemsetting.md
authorouuan <y___o___u@126.com>
Thu, 3 Oct 2019 09:04:13 +0000 (17:04 +0800)
committerouuan <y___o___u@126.com>
Thu, 3 Oct 2019 09:04:13 +0000 (17:04 +0800)
docs/topic/problemsetting.md

index cb3e325..5209a2b 100644 (file)
 
 经典例子: [NOIP2017 小凯的疑惑](http://uoj.ac/problem/329) 
 
-我自己的标准是:尽量不要出数学填空题。但这样的纯数学题也不是完全不可取,有时纯粹地考察一些 OI 常用数学知识也是可以接受的。
+OI 中的数学题与其它数学题的区别,也是体现 OI 本质的一个特点,是 OI 中的数学题往往重点不在答案 **是什么**,而在如何 **加快** 答案的计算。如果一道题考察的重点是“怎么算”而非“怎么快速计算”,这样的数学题一般都是不适合出在 OI 中的。
 
-> ä¸\80é\83¨å\88\86å\81\8fé¢\98中ç\89µæ¶\89å\88°äº\86大学ç\89©ç\90\86ç\9a\84å\86\85容ï¼\8c导è\87´é\80\89æ\89\8bå\9c¨é\9d¢å¯¹è¿\99äº\9bä»\8eæ\9cªæ\8e¥è§¦è¿\87ç\9a\84ç\89©ç\90\86ç\9f¥è¯\86ç\82¹æ\97¶å\8f\98å¾\97ä¸\8dç\9f¥æ\89\80æ\8eªï¼\8cé\80 æ\88\90äº\86ç\9f¥è¯\86ä¸\8aç\9a\84é\9a\94è\86\9cã\80\82
->
+> 一部分偏题中牵涉到了大学物理的内容,导致选手在面对这些从未接触过物理知识点时变得不知所措,造成了知识上的隔膜。
+>
 > ——[王天懿《论偏题的危害》][2]
 
 经典例子: [「清华集训 2015」多边形下海](http://uoj.ac/problem/159) 
 
 ### 输入输出格式
 
-输入输出格式清晰 **完整** 即可,没有死板的要求,个人建议参照 CF 的题目来写输入输出格式,具体可以参考[CF 出题人须知][3]。
+输入输出格式清晰 **完整** 即可,没有死板的要求,个人建议参照 CF 的题目来写输入输出格式,具体可以参考 [CF 出题人须知][3]。
+
+为了方便选手做题,输入输出格式中最好说明每个变量的具体含义,除非变量的意义非常长,没法一句话说清楚(这时可以说“意义见题目描述”)。
 
 需要特别注意的是,如果输出中含有小数,请尽量使用 SPJ。如果无法使用 SPJ,请保证对精度的要求是有限的。
 
-如果没有保证,对精度的要求可能是无限的。例如:要求保留三位小数,实际答案为 $0.0015$ ,此时只要有任意大小的误差导致计算出的答案小于 $0.0015$ ,即使计算出的答案是 $0.0014999999999\cdots$ 也会输出错误的答案。
+如果没有保证,对精度的要求可能是无限的。例如:要求保留三位小数,实际答案为 $0.0015$ ,此时只要有任意大小的误差导致计算出的答案小于 $0.0015$ ,即使计算出的答案是 $0.00149999\cdots$ 也会输出错误的答案。
 
 保证对精度要求有限的例子:请输出答案四舍五入后保留小数点后三位的结果。令标准答案为 $ans$ ,数据保证对于任意满足 $\frac{|x-ans|}{\max(1,ans)}<10^{-9}$ 的 $x$ ,四舍五入后结果与 $ans$ 四舍五入后相同。
 
 4.  实数没说小数点后位数。
 5.  某些变量没有给范围。
 
-你需要保证标程可以通过满足题面所述数据范围的任何一组数据
+你需要保证标程可以通过满足题面所述数据范围的 **任何一组数据**
 
 ### 样例
 
@@ -277,6 +279,8 @@ for (int i = 1; i <= n; ++i) {
 }
 ```
 
+如果使用 `testlib.h`,可以使用 `shuffle` 函数,和 `random_shuffle` 类似,但使用 `rnd.next` 作为随机数生成器。
+
 #### 生成随机区间
 
 常见错误方法:在 $[1,n]$ 中随机生成左端点 $l$ ,再在 $[l, n]$ 中随机生成右端点 $r$ 。这样的话生成的区间会比较靠右。
@@ -351,7 +355,6 @@ int main(int argc, char* argv[]) {
   for (i = 1; i <= n; ++i) p.push_back(i);
 
   shuffle(p.begin(), p.end());
-  // testlib.h 自带的用于替代 random_shuffle 的函数
   // 使用 rnd.next() 进行 shuffle
 
   printf("%d %d %d\n", n, m, k);