比賽鏈結
今天又全跪了,0題,我想哭,不過比賽就是這樣,生活還得繼續,不能放棄,真的,沒關係,好好總結,以後多做總結,多看看以前做的題,溫故而知新,
手腦要配合一起思考,每天總結當天的收穫,**不足要加以改進,嚴格對待自己的缺點,每天與自己比,不要和別人比,每個人的情況都不相同,每天要贏自己一把,
注意休息,注意身體。
這次比賽有兩道題我做過,
1008題即hdu3833題 這題做過,已經記不清這題是自己做的還是在網上搜的了。
題目鏈結
這次我開始是想用hash來遍歷的,不過遍歷要三重迴圈,但是當時沒看到 the latter is a permutation of 1 to n.認為ai可能很大,就放棄hash了
那時覺得二分比較好(n*nlog(n))的複雜度,不過也超時,
正確的方法是用hash記錄每個數的位置,hash【a【i】】=i 因為a【i】是1到n的數n<=10000;
再看hash【】是否在i j 範圍內。
二分超時**,此刻,我覺得這**不止n*n*log(n)了,它還有個排序,我太天真了。加個排序還不如乙個for直接找。
#include
#include
#include
#include
using namespace std;
int a[10010],b[10010];
int two(int i,int j,int n)
else
}return 0;
}int main(void)
else if(flag1&&s1[i]=='.')
else if(flag1&&s1[i]=='\0')
else
if(flag2&&s2[i]=='0')
else if(flag2&&s2[i]=='.')
else if(flag2,s2[i]=='\0')
else
if(flag1==0&&flag2==0)
break;}}
else if(flag1)
else if(flag1&&s1[i]=='.')
else
break;}}
else if(flag2)
else if(flag2&&s2[i]=='.')
else
break;}}
//printf("%s %s\n",s1,s2);
if(f1==f2)
else
}return 0;
}後來想想沒有必要要s1和s2陣列,因為新的處理前導0和『-』後的字串,一定延後於前面的陣列。
看**#include
#include
#include
#include
using namespace std;
char a[100000],b[100000];
//char s1[100000],s2[100000];
int main(void)
else if(flag1&&a[i]=='.')
else if(flag1&&a[i]=='\0')
else
if(flag2&&b[i]=='0')
else if(flag2&&b[i]=='.')
else if(flag2,b[i]=='\0')
else
if(flag1==0&&flag2==0)
break;}}
else if(flag1)
else if(flag1&&a[i]=='.')
else
break;}}
else if(flag2)
else if(flag2&&b[i]=='.')
else
break;}}
//printf("%s %s\n",s1,s2);
if(f1==f2)
else
}return 0;
}網上看了一些**,有些沒有處理負數即 -0和0,-0010 -10,也ac了,不過他處理前導0字尾無效0的方法比較好。
看**#include
#include
#include
int main()
int k=j;
while(a[j])
j=0;//對a陣列刪除前面輸入的零,e.g00001==1
while(b[j]=='0')
k=j;
while(b[j])
//對b陣列刪除前面輸入的零
j=0;
if(strchr(c,'.'))//字串判斷函式,如果c字串中含有'.'則返回'.'的位置指標,否則返回null
j--;
while(c[j]=='0')
//刪除小數點後面的零,e.g 123.000=123.00000000
if(c[j]=='.')
c[j]='\0';//刪除小數點,e.g 123.0000=123
}j=0;
if(strchr(d,'.'))
j--;
while(d[j]=='0')
if(d[j]=='.')
d[j]='\0';
}//類似以上處理
/*if(strlen(c)!=strlen(d))
printf("no\n");//判斷長度是否相等
else//比較
i++;
}if(t==0)
else
}*/if(strcmp(c,d)==0)
printf("yes\n");
else
printf("no\n");
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(d,0,sizeof(d));
}//system("pause");
return 0;
}這題的資料應該是按常識來的例如是不會出現-0 0 -0010 10 這樣的資料的。也不會出現0010 10這樣的資料
又看了只處理小數點後面無效的0的也過了。
看**#include
#include
#include
using namespace std;
char a[100000],b[100000];
void change(char s)
}if(s[len-1] == '.')
s[len-1] = '\0';
}int main()
return 0;
}對於這題只要處理小數點後面的無效的0。就可以了。
1002題對應hdu1396題
題目鏈結
這個是我第乙個開始做的,看到它的時候,覺得它明顯不難,因為只是數個三角形而已,所以就第乙個做它,當時太急了,想了一下就開始做了
根本沒有考慮這樣做是否正確,還有沒有其他的想法,導致錯了盲目改,改了又發現又有地方沒有考慮到,做題要做到穩中求快,別一味求快,這樣搞不好浪費的時間更多。
這題浪費了我很多時間,導致做其他題目沒有時間,更加緊張,
比完後去吃飯的路上,我又想了想這題,想到我是不是把正立的三角形與倒立的三角形分開考慮呢。
今天用這種方法想了一下a了,本來這次比賽上面三個題目是完全可以a的,以後做題要穩中求勝,做到一a。
**#include
#include
int main(void)
}for(i=n-1;i>=1;i--,i--)
}printf("%d\n",s);
}return 0;
}
選拔賽總結
時間限制 1 sec 記憶體限制 512 mb 提交 18 解決 9 提交 狀態 討論版 命題人 admin 題目描述 手機端qq推出了貼表情的新功能,復讀機勢力再次猖狂起來,她們把表情貼的到處都是!裙主決定把被復讀次數最多的表情從聊天記錄中刪去。聊天框是乙個大小為n x m的黑白點陣。背景色是白色...
選拔賽 旅遊
傳送門 首先有3種風景點,因此對應就有8種狀態 狀態表示的是到某個點經過的風景點有哪些 到每個點都有8種狀態,記錄狀態的話用的是dis陣列的第二維 將第二維j轉化為乙個二進位制數對應有3位,第一位表示的是a類風景點的狀態,第二位表示的是b類風景點的狀態,第三位表示的是c類風景點的狀態,對應的數字若是...
SDUT 2012省賽選拔賽1
a bfs 優先佇列。第一天只能感染defence小於等於1的並且與之連線的機器,第二天只能感染defence小於等於2的並且與之連線的機器.依次往後推。include include include include define maxn 505 using namespace std int g...