SRM 563 比赛总结
2012-12-09 21:11
267 查看
第一次被rated,提交并通过了前两题,rating瞬间从0涨到了接近1500,下一次就是进division1比赛了……被虐的日子不远了……
自己写代码的速度还是太慢,写完前两题基本就没时间做第三题了。
第一题绝对是水题。
第二题是一个深度搜索的题目,需要进行一些剪枝来保证2s之内得出结果,优化之后,我的程序基本上都是0ms出结果,最后Pass System Test
中间还成功challenge了一位同学,得分+50,最终排名40左右吧,一场比赛就从division2挺进division1,不过预感好景不长了……division1里面充满着各路大神……
加油吧~~
自己写代码的速度还是太慢,写完前两题基本就没时间做第三题了。
第一题绝对是水题。
#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> using namespace std; class FoxAndHandleEasy { public: string isPossible(string, string); }; string FoxAndHandleEasy::isPossible(string S, string T) { int len=S.size(); int Tlen=T.size(); if(Tlen!=2*len) return "No"; string tmp; for(int i=0;i<=len;i++){ tmp=""; for(int j=0;j<i;j++){ tmp+=S[j]; } tmp+=S; for(int j=i;j<len;j++){ tmp+=S[j]; } if(tmp==T) return "Yes"; } return "No"; } //Powered by [KawigiEdit] 2.0!
第二题是一个深度搜索的题目,需要进行一些剪枝来保证2s之内得出结果,优化之后,我的程序基本上都是0ms出结果,最后Pass System Test
#include <vector> #include <list> #include <map> #include <set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iostream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> using namespace std; class CoinsGameEasy { public: int minimalSteps(vector <string>); void dfs(vector<string> board,int step); int row,col; int minimum; }; void CoinsGameEasy::dfs(vector<string> board,int step){ int dir_row[]={0,0,1,-1}; int dir_col[]={1,-1,0,0}; if(step>10 || step>=minimum) return; int r1=-1,r2=-1,c1=-1,c2=-1; int r1_new=-1,r2_new=-1,c1_new=-1,c2_new=-1; for(int i=0;i<row;i++){ for(int j=0;j<col;j++){ if(board[i][j]=='o' && r1==-1){ r1=i; c1=j; continue; } else if(board[i][j]=='o' && r1!=-1){ r2=i; c2=j; break; } } } for(int i=0;i<4;i++){ int tmp_r=r1+dir_row[i]; int tmp_c=c1+dir_col[i]; bool moved=false; int counter=0; if(tmp_r<0 || tmp_r>=row || tmp_c<0 || tmp_c>=col ){ counter++; } tmp_r=r2+dir_row[i]; tmp_c=c2+dir_col[i]; if(tmp_r<0 || tmp_r>=row || tmp_c<0 || tmp_c>=col ){ counter++; } if(counter==1){ if(step<minimum) minimum=step; return; } if(counter==2) continue; tmp_r=r1+dir_row[i]; tmp_c=c1+dir_col[i]; if(tmp_r>=0 && tmp_r<row && tmp_c>=0 && tmp_c<col && board[tmp_r][tmp_c]!='#'){ r1_new=tmp_r; c1_new=tmp_c; moved=true; } else{ r1_new=r1; c1_new=c1; } tmp_r=r2+dir_row[i]; tmp_c=c2+dir_col[i]; if(tmp_r>=0 || tmp_r<row || tmp_c>=0 || tmp_c<col ){ counter++; } if(tmp_r>=0 && tmp_r<row && tmp_c>=0 && tmp_c<col && board[tmp_r][tmp_c]!='#'){ r2_new=tmp_r; c2_new=tmp_c; moved=true; } else{ r2_new=r2; c2_new=c2; } if(r1_new==r2_new && c1_new==c2_new) continue; if(moved==false) continue; vector<string> boa=board; boa[r1][c1]='.'; boa[r2][c2]='.'; boa[r1_new][c1_new]='o'; boa[r2_new][c2_new]='o'; dfs(boa,step+1); } } int CoinsGameEasy::minimalSteps(vector <string> board) { row=board.size(); col=board[0].size(); minimum=50; dfs(board,1); if(minimum>10) return -1; return minimum; } //Powered by [KawigiEdit] 2.0!
中间还成功challenge了一位同学,得分+50,最终排名40左右吧,一场比赛就从division2挺进division1,不过预感好景不长了……division1里面充满着各路大神……
加油吧~~
相关文章推荐
- SRM 562 比赛总结
- 2017.9.23 C组比赛总结
- 2016.10.29初中部上午NOIP普及组比赛总结
- SRM 585 DIV 1 总结
- SberbankRussianHousingMarket数据挖掘比赛总结
- sc2017新初三膜你赛3 比赛总结
- acm比赛 数据类型方面的错误总结(没必要的错误)
- 由于空间,注定的结果——第五届山东省ACM编程比赛总结
- 比赛7 总结
- 2016.7.13纪中比赛总结
- SRM 563 500pts SpellCards
- 2016-9-10比赛总结
- Kaggle-Camera_Model_Identification 比赛记录总结[19/582(Top 4%)]
- 2011成都regional比赛总结
- 2016,9,24比赛总结
- 【比赛总结】Charlson Cup 3 -- ContestHunter
- ZCTF-2017 比赛总结
- 2016.10.5比赛总结及八、九月总结
- 8_21 比赛总结 [暑假集训]
- 第39届大学生程序设计大赛亚洲区域赛广州站比赛总结