1060. 爱丁顿数(25)
2016-11-20 17:30
267 查看
1060. 爱丁顿数(25)
时间限制250 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”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
#include <iostream> using namespace std; int main() { int N; int i,j,max=0; cin >> N; int *mile = new int ; int q=0; for (i = 0; i < N; i++) { cin >> mile[i]; } for (i = N-1; i >=0; i--) { for (j = 0; j < N; j++) { if (mile[j] > i+1) q++; } if (q >= i + 1) { max = i + 1; break; } q = 0; } cout << max; }
感想:从N向下数,这样算得快
**********************************************************************************
2017.2.5更新:
甲级刷了一半以后,又碰到了这道题,对"空间换时间"的理解升了一级,一下是新代码,只需要不到20ms完成任务
#include<stdio.h> int main(){ int N,i,t; scanf("%d",&N); int a[150002]={0}; for(i=0;i<N;i++){ scanf("%d",&t); a[t]++; } t=150000; while(a[t+1]<t){ a[t]=a[t]+a[t+1];//计算里程大于t-1的天数 t--; } printf("%d",t); }感想:本来是用数组存数据,排序后再算或者我之前的做法,复杂度都要至少NlogN,这里的方法用大量空间换来N的复杂度
相关文章推荐
- 1060. 爱丁顿数(25)
- PAT1060. 爱丁顿数(25)
- 乙级 PAT 1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- Patest 1060. 爱丁顿数(25) (python)
- PAT乙级 1060. 爱丁顿数(25)--数学问题,sort()排序要注意的问题
- 1060 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- PAT乙级真题1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25) python篇
- PAT 1060. 爱丁顿数(25)
- PAT (Basic Level) Practise (中文)1060. 爱丁顿数(25)
- 1060. 爱丁顿数(25) PAT
- 1060. 爱丁顿数(25)
- C++ - PAT - 1060. 爱丁顿数(25)