CodeForces 702 A Maximum Increase (贪心,高效算法)

题意:给定 n 个数,问你连续的最长的序列是几个。

析:从头扫一遍即可。

代码如下:

#include <cstdio>
#include <string>
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <cstring>
#include <set>
#include <queue>
#include <algorithm>
#include <vector>
#include <map>
using namespace std ;
typedef long long LL;
typedef pair<int, int> P;
const int INF = 0x3f3f3f3f;
const double inf = 0x3f3f3f3f3f3f3f;
const double eps = 1e-8;
const int maxn = 1e5 + 5;
const int dr[] = {0, 0, -1, 1};
const int dc[] = {-1, 1, 0, 0};
int n, m;
inline bool is_in(int r, int c){
    return r >= 0 && r < n && c >= 0 && c < m;
}
int a[maxn];

int main(){
    cin >> n;
    for(int i = 1; i <= n; ++i)  scanf("%d", &a[i]);
    int ans = 1;
    int s = 0, e = 2;
    int cnt = 0;
    a[0] = 0;
    while(e <= n){
        cnt = 1;
        while(e <= n && a[e] > a[e-1]){  ++cnt;  ++e; }
        ans = max(ans, cnt);
        ++e;
    }

    cout << ans << endl;
    return 0;
}
时间: 2024-10-29 04:36:04

CodeForces 702 A Maximum Increase (贪心,高效算法)的相关文章

Codeforces Round #300-Tourist&#39;s Notes(贪心)

Tourist's Notes Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Description A tourist hiked along the mountain range. The hike lasted for n days, during each day the tourist noted height above the sea level

Codeforces 442B Andrey and Problem(贪心)

题目链接:Codeforces 442B Andrey and Problem 题目大意:Andrey有一个问题,想要朋友们为自己出一道题,现在他有n个朋友,每个朋友想出题目的概率为pi,但是他可以同时向多个人寻求帮助,不过他只能要一道题,也就是如果他向两个人寻求帮助,如果两个人都成功出题,也是不可以的. 解题思路:贪心,从概率最大的人开始考虑,如果询问他使得概率变大,则要询问. #include <cstdio> #include <cstring> #include <a

CF169D2 D – Little Girl and Maximum XOR 贪心

解题思路: 经过打表可得规律答案要么是0 要么是2的N次 要得到最大的XOR值,其值一定是2的N次 即在 l 和 r 的二进制中,从左到右遍历过去,如果碰到 l 为 1 r 为 0 则可说明在『l , r]中存在 1000000000 和 0111111111 可得到最大XOR值为2的N次 PS:不会存在首先出现 l 为 0 r 为 1 的情况,因为 l < r #include<stdio.h> #include<math.h> int main(){ long long

codeforces 508 D. Tanya and Password (fleury算法)

codeforces 508 D. Tanya and Password (fleury算法) 题目链接: http://codeforces.ru/problemset/problem/508/D 题意: 给出n个长度为3的字符串,如:abc bca aab 如果一个字符串的长度为2的后缀等于,另外一个字符串的长度为2的前缀,则这两个字符串能连起来,比如:aabca,然后这n个字符串可以形成一个图,求图上的一条欧拉通路. 限制: 1 <= n <= 2*10^5,字符串里面有大写字母,小写字

字符串元素重排高效算法集合

以下各题均有时间复杂度为O(n*n)或以空间换取时间使得时间空间复杂度为O(n)的算法,在此均不考虑. 问题一.字符串移动 字符串为*号和26个字母的任意组合,把*号都移动到最左侧,把字母移到最右侧并保持相对顺序不变,要求时间和空间复杂度最小 .如"afdg**fa**hjfkdsl"变换成"****afdgfahjfkdsl" 此题前后字符串的长度不变,由于最终一边只有'*',另一边为字母,可以设置两个指针fast和slow,当str[fast]不为'*'时,赋值

斐波那契高效算法(4种算法综合分析)

斐波那契数列问题是算法学习者必定接触到的问题.作为经典问题,首次接触时通常是作为递归算法的案例教程. 然而递归解决斐波那契.其效率低的令人发指,有人算出其时间复杂度为O(2^n).指数级时间复杂度. 假设面试的时候面试官问你斐波那契的求解方法,你来一个递归求解,基本上能够说,你已经game over了. 那么有没有更高效的算法呢.本文将一一介绍. 以下是斐波那契的4种解法: 1.递归    时间复杂度O(2^n) int f(int n){ if(n == 1 || n == 2){ retur

最大公约数最小公倍数高效算法

一般来说求两个数最大公约数,我们最先想到的是先找到两个数中较小的数, 然后从较小的数开始递减暴力搜索,如果能同时被两个数整除,那么这个数就是最大公约数,不能则继续递减. 但是当两个数很大的时候,这个算法的效率就变得很差,这时我们就需要一个高效算法. 这里我们利用的是中国古代的辗转相除法,关于辗转相除法的思想可以自行百度,我在这里直接贴代码 #include<stdio.h> int gcd(int a, int b){ if (a == 0) return b; return gcd(b %

Codeforces 75D Big Maximum Sum 最大子段和 dp

题目链接:点击打开链接 题意: 第一行 n m n个vector 下面n行 第一个数字u表示vector 的大小,然后后面u个数字给出这个vector 最后一行m个数字 表示把上面的vector拼接起来 得到一个大序列,求这个大序列的最大子段和 先预处理出每个vector的最大子段和,左起连续最大,右起连续最大,所有数的和 然后dp 一下.. #include <cstdio> #include <iostream> #include <algorithm> #incl

Codeforces 432E Square Tiling(构造+贪心)

我们通常这么写 using (SqlDataReader drm = sqlComm.ExecuteReader()) { drm.Read();//以下把数据库中读出的Image流在图片框中显示出来. MemoryStream ms = new MemoryStream((byte[])drm["Logo"]); Image img = Image.FromStream(ms); this.pictureBox1.Image = img; } 我的写数据 private void b