• 【乱搞】【AOJ-574】爱就大声说出来


    Description
    时间是一把刻刀,也是无情的流水。它曾经用它锋利的刀刃深深刻进 FF 心里的那个女孩,也被流年洗刷得只剩下模糊的影子。时隔一年之后,逐渐从往年的心事中走出来的 FF 邂逅了另一个让他心动的人。她会是 FF 一直寻找着的那个人吗?FF 没办法知道,他只知道,爱就要大声说出来。请你帮助 FF 找到最“大声”的表白方式。
    给定一个字符串,定义一种表白方式如下:
    从字符串中选取三个字符:"I", "L", "U",(区分大小写)。假设选取的"I", "L", "U"分别是字符串中的第 i, j, k 个字符,且 i, j, k 满足条件 i<j<k ,则称这种选取方式为一种表白方式。
    一种表白方式的“音量”按照下面的公式计算:
    音量 vol = (j-i)*(k-i)*(k-j)。
    请根据给定的字符串找到最“大声”的表白方式。
    Input
    一个整数 n,表示有 n 组测试数据。
    每组测试数据一行,包含一个字符串。
    字符串长度不超过 1000。
    输入保证至少含有一种满足定义的表白方式。
    Output
    每组输入对应一行输出。
    每组输出包含三个整数 i, j, k, 表示被选中的字符 "I", "L", "U" 分别是字符串中的第 i, j, k 个字符。数字之间用空格隔开。如果存在多个答案,则输出 i 最小的一组。i 相等则输出 j 较小的,以此类推。
    Sample Input
    3
    IALAU
    IILLUU
    AILUILUA

     
    Sample Output
    1 3 5
    1 3 6
    2 3 7
    
    思路:
    从vol表达式下手  (j-i)*(k-i)*(k-j) 则i与k距离越大越好 所以I取第一次出现的 U取最后一次出现的 L应越靠近(i+k)/2越好 直接枚举一遍也不会超时
     
    参考代码:
    #include <stdio.h> 
    char c[1010]; 
    int abs(int n) 
    { 
        if(n<0) 
            return -n; 
        else
            return n; 
    } 
    int main() 
    { 
        int n; 
        scanf("%d",&n); 
        while(n--) 
        { 
            scanf("%s",c); 
            int m=0,first_i=1,j=0,i,k,vol,max=0,first=1,temp; 
            while(c[m]!='') 
            { 
                if(c[m]=='I'&&first_i) 
                { 
                    i=m; 
                    first_i=0; 
                } 
                if(c[m]=='U') 
                    k=m; 
                m++; 
            } 
            m=0; 
            while(c[m]!='') 
            { 
                if(c[m]=='L'&&m>i&&m<k) 
                { 
                    if(first) 
                    { 
                        j=m; 
                        first=0; 
                    } 
                    temp=m; 
                    vol=(temp-i)*(k-i)*(k-temp); 
                    if(max<vol) 
                    { 
                        max=vol; 
                        j=temp; 
                    } 
                      
                } 
                m++; 
            } 
            printf("%d %d %d
    ",i+1,j+1,k+1); 
        } 
        return 0; 
    }
     
  • 相关阅读:
    Word 语法高亮
    AsyncFileUpload+Editor
    Silverlight QQ
    网页变黑白…
    Accelerator in Internet Explorer 8
    VS2010中文版安装Silverlight4 Tools…
    Win7下要求以管理员权限运行程序
    AjaxControlToolkitSeaDragon
    WebSlices in Internet Explorer 8
    <当和尚遇到钻石>读书笔记
  • 原文地址:https://www.cnblogs.com/ahu-shu/p/3484455.html
Copyright © 2020-2023  润新知