NENU ACM 13级训练赛 2014-12-21(四六级悔过战-_-|||)

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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值