恩,好吧,今天開始寫博客作爲學習筆記。。。(第一篇博客啊這可是)
說下起因吧,5月7號一個學長突然打來一個電話讓我參加一個安徽省的編程比賽,雖然知道自己很菜但不好意思拒絕學長就當免費出去玩兩天啦,哈哈。直到幾天後,我才直到這次比賽是要組隊的。。。完了,要坑隊友 - -。5.11號,接到一個陌生來電,額,原來是隊友找上來了。。。經過一番瞭解……“臥槽,學長你怎麼給我找了兩個神級隊友?”“額,不用緊張,以後我給你找些題做吧”
就這樣,從12號晚上開始我就開始在RQNOJ上找質量爲“3星”的題開始做……
第一道題《PID200/奧運火炬到福州》。
看到題目給我的第一感覺是和之前沒事的時候在hdoj上做的題目差不多啊,應該沒什麼難度。就開開心心的敲起代碼……第一天晚上沒多少時間,沒做完,就留到了週二的物理課上,沒多久便搞定,還模擬了下一題:《PID328/自然地謎語》 , 和去年做過的一道題差不多,用char型數組模擬完。後來突然想到用string類應該更簡單啊,無奈string類的東西基本已經忘光,還是等回宿舍複習一下再試。
回宿舍後趕快過去提交第一題,滿懷信心……不過卻看到WA60.。百度一下WA是WrongAnswer的縮寫。常見的錯誤原因是數據類型開的不夠大導致溢出,然後不得不復習一遍各種整數類型和其長度 - -, 據說用double可避免大多數溢出,於是改,提交,錯。。。然後將動態數組改成常規數組(因爲之前做一道題還自學了二維動態數組,看了別人的答案發現都不用的,畢竟數組容易出問題,後來學長告訴我競賽題都開最大數組)結果還是WA60。改了幾個小時,依舊……終於在翻了好久的題目討論之後才發現有輸入 0 的情況我沒考慮 - -。坑啊。再改了會,終於AC了 。。。
代碼如下:
/******************************************************
*RQNOJ_PID328/自然地謎語
*******************************************************/
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n , m , i ;
double tili1[18511] , tili2[18511] , A , B , C , D ;
bool renshu , average , fangcha;
while(cin >> n >> m )
{
if( n==0 && m != 0)
{
cout << "can't" << endl;
continue;
}
else if(m==0)
{
cout << "can" << endl;
continue;
}
A = B = C = D = 0;
renshu = average = fangcha = false;
for (i = 0 ; i < n ; i++)
cin >> tili1[i];
for (i = 0 ; i < m ; i++)
cin >> tili2[i];
if(n > m)
renshu = true;
for (i = 0 ; i < n ; i++)
A += tili1[i];
for (i = 0 ; i < m ; i++)
B += tili2[i];
A /= n;
B /= m;
if (A > B)
average = true;
for (i = 0 ; i < n ; i++)
C += pow((A-tili1[i]),2);
for (i = 0 ; i < m ; i++)
D += pow((B-tili2[i]),2);
C /= n;
D /= m;
if (C < D)
fangcha = true;
if(renshu && average && fangcha)
cout << "can" << endl;
else
cout << "can't" << endl;
}
return 0;
}