博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【乱搞】【AOJ-574】爱就大声说出来
阅读量:5333 次
发布时间:2019-06-15

本文共 1370 字,大约阅读时间需要 4 分钟。

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
3IALAUIILLUUAILUILUA
 
Sample Output
1 3 51 3 62 3 7
思路:
从vol表达式下手  (j-i)*(k-i)*(k-j) 则i与k距离越大越好 所以I取第一次出现的 U取最后一次出现的 L应越靠近(i+k)/2越好 直接枚举一遍也不会超时
 
参考代码:
#include 
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]!='\0') { if(c[m]=='I'&&first_i) { i=m; first_i=0; } if(c[m]=='U') k=m; m++; } m=0; while(c[m]!='\0') { if(c[m]=='L'&&m>i&&m

 

 

转载于:https://www.cnblogs.com/ahu-shu/p/3484455.html

你可能感兴趣的文章
sql server sql查询数据库的表,字段,主键,自增,字段类型等信息
查看>>
Timus 1090 树状数组
查看>>
求问,我想android开机不启动自带的界面,启动自己做的应用程序,该怎么做?...
查看>>
请教关于surfaceview背景初始化
查看>>
python第四天 三级菜单新思路
查看>>
python基础学习笔记——反射
查看>>
CS231n笔记 Lecture 5 Convolutional Neural Networks
查看>>
Oracle游标
查看>>
详解nginx 配置多个tomcat共用80端口
查看>>
浅谈欧拉定理的证明
查看>>
MySQL查询机制
查看>>
JAVA中哪些情况下类不能够被继承?
查看>>
【编程之美】2.13 子数组的最大乘积
查看>>
Collection2
查看>>
62. Unique Paths
查看>>
C++普通函数与模板函数以及特化函数重载的优先级问题
查看>>
php 经典分页
查看>>
JavaScript 中的面向对象的初步认识
查看>>
mybaits中"#"和"$"的区别
查看>>
黑马程序猿——12,多线程(2)
查看>>