首页 > ACM题库 > HDU-杭电 > hdu 2022 海选女主角[解题报告]C++
2013
12-26

hdu 2022 海选女主角[解题报告]C++

海选女主角

问题描述 :

potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。
“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅…”potato老师很是无奈。
“张艺谋比你还难看,现在多有钱呀,听说还要导演奥运开幕式呢!你为什么不去娱乐圈发展呢?”lwg在一旁出主意。
嗯,也是,为了生存,就委屈点到娱乐圈混混吧,马上就拍一部激光电影《杭电记忆――回来我的爱》。
说干就干,马上海选女主角(和老谋子学的,此举可以吸引媒体的眼球,呵呵),并且特别规定,演员必须具有ac的基本功,否则直接out!
由于策划师风之鱼(大师级水王)宣传到位,来应聘的MM很多,当然包括nit的蛋糕妹妹等呼声很高的美女,就连zjut的jqw都男扮女装来应聘(还好被安全顾问hdu_Bin-Laden认出,给轰走了),看来娱乐圈比acm还吸引人哪…
面试那天,刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。
一开始我很纳闷:分数怎么还有负的?Fe(OH)2解释说,根据选拔规则,头发染成黄色、化妆太浓、穿的太少等等都要扣分数的,扣的多了就可能是负分了,当然,如果发现话语中夹有日语,就直接给-2147483648分了。
分数送上来了,是我做决定的时候了,我的一个选拔原则是,要选一个面试分数绝对值(必须还是32位整数)最大的MM。
特别说明:如果不幸选中一个负分的MM,也没关系,因为我觉得,如果不能吸引你,那要想法恶心你。

输入:

输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。

输出:

输入数据有多组,每组的第一行是两个整数m和n,表示应聘MM的总共的行列数,然后是m行整数,每行有n个,m和n的定义见题目的描述。

样例输入:

2 3
1 4 -3
-7 3 0

样例输出:

2 1 -7

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2022

这题其实是跟小明调查统计是一个性质的,只是多加了一个绝对值,不懂的可以去看小明调查统计(二)。直接水过。

代码:

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
struct hx
{
    int fs;
    int hh;
    int lh;
}w[10001];
bool comp(hx x,hx y)
{
    if(abs(x.fs)>abs(y.fs)) return true;
    if(abs(x.fs)==abs(y.fs)&&x.hh<y.hh) return true;
    if(abs(x.fs)==abs(y.fs)&&x.hh==y.hh&&x.lh<y.lh) return true;
    return false;
}
int main()
{
    int n,m,i,j,count,cj;
    while(~scanf("%d %d",&n,&m))
    {
        count=0;
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=m;j++)
            {
                scanf("%d",&cj);
                w[count].hh=i;
                w[count].lh=j;
                w[count].fs=cj;
                count++;
            }
        }
        sort(w,w+count,comp);
        printf("%d %d %d\n",w[0].hh,w[0].lh,w[0].fs);
    }
    return 0;
}

解题转自:http://blog.csdn.net/a_eagle/article/details/7170990


  1. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。

  2. 我还有个问题想请教一下,就是感觉对于新手来说,递归理解起来有些困难,不知有没有什么好的方法或者什么好的建议?

  3. 有限自动机在ACM中是必须掌握的算法,实际上在面试当中几乎不可能让你单独的去实现这个算法,如果有题目要用到有限自动机来降低时间复杂度,那么这种面试题应该属于很难的级别了。