赛后总结AtCoder Beginner Contest 090(Beginner)

妈也,这些题目我竟然……做不出!!!???

考时和平时是两、码、事!!!

 ——————————————————————————————————————————

好了,让我们冷静地分析一下为什么会这样。[题意、题解分析来自网络][英语不好是个伤]

a.3分钟。其实花了好久才看懂题面。

 A题题解:直接输出左上对角线即可。

b.12分钟。还好,达标。

 B题题意:求给定区间中回文数的个数。

 B题题解:暴力即可。

c.题面都没有看懂(为什么不叫它扫雷),但是俺机智地找到了规律!

  C题题意:给定一个矩阵,每个点放正面朝上的牌,依次翻动每张牌,翻动时会同时翻动该点周围8个点的牌,问最后正面朝下的牌的个数

  C题题解:对于只有一行的情况就是只有两头的牌最后是正面朝上的,多行的情况下可以看出只有最外围一圈的牌翻动偶数次,即最后正面朝上。

英雄所见略同。

所以我:

	if(n==1||m==1) printf("%lld",n*m-2);
	else if(n==2||m==2) printf("lld",n*m-4);
	else printf("%lld",n*m-(n+m-2)*2);

但是为什么还是WA了一个点嘞?

因为当n=1且m=1时,代进去发现答案是个负数。所以在前面要加一行特判:if(n==1&m==1)cout<<1<<endl; return 0;

得出经验:规律题,越靠近0的数越容易有坑。建议找找负数、负环之类的特殊情况并特判掉。

d.数论推对了!按理来说,代码明明是对的。

但是sum=(b-k)*(n/b)+((n%b)+1-k);时,不仅仅是sum,n、k也要开long long!!!(n,k<=10^5)

  首先呢,又不是开不起,开着long long又怎样

  第二是,比赛时时间不多了,心里急,就按照习惯打了。

       我的习惯:能开float不开double,能开int不开long long。

       得出经验:在空间满足的前提下,养成开更优类型的数组/变量的习惯。