標籤:

如何評價NOIP2017普及組複賽score題目成績更新?


#include&
#include&
#include&
#include&
using namespace std;
int a,b,c;
int main()
{
freopen("score.in","r",stdin);
freopen("score.out","w",stdout);
scanf("%d%d%d",a,b,c);
int ans=a*0.2+b*0.3+c*0.5;
printf("%d",ans);
fclose(stdin);
fclose(stdout);
return 0;
}

這是我們省里一個60分同學的代碼,在我的Linux下用g++ 4.8.4的編譯器,得到了100分的分數。

選手有義務考慮精度問題,但是如果因為精度問題WA的選手,在考試時的機器上不會產生WA的情況,只有在CCF的全世界配置第一棒的神機上才會WA的話,選手就是沒責任的。選手在考場上完全有理由相信,精度不會出事。

重測使得選手不必背一個和自己沒關係的鍋,是好事。


剛看到普及第一題的時候覺得這題純粹a+b式送分,連if語句和for語句都不要,直接計算輸出,目測是為了保持普及組和提高組第一題代碼難度一致而設計的。

後來仔細想想這題有啥坑,認為這題唯一的考點是精度問題,當時就想這題估計有很多人int ans=a*0.2+b*0.3+c*0.5;然後WA掉。

出成績發現果然這題一堆人WA成30、60,估計都是這麼炸的精度。結果過兩天聽說這題重測了?於是全世界都100了,感覺這題一點意義都沒有了。

實際上這題做法不用浮點數(先/10再*就好了),事實上一道不用浮點數的題被選手用了浮點數然後炸精度WA掉當然是選手的問題。不過考慮到普及組選手有很多編程初學者,以及上述寫法的確在大多機器上不會出錯,換配置重測個人是支持的。不過又一個問題是:假如某腦抽選手認為「double既能存整數也能存小數,多方便,乾脆每題我都全開double」,然後別的題也掛了,那麼別的題的鍋還得由選手背?

因此,個人認為最好的解決方法是更換整個NOIP的評測配置,使得所有題的精度誤差都不這麼敏感,這樣最公平了。當然畢竟實際上普及第一題很多人用double而另外三題幾乎沒人用double,只重測第一題也是合理的。


個人是晚上才看到score這一題要重測的消息。說實話之前在看自己省的成績單上就看見了一大排人t1隻有60分或者30分,當時就感到非常詫異,事後才知道很多人被卡了精度。

rg.noi.cn

首先個人覺得重測是錯誤的。

(1)即使是普及組第一題,但是這一題已經無限接近a+b了,而一些人選用浮點運算解題,沒有考慮到誤差,本身就是程序自己的問題,造成的丟分本就應該自己承擔。

(2)「考察範圍」這四個字難以讓人接收。考前看了很多資料和一些課程,基本上都有說單調隊列不是普及組範圍,從而不提及,但是今年NOIP的t4卻與單調隊列有關係。而「浮點數和浮點運算」會有誤差,這本就應該是每個oier都知道的事,哪怕是t1都應該避免浮點運算。而自己使用浮點運算,剛剛好遇上了神一般的CCF的機子,產生精度誤差而造成的丟分,難道是沒有「深入理解」?

(3)同樣都是CCF的機子,而有的人AC有的人WA,正是自己做法的問題。誰叫自己使用了一個會產生誤差的做法呢?

(4)重測會帶來不公平。明明之前AC的人的做法明顯比浮點運算更加保險、可靠,而卻因為所謂的一些「範圍」「不要求」失去自己的優勢,後面一定會有人說沒有重測自己就省一之類的……

總而言之,個人非常不支持重測。及,能整數運算用什麼浮點運算!丟分完全是自己的事!

————個人見解,不喜勿噴


2017.12.3更新

我特么...得了獎...全國二等獎...看這前面回答得大佬們我想找個地縫鑽

以下為原答案:

....弱賽區弱選手來答一下。

當時寫的賊輕鬆,結果出來懵逼了。第一個數據和第三個數據都對,*0.3的那個算出來少一,當時就賊氣,就寫了個這個..

if(b!=0)

b=b*0.3+1;

else b=0;

小萌新以為所有的電腦都這樣子,出了考場一問同學就傻了,他們的電腦都沒有問題..於是我在擔驚受怕中度過了好久...

直到!

(第6個是我~)

由於剛接觸編程不長時間,只會第一道的我看著各位巨佬們....

順便問問那個大佬推薦一本適合萌新看的c語言入門???!(??????) ?


本人廣東普及蒟蒻一枚,第一次來NOIP複賽,就出了這麼尷尬的事。。。

第二題10分鐘解決。

第一題思考時間10s,寫代碼時間60s,這麼一道題居然有這麼深的水。。。

當時我的第一感覺就是有坑,但經過我反覆的觀察發現題目保證三個數都是10的倍數?我就寫下了

int ans=a*0.2+b*0.3+c*0.5;

的代碼,測試了樣例,一點毛病都沒有?

結果比賽結束說我60?

我一度有了放棄學編程的想法。

後來調整了分數,我心態總算沒有爆炸。

對我來說這真是個不錯的更新啊2333.


利益相關:GD普及組蒟蒻選手

我記得在考試的時候,如果直接乘零點幾的話,樣例都是過不了的。

我想大家看到出了這樣的問題就應該都知道是怎麼回事了吧...


在PJ組這麼做我覺得是非常OK的。讓競賽更純粹一些不好嗎?


面對對象造數據. . .


考試時為了穩寫的/10*3.....


在AH,更新了成績的人分數都沒有超過205,換而言之他們基本上都拿不到普省一,甚至有人重測後都沒拿到滿分。

本身這題就是考你會不會編程,本來也就沒什麼區分度。至於把這題寫炸了很大程度上還是水平不夠,即使重測了大局上也不會有更大的影響。


推薦閱讀:

在OI中,有哪些看似致命,卻沒大礙的錯誤?
如何看待 NOI2016的冬令營上 出題方與選手們展開的辯論?
高一想自學參加noip及後續的noi需要用到哪些書?
如果在noip退役怎麼調整心態?

TAG:OI | NOI | NOIP |