zoukankan      html  css  js  c++  java
  • 2013腾讯编程马拉松初赛:小Q系列故事——屌丝的逆袭

    小Q系列故事——屌丝的逆袭
    Time Limit : 300/100ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)

    Problem Description

      毕业于普通本科的小Q一直自称是资深屌丝,不仅学校不知名,甚至他自己在这个普通学校也是默默无闻——直到临近毕业的时候,班里5朵金花中的2位甚至从没和他说过话!
      谁又能想到,如此不起眼的小Q在历经重重面试环节后,竟然如愿以偿加入了心仪已久的腾讯公司!消息刚刚传开的那几天,这在他们班甚至整个学院都是讨论的热门话题,如果这时候你还表示不知道小Q是谁,你都会被大家当作怪物的。
      正所谓野百合也有春天,屌丝也有逆袭的那一天!
      
      刚到腾讯大厦上班的那几天,小Q眼中的一切都是那么新鲜,连每天见到的前台MM在他眼中都胖的那么可爱。小Q就这样在紧张与兴奋的情绪中度过了一天又一天,每天即勤奋认真又小心翼翼,很希望能给主管留下个好印象,以免失去这来之不易的工作机会。
       一段时间以后,随着对工作环境以及同事的熟悉,小Q逐渐放松下来,在工作间隙,他细细观察了自己的工作环境,发现整个工作室是一个N行M列的矩形布局, 或者是因为屌丝的本性逐步暴露,他还暗自给每个同事在心里进行了魅力值评分(为区别男女,男生一律用负整数表示,女生一律用正整数表示)。
      现在,小Q把所有人的数据记录下来,并且这样定义一个位置的价值:
      1、一个位置的价值只和其上下左右四个邻居的魅力值有关(对于靠边的位置,只考虑其存在的邻居);
      2、如果某位置的邻居和该位置主人性别不同,则总分加上邻居魅力值的绝对值,否则减去;
      3、对周围所有邻居的数据处理后,最终的得分即为这个位置的最终得分,得分越高,则该位置越好;

      现在你能帮助小Q计算一下哪里才是最佳位置吗?

    Input

    输入包含多组测试数据;
    每组测试数据的第一行包含2个整数N和M,表示工作室的布局是N行M列;
    接下来的N行,每行有M个整数,分别表示对应位置员工的魅力值数据Ki,正整数表示女生的魅力值,负整数表示男生的魅力值;
    N和M为0的时候表示输入数据结束。

    [Technical Specification]
    N<=20
    M<=20
    -100<=Ki<=100

    Output

    请计算并输出最佳位置的行列号以及对应的得分,如果得分最高的位置有多个,则请输出行号最小的那个,行号还相同的话,再比较列号,只输出列号最小的那个即可。

    Sample Input

    2 3
    5 -4 3
    -6 3 7
    0 0
    

    Sample Output

    1 2 11



    代码如下:
     1 #include<iostream>
     2 #include<math.h>
     3 #define L 22
     4 using namespace std;
     5 int main()
     6 {
     7     static int key[L][L];
     8     static int f[L][L];
     9     int N,M;
    10     while(cin>>N>>M)
    11     {
    12         if((N==0)&&(M==0))
    13             return 0;
    14         int i,j,kv;
    15         for(i=1;i<=N;i++)
    16         {    for(j=1;j<=M;j++)
    17             {
    18                 cin>>kv;
    19                 key[i][j]=kv;
    20                 if(kv>0)
    21                     f[i][j]=1;
    22                 else
    23                     f[i][j]=-1;
    24             }
    25         }
    26         int sum,mh,ml;
    27         int max=-401;
    28         for(i=1;i<=N;i++)
    29         {
    30             for(j=1;j<=M;j++)
    31             {
    32                sum=0;
    33                           if((f[i][j]+f[i][j-1])==0)
    34                    sum+=abs(key[i][j-1]);
    35                else
    36                    sum-=abs(key[i][j-1]);
    37 
    38                if((f[i][j]+f[i][j+1])==0)
    39                    sum+=abs(key[i][j+1]);
    40                else
    41                    sum-=abs(key[i][j+1]);
    42 
    43                if((f[i-1][j]+f[i][j])==0)
    44                    sum+=abs(key[i-1][j]);
    45                else
    46                    sum-=abs(key[i-1][j]);
    47 
    48                if((f[i+1][j]+f[i][j])==0)
    49                    sum+=abs(key[i+1][j]);
    50                else
    51                    sum-=abs(key[i+1][j]);
    52                if(sum>max)
    53                {
    54                    max=sum;
    55                    mh=i;
    56                    ml=j;
    57                }
    58             }
    59         }
    60         cout<<mh<<" "<<ml<<" "<<max<<endl;
    61     }
    62     return 0;
    63 
    64 }
    在自己电脑上通过了,但是在杭电上总是AC不了,不知道是不是输出格式错误,请大家帮忙看看~
  • 相关阅读:
    Sqlserver 实际开发中表变量的用法
    Python Day 20 面向对象 (面向对象的组合用法,面向对象的三大特性
    Python Day 19 面向对象(初识面向对象)
    Python Day 18 常用模块(模块和包)
    Python Day 17 常用模块(常用模块一 时间模块,random模块,os模块,sys模块,序列化模块)
    Python Day 15 函数(递归函数、二分查找算法)
    Python Day 14 函数(内置函数,匿名函数(lambda表达式))
    Python Day 13 函数(迭代器,生成器,列表推导式,生成器表达式)
    Python Day 11 + Python Day 12 函数(函数名的应用,闭包,装饰器)
    Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)
  • 原文地址:https://www.cnblogs.com/justcxtoworld/p/2974124.html
Copyright © 2011-2022 走看看