发奖金
来源:互联网 发布:c语言静态变量定义 编辑:程序博客网 时间:2024/04/29 08:33
题目描述
狐进行了一次黑客马拉松大赛,全公司一共分为了N个组,每组一个房间排成一排开始比赛,比赛结束后没有公布成绩,但是每个组能够看到自己相邻的两个组里比自己成绩低的组的成绩,比赛结束之后要发奖金,以1w为单位,每个组都至少会发1w的奖金,另外,如果一个组发现自己的奖金没有高于比自己成绩低的组发的奖金,就会不满意,作为比赛的组织方,根据成绩计算出至少需要发多少奖金才能让所有的组满意。
输入描述:
每组数据先输入N,然后N行输入N个正整数,每个数表示每个组的比赛成绩。
输出描述:
输出至少需要多少w的奖金
输入例子:
10
20
32
12
32
45
11
10
31
41
33
输出例子:
18
这道题的思路是先从头到尾理一遍奖金,然后从尾到头理一遍奖金,从头到尾是为了这组能看到左边一组的分数并确定自己的奖金应该为1w还是比左边一组奖金高,从尾到头是为了这组能看到右边一组的分数并确定自己的奖金应该保持不变还是比右边一组的奖金高。
我的代码如下:
import java.util.*;public class 发奖金 { public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ int n=Integer.parseInt(sc.nextLine()); int[] a=new int[n]; for(int i=0;i<n;i++){ a[i]=Integer.parseInt(sc.nextLine()); } int[] b=new int[n]; b[0]=1; for(int i=1;i<n;i++){ if(a[i]>a[i-1]){ b[i]=b[i-1]+1; } else { b[i]=1; } } for(int i=n-1;i>=1;i--){ if(a[i-1]>a[i]&&b[i-1]<=b[i]) b[i-1]=b[i]+1; } int sum=0; for(int i=0;i<n;i++) sum+=b[i]; System.out.println(sum); } }}
0 0
- 发奖金
- 发奖金
- 发奖金
- 发多少奖金
- 笔试题:发奖金
- JZOJ3851. 发奖金(reward)
- 搜狐 发奖金
- 发奖金-java
- 发奖金(贪心)
- 搜狐发奖金
- 今天发奖金了,哈哈~~
- 搜狐笔试题-发奖金
- 牛客网---2016---搜狐发奖金
- 加薪不如发奖金? 穆穆-movno1
- Hdu2647 逆向拓扑_发奖金
- 提高项目16.1-发奖金1
- 重复字符串 Fibonacci进制 发奖金
- 2016校招真题——发奖金
- 对链表数据进行插入排序
- 单列模式(Singleton Pattern、单态模式、单件模式、对象创建型模式)
- 浅解Java泛型
- 人月神话之第二章人月神话
- HTML学习3——表单标签,select标签,textarea标签,datalist标签,video标签
- 发奖金
- Bored Three-God NBUT 1228
- ubuntu常用命令
- 等价类、边界值、判断表方法
- hdoj-2044-一只小蜜蜂...(解题报告)
- 工作中容易被忽略的缺陷
- AspectJ切入点语法详解
- Redis八大特性
- android学习(九) 发送简单数据到其他应用程序