如何評價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分,當時就感到非常詫異,事後才知道很多人被卡了精度。
首先個人覺得重測是錯誤的。
(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退役怎麼調整心態?