怎样在google code jam官网里取得更好的成绩

您所在的位置:
& 滚动新闻 & 正文
全球100位编程高手同台PK
日02:13  
  中山选手获世界编程大奖
? | ?推广 |
  奥一网讯被誉为世界编程比赛的“诺贝尔奖”的GoogleCodeJam2006编程大赛总决赛于北京时间10月28日在美国纽约Google公司降下帷幕。代表中国大陆参赛的唯一中学生代表中山小选手余江伟荣载着初赛22名决赛96名的好成绩昨日回到了中山。据悉,广东省有两位选手参赛,另一位是中山大学在校生。
  据悉,GoogleCodeJam2006是Google与TopCoder举办的第四届全球编程大赛。此次比赛共吸引了来自100个国家的21000名选手报名参加。初赛以网上比赛方式,于9月5日进行第一轮淘汰赛剩余1000名选手;9月14日进行了第二轮淘汰赛,筛选出500名选手;9月19日再进行第三轮淘汰赛,最终决出前100名选手。市一中学生余江伟以第22名的优秀成绩入围,获得Google全程赞助直接去美国纽约Google(谷歌)公司工程部参加总决赛。入围的前100名的优胜选手中,中国大陆有12位来自各行各业的编程高手,余江伟是其中唯一的中学生代表。
  昨日,市一中的老师向记者通报了余江伟的成绩:全球初赛22名,全球决赛96名。据余江伟的指导老师介绍,决赛上余江伟的发挥并不好,但余完全有实力在下次赢得更好的成绩。
腾讯微博:
同时更新资讯所属地
暂无更新,休息一会儿
白羊座(03.21-04.19)
金牛座(04.20-05.20)
双子座(05.21-06.21)
巨蟹座(06.22-07.22)
狮子座(07.23-08.22)
处女座(08.23-09.22)
天秤座(09.23-10.23)
天蝎座(10.24-11.22)
射手座(11.23-12.21)
摩羯座(12.22-01.19)
水瓶座(01.20-02.18)
双鱼座(02.19-03.20)
今日运势:
本日可多参与公众事务,将自己的意见与兴趣结合,提供同好们做参考,让欢乐的气氛添加一些趣味性...
Copyright & 1998 - 2017 Tencent. All Rights Reserved&&&&&&&&&&&&&&&&&&
posts - 38,comments - 4,trackbacks - 0
拿下 ABD, 顺利晋级, 预赛的时候C没有仔细想,推荐C题,一个非常不错的构造题目!
A Magic Trick 简单的题目来取得集合的交并
#include &iostream&
#include &algorithm&
#include &set&
#include &vector&
using namespace
int main()
freopen("A-small-attempt0.in","r",stdin);
freopen("A-small-attempt0.out","w",stdout);
for(int t=1; t&=T; t++)
int m[4][4];
set&int& X;
for(int i=0; i&4; i++)
for(int j=0; j&4; j++)
cin&&m[i][j];
== x) X.insert(m[i][j]);
set&int& Y;
for(int i=0; i&4; i++)
for(int j=0; j&4; j++)
cin&&m[i][j];
== y) Y.insert(m[i][j]);
vector&int& ret(X.size() + Y.size());
auto itr = set_intersection(X.begin(),X.end(), Y.begin(),Y.end(), ret.begin());
ret.resize(itr - ret.begin());
cout&&"Case #"&&t&&": ";
if(ret.size() == 1)
cout&&ret[0]&&
else if(ret.size() & 1)
cout&&"Bad magician!"&&
cout&&"Volunteer cheated!"&&
B Cookie Clicker Alpha& 核心观察可以通过简单的推导获得一个upper& bound,然后枚举到这个upper bound就OK。
#include &iostream&
#include &cmath&
using namespace
int main()
freopen("B-large.in","r",stdin);
freopen("B-large.out","w",stdout);
for(int t = 1; t&= T; t++)
double C,F,X;
cin&&C&&F&&X;
double ret = X/2.0;
int up = max( (F*X - 2*C)/(F*C), 0.0);
//cout&&up&&
double Nec = 0.0f;
for(int k = 0; k& k++)
Nec += C/(2+k*F);
ret = min(ret, Nec + X/(2+(k+1)*F));
printf("Case #%d: %.7f\n", t, ret);
//cout&&"Case #"&&t&&": "&&ret&&
C Minesweeper Master& 这是一个构造的题目,非常非常的不错!核心观察在于扫雷的机制在边界的时候需要是2*n的这样一个结构才可能保证顺利完成边界情况。
#include &iostream&
using namespace
char Map[55][55];
int main()
freopen("C-large-practice.in","r",stdin);
freopen("C-large-practice.out","w",stdout);
int T; cin&&T;
for(int t= 1; t&=T; t++)
bool possible = false;
int R,C,M;
cin&&R&&C&&M;
for(int i=0; i&R; i++)
for(int j=0; j&C; j++)
Map[i][j] = '*';
if(R == 1 || C == 1 || R*C == M+1)
possible = true;
Map[0][0] = 'c';
int num = R*C - M-1;
for(int i=0; i&R; i++)
for(int j=0; j&C; j++)
if(i==0 && j==0) continue;
else if(num &0)
Map[i][j] = '.';
}else Map[i][j] = '*';
for(int r = 2; r&=R; r++)
for(int c = 2; c&=C; c++)
int mineleft = M - (R*C - r*c);
if( mineleft &= (r-2)*(c-2) && mineleft &=0)
possible = true;
for(int i=0; i&R; i++) for(int j=0; j&C; j++)Map[i][j] = '*';
Map[0][0]= 'c';
for(int i=0; i&2; i++) for(int j=0; j&c; j++)
if(i ==0 && j==0) continue;
Map[i][j] = '.';
for(int i=2; i&r; i++) for(int j=0; j&2; j++) Map[i][j] = '.';
mineleft = (r-2)*(c-2) -
for(int i= 2; i&r; i++) for(int j=2; j&c; j++)
if(mineleft & 0)
mineleft --;
Map[i][j] = '.';
} else Map[i][j] = '*';
cout&&"Case #"&&t&&":"&&
if(possible)
for(int i=0; i&R; i++)
for(int j=0; j&C; j++)
cout&&Map[i][j];
cout&&"Impossible"&&
详细的分析参见:
D Deceitful War 类似于田忌赛马的问题,核心观察在于 每一个人的最优策略都是采用刚刚比你大的来进行比较。
#include &iostream&
#include &vector&
#include &algorithm&
using namespace
int main()
freopen("D-large.in","r",stdin);
freopen("D-large.out","w",stdout);
int T; cin&&T;
for(int t=1; t&= T; t++)
vector&double& A(N);
vector&double& B(N);
for(int i=0; i&N; i++) cin&&A[i];
for(int i=0; i&N; i++) cin&&B[i];
sort(A.begin(), A.end());
sort(B.begin(), B.end());
int War = 0;
for(int i = A.size()-1, j= B.size()-1; i&=0 && j&= 0;)
if(B[j]&A[i])
} else if(B[j] &A[i])
//cout&&N - War&&
int NOWar = 0;
for(int i = B.size()-1, j= A.size()-1; i&=0 && j&= 0;)
if(A[j]&B[i])
} else if(A[j] &B[i])
//cout&&NOWar&&
cout&&"Case #"&&t&&": "&&NOWar&&" "&&N-War&&
阅读(...) 评论()

我要回帖

更多关于 google code jam 2017 的文章

 

随机推荐