10年浙大校赛
A题:思维题
正赛的时候,许多人3分钟的时候就AC了。
不能往暴力上想,因为这样会导致你误入歧途,但并不是说暴力就不行,因为最后推导出来,所有的答案都是10的倍数,还是呈线性关系的,整出个精确到小数点后两位其实就是个幌子。
正解是推导出一个极其简单的式子。
其实这是一个追击问题。
就像题目说的,一天中时针和分针相遇22次,这其实就是题目的一个提示,可以想到,从分钟在举例时针x角度到分钟超过时针到x角度的时间,就是一次满足题意的时间,而这可以简单的算出来。
分钟10秒走1度,角速度为1/10;时针120秒走1度,角速度为1/120
设当分钟追击时针,且距离时针x度时,t秒之间后,分钟与时针重合,则(1/10)t=(1/120)t+x.
得到t = 120x/11,满足上述情况是2t,一天有22个这样的情况,就是120*x*2*22/11 = 480x
#include<cstdio>
int main(){
int t,x;
while(~scanf("%d",&t)){
while(t--){
scanf("%d",&x);
printf("%.2f\n",x*480.0);
}
}
return 0;
}
B题:模拟
巧妙的方法是找出每个字母的特征点,即与众不同的方法,这见仁见智。
还有就是笨笨的模拟,枚举起点,暴力的匹配,代码有点繁琐,能不能过,看你RP了。
#include<cstdio>
int XX[64][128]= {
{ 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,-1},
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,-1},
};
int YY[64][128] {
{ 5, 6, 7, 4, 5, 7, 8, 3, 4, 8, 9, 2, 3, 4, 5, 6, 7, 8, 9,10, 1, 2,10,11, 0, 1, 2,11,12, 0, 1,12,13,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1,10,11, 0, 1,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1,10,11, 0, 1,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,-1},
{ 3, 4, 5, 6, 7, 8, 9,10, 1, 2,10,11, 0, 1,11,12, 0, 1, 0, 1,11,12, 1, 2,10,11, 3, 4, 5, 6, 7, 8, 9,10,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1,11,12, 0, 1,12,13, 0, 1,12,13, 0, 1,12,13, 0, 1,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 0, 1, 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 0, 1, 0, 1, 0, 1,-1},
{ 3, 4, 5, 6, 7, 8, 9,10, 1, 2,10,11, 0, 1,11,12, 0, 1, 0, 1, 8, 9,10,11,12, 1, 2,10,11, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{ 0, 1,11,12, 0, 1,11,12, 0, 1,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 0, 1,11,12, 0, 1,11,12, 0, 1,11,12,-1},
{ 0, 1, 2, 3, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 1, 2, 3, 4, 5,-1},
{ 1, 2, 3, 4, 5, 6, 7, 8, 4, 5, 4, 5, 4, 5, 0, 1, 4, 5, 0, 1, 2, 4, 5, 2, 3, 4, 5,-1},
{ 0, 1, 8, 9,10, 0, 1, 7, 8, 9, 0, 1, 5, 6, 7, 0, 1, 2, 3, 4, 0, 1, 5, 6, 7, 0, 1, 7, 8, 9, 0, 1, 8, 9,10,11,-1},
{ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{ 0, 1,12,13, 0, 1, 2, 3,10,11,12,13, 0, 1, 3, 4, 9,10,12,13, 0, 1, 4, 5, 6, 7, 8,12,13, 0, 1, 6,12,13, 0, 1,12,13, 0, 1,12,13,-1},
{ 0, 1, 2,12,13, 0, 1, 2, 3,12,13, 0, 1, 3, 4,12,13, 0, 1, 4, 5,12,13, 0, 1, 6, 7,12,13, 0, 1, 8, 9,10,12,13, 0, 1,10,11,12,13,-1},
{ 4, 5, 6, 7, 8, 9, 2, 3, 4, 9,10,11, 1, 2, 3,10,11,12, 0, 1,12,13, 1, 2, 3,10,11,12, 2, 3, 4, 9,10,11, 4, 5, 6, 7, 8, 9,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1,11,12, 0, 1,12,13, 0, 1,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1, 0, 1,-1},
{ 4, 5, 6, 7, 8, 9, 2, 3, 4, 9,10,11, 1, 2, 3,10,11,12, 0, 1,12,13, 1, 2, 3, 5, 6, 7, 8,10,11,12, 2, 3, 4, 7, 8, 9,10,11, 5, 6, 7, 8,10,11,12,13,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1,11,12, 0, 1,12,13, 0, 1,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 0, 1,10,11, 0, 1,11,12,13,-1},
{ 3, 4, 5, 6, 7, 8, 9,10, 2, 3,11,12, 1, 2, 3,11,12,13, 3, 4, 5, 6, 7, 0, 1, 2, 6, 7, 8, 9, 2, 3, 4,10,11,12, 4, 5, 6, 7, 8, 9,10,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6,-1},
{ 0, 1,12,13, 0, 1,12,13, 0, 1,12,13, 0, 1,12,13, 0, 1, 2,11,12,13, 0, 1, 2,11,12,13, 2, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{ 0, 1, 2, 3,10,11,12,13, 1, 2, 3,10,11,12, 1, 2, 3,10,11,12, 2, 3, 4, 9,10,11, 3, 4, 5, 8, 9,10, 4, 5, 8, 9, 5, 6, 7, 8,-1},
{ 0, 1,12,13, 0, 1,12,13, 1, 2, 6, 7,11,12, 1, 2, 6, 7,11,12, 1, 2, 6, 7,11,12, 1, 2, 4, 5, 8, 9,11,12, 2, 3, 4, 9,10,11,-1},
{ 0, 1, 2, 9,10,11, 1, 2, 3, 8, 9,10, 2, 3, 4, 7, 8, 9, 4, 5, 6, 7, 2, 3, 4, 7, 8, 9, 1, 2, 3, 8, 9,10, 0, 1, 2, 9,10,11,-1},
{ 0, 1, 2, 9,10,11, 1, 2, 3, 8, 9,10, 2, 3, 4, 7, 8, 9, 4, 5, 6, 7, 5, 6, 5, 6, 5, 6,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 8, 6, 7, 5, 6, 3, 4, 2, 3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,-1},
{ 0, 1,12,13, 1, 2,11,12,13, 2, 3,11,12, 3, 4, 5, 6, 7, 8, 9,10,11, 4, 5, 9,10, 5, 6, 8, 9, 6, 7, 8,-1},
{ 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1,10,11, 0, 1,10,11, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1,10,11, 0, 1,10,11, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{ 2, 3, 4, 5, 6, 7, 8, 9, 1, 2,10,11, 0, 1,11,12,11,12, 0, 1,11,12, 1, 2,10,11, 2, 3, 4, 5, 6, 7, 8, 9,-1},
{ 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 1, 2,12,13, 0, 1,12,13, 0, 1,12,13, 0, 1,12,13, 1, 2,12,13, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,10,11,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,10,11,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{11,12,11,12,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,11,12,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,-1},
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2,10,11, 0, 1, 2, 3, 4,11,12,11,12, 0, 1,11,12, 1, 2,10,11, 2, 3, 4, 5, 6, 7, 8, 9,-1},
{ 0, 1,11,12, 0, 1,11,12, 0, 1,11,12, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12, 0, 1,11,12, 0, 1,11,12, 0, 1,11,12,-1},
{ 0, 1, 2, 3, 4, 5, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 1, 2, 3, 4, 5,-1},
{ 3, 4, 5, 6, 3, 4, 6, 7, 8, 3, 4, 7, 8, 3, 4, 3, 4, 3, 4, 0, 1, 2, 3, 4, 5, 6, 7,-1},
{ 0, 1, 2, 3,10,11, 2, 3, 4,10,11, 4, 5, 6,10,11, 7, 8, 9,10,11, 4, 5, 6,10,11, 2, 3, 4,10,11, 1, 2, 3,10,11,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,10,11,10,11,10,11,10,11,10,11,10,11,-1},
{ 0, 1,12,13, 0, 1,12,13, 0, 1, 7,12,13, 0, 1, 5, 6, 7, 8, 9,12,13, 0, 1, 3, 4, 9,10,12,13, 0, 1, 2, 3,10,11,12,13, 0, 1,12,13,-1},
{ 0, 1, 2, 3,12,13, 0, 1, 3, 4, 5,12,13, 0, 1, 6, 7,12,13, 0, 1, 8, 9,12,13, 0, 1, 9,10,12,13, 0, 1,10,11,12,13, 0, 1,11,12,13,-1},
{ 4, 5, 6, 7, 8, 9, 2, 3, 4, 9,10,11, 1, 2, 3,10,11,12, 0, 1,12,13, 1, 2, 3,10,11,12, 2, 3, 4, 9,10,11, 4, 5, 6, 7, 8, 9,-1},
{12,13,12,13, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 1, 2,12,13, 0, 1,12,13, 1, 2,12,13, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,-1},
{ 0, 1, 2, 3, 5, 6, 7, 8, 2, 3, 4, 5, 6, 9,10,11, 1, 2, 3, 5, 6, 7, 8,10,11,12, 0, 1,12,13, 1, 2, 3,10,11,12, 2, 3, 4, 9,10,11, 4, 5, 6, 7, 8, 9,-1},
{ 0, 1, 2,12,13, 2, 3,12,13, 3, 4, 5, 6, 7, 8, 9,10,11,12,13, 1, 2,12,13, 0, 1,12,13, 1, 2,12,13, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,-1},
{ 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 9,10,11, 4, 5, 6, 7,11,12,13, 6, 7, 8, 9,10, 0, 1, 2,10,11,12, 1, 2,10,11, 3, 4, 5, 6, 7, 8, 9,10,-1},
{ 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,-1},
{ 2, 3, 4, 5, 6, 7, 8, 9,10,11, 0, 1, 2,11,12,13, 0, 1, 2,11,12,13, 0, 1,12,13, 0, 1,12,13, 0, 1,12,13, 0, 1,12,13,-1},
{ 5, 6, 7, 8, 4, 5, 8, 9, 3, 4, 5, 8, 9,10, 2, 3, 4, 9,10,11, 1, 2, 3,10,11,12, 1, 2, 3,10,11,12, 0, 1, 2, 3,10,11,12,13,-1},
{ 2, 3, 4, 9,10,11, 1, 2, 4, 5, 8, 9,11,12, 1, 2, 6, 7,11,12, 1, 2, 6, 7,11,12, 1, 2, 6, 7,11,12, 0, 1,12,13, 0, 1,12,13,-1},
{ 0, 1, 2, 9,10,11, 1, 2, 3, 8, 9,10, 2, 3, 4, 7, 8, 9, 4, 5, 6, 7, 2, 3, 4, 7, 8, 9, 1, 2, 3, 8, 9,10, 0, 1, 2, 9,10,11,-1},
{ 5, 6, 5, 6, 5, 6, 4, 5, 6, 7, 2, 3, 4, 7, 8, 9, 1, 2, 3, 8, 9,10, 0, 1, 2, 9,10,11,-1},
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 7, 8, 6, 7, 4, 5, 3, 4, 2, 3, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,-1},
};
const int M=310;
char a[M][M];
int vis[32];
int num[M][M];
int dx[]={0,-1,-1,-1,0,1,1,1};
int dy[]={-1,-1,0,1,1,1,0,-1};
bool use[M][M];
int cnt;
int n,m;
void dfs(int x,int y){
use[x][y]=true;
cnt++;
for(int i=0;i<8;i++){
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>=0&&tx<n&&ty>=0&&ty<m&&a[tx][ty]=='M'&&!use[tx][ty]){
dfs(tx,ty);
}
}
}
void solve(int x,int y){
num[x][y]=cnt;
for(int i=0;i<8;i++){
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>=0&&tx<n&&ty>=0&&ty<m&&a[tx][ty]=='M'&&num[tx][ty]==-1){
solve(tx,ty);
}
}
}
int main() {
while(~scanf("%d%d",&n,&m)) {
for(int i=0; i<n; i++) {
scanf("%s",a[i]);
}
for(int i=0; i<26; i++) {
vis[i]=0;
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
num[i][j]=-1;
use[i][j]=false;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i][j]=='1') continue;
if(!use[i][j]){
cnt=0;
// printf("i=%d j=%d\n",i,j);
dfs(i,j);
// printf("cnt==%d\n",cnt);
solve(i,j);
}
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
// printf("i=%d j=%d\n",i,j);
for(int aid=0; aid<52; aid++) {
// printf("alpha=%c\n",aid+'A');
bool flag=true;
int his=0;
for(int nid=0; ~XX[aid][nid]; nid++) {
his++;
int x=XX[aid][nid];
int y=YY[aid][nid];
// printf("x=%d y=%d\n",x,y);
// printf("a[i+x][j+y]==%c\n",a[i+x][j+y]);
if(i+x>=n||j+y>=m||a[i+x][j+y]!='M') {
flag=false;
break;
}
}
if(flag){
int x=i+XX[aid][0];
int y=j+YY[aid][0];
// printf("his=%d num[x][y]=%d\n",his,num[x][y]);
if(num[x][y]!=his) continue;
if(aid>=26)
vis[aid-26]++;
else
vis[aid]++;
}
}
}
}
for(int i=0; i<26; i++) {
if(vis[i]>0) {
printf("%c",'A'+i);
}
}
puts("");
}
return 0;
}
E题:水题
按起始时间排个序,扫一遍就可以了,然后再排回来输出答案。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mt(a,b) memset(a,b,sizeof(a))
using namespace std;
const int M=128;
int jieshu[M];
struct G{
int x,y,pid,rid;
}g[M];
bool cmp1(const G &a,const G &b){
return a.x<b.x;
}
bool cmp2(const G &a,const G &b){
return a.pid<b.pid;
}
int main(){
int n,m;
while(~scanf("%d%d",&n,&m),n|m){
for(int i=0;i<n;i++){
scanf("%d%d",&g[i].x,&g[i].y);
g[i].pid=i;
}
sort(g,g+n,cmp1);
mt(jieshu,0);
for(int i=0;i<n;i++){
bool flag=false;
for(int j=1;j<=m;j++){
if(jieshu[j]<=g[i].x){
g[i].rid=j;
jieshu[j]=g[i].y;
flag=true;
break;
}
}
if(!flag) g[i].rid=0;
}
sort(g,g+n,cmp2);
for(int i=0;i<n;i++){
printf("%d\n",g[i].rid);
}
}
return 0;
}
I题:图论
问图中的点是不是一个环。
首先如果n和m不相等或者n小于3就直接是NO了
判断是否是否是连通图,然后看是否每个点的度数都为2.
#include<cstdio>
#include<cstring>
#define mt(a,b) memset(a,b,sizeof(a))
const int M=32;
bool mat[M][M];
void no(){
puts("NO");
}
void yes(){
puts("YES");
}
int num[M];
int cnt;
bool vis[M];
int n;
void dfs(int u){
cnt++;
vis[u]=true;
for(int i=1;i<=n;i++){
if(!vis[i]&&mat[u][i]){
dfs(i);
}
}
}
int main(){
int m,u,v;
while(~scanf("%d%d",&n,&m)){
mt(num,0);
mt(mat,0);
for(int i=0;i<m;i++){
scanf("%d%d",&u,&v);
num[u]++;
num[v]++;
mat[u][v]=mat[v][u]=true;
}
if(n<=2||n!=m){
no();
continue;
}
cnt=0;
mt(vis,0);
dfs(1);
if(cnt!=n){
no();
continue;
}
bool flag=true;
for(int i=1;i<=n;i++){
if(num[i]!=2){
flag=false;
}
}
if(flag){
yes();
}
else{
no();
}
}
return 0;
}