zoukankan      html  css  js  c++  java
  • PAT乙级1060

    英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数 E。据说爱丁顿自己的 E 等于87。

    现给定某人 N 天的骑车距离,请你算出对应的爱丁顿数 E(N)。

    输入格式:

    输入第一行给出一个正整数 N (105​​),即连续骑车的天数;第二行给出 N 个非负整数,代表每天的骑车距离。

    输出格式:

    在一行中给出 N 天的爱丁顿数。

    输入样例:

    10
    6 7 6 9 3 10 8 2 7 8
    

    输出样例:

    6
     1 #include <cstdio>
     2 #include <iostream>
     3 #include <queue>
     4 #include <vector>
     5 #include<string.h>
     6 #include<map>
     7 #include<bits/stdc++.h>
     8 #define LL long long
     9 using namespace std;
    10 #define maxn 100005
    11 int main()
    12 {
    13     int n;
    14     cin>>n;
    15     int a[n];
    16     for(int i=1;i<=n;i++)
    17         cin>>a[i];
    18     sort(a+1,a+n+1);
    19     int ans=0;
    20     if(a[1]>n)
    21         cout<<n<<endl;
    22     else{
    23     for(int i=n-1;i>=1;i--)
    24     {
    25         //n-i 天数
    26         //a[i+1]英里数
    27         if((n-i)<a[i+1])
    28         {
    29             ans=n-i;
    30         }
    31     }
    32     cout<<ans<<endl;
    33     }
    34     return 0;
    35 }

    思路:
    给输入的n个数排序,

    分类讨论:当a[1]超过n,代表这n天骑行都超过n,满足题目条件可以直接输出;

    当a[1]小于等于n时,i相当于一个游标从n-1项开始向前遍历,n-i代表骑行的天数,a[i+1]代表第i+1天骑行的英里数。当(n-i)<a[i+1]时,满足(n-i)天骑行的英里数大于(n-i),满足题意,可得到解。随着i的不断减小,n-i的值不断增大,题目要求的是最大值,所以不能得到一个解就直接break;,以这个思路的话需要遍历完所有的情况。


  • 相关阅读:
    终于想起了博客园密码
    关于GCD的8题
    idea快捷键 ctrl + shift + f 失效解决方法
    前端和后端日期类型交互
    poi、easypoi和easyexcel的使用
    事务总结
    数据库cte的理解和使用
    mybatis 调用存储过程没有返回值
    postgresql 查询锁表并解锁
    tigase网络核心SockThread详解(十九)
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/10893532.html
Copyright © 2011-2022 走看看