[51NOD1272]最大距离(贪心)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1272

思路:排序后由于序列都是顺序的,则只需要考虑序号了,加入当前维护的序号比后面的小,则更新ret。否则更新当前序号

 1 #include <algorithm>
 2 #include <iostream>
 3 #include <iomanip>
 4 #include <cstring>
 5 #include <climits>
 6 #include <complex>
 7 #include <fstream>
 8 #include <cassert>
 9 #include <cstdio>
10 #include <bitset>
11 #include <vector>
12 #include <deque>
13 #include <queue>
14 #include <stack>
15 #include <ctime>
16 #include <set>
17 #include <map>
18 #include <cmath>
19
20 using namespace std;
21 #define fr first
22 #define sc second
23 #define cl clear
24 #define BUG puts("here!!!")
25 #define W(a) while(a--)
26 #define pb(a) push_back(a)
27 #define Rint(a) scanf("%d", &a)
28 #define Rll(a) scanf("%lld", &a)
29 #define Rs(a) scanf("%s", a)
30 #define Cin(a) cin >> a
31 #define FRead() freopen("in", "r", stdin)
32 #define FWrite() freopen("out", "w", stdout)
33 #define Rep(i, len) for(int i = 0; i < (len); i++)
34 #define For(i, a, len) for(int i = (a); i < (len); i++)
35 #define Cls(a) memset((a), 0, sizeof(a))
36 #define Clr(a, p) memset((a), (p), sizeof(a))
37 #define Full(a) memset((a), 0x7f7f7f, sizeof(a))
38 #define lrt rt << 1
39 #define rrt rt << 1 | 1
40 #define pi 3.14159265359
41 #define RT return
42 #define lowbit(p) p & (-p)
43 #define onenum(p) __builtin_popcount(p)
44 typedef long long LL;
45 typedef long double LD;
46 typedef unsigned long long ULL;
47 typedef pair<int, int> pii;
48 typedef pair<string, int> psi;
49 typedef pair<LL, LL> pll;
50 typedef map<string, int> msi;
51 typedef vector<int> vi;
52 typedef vector<LL> vl;
53 typedef vector<vl> vvl;
54 typedef vector<bool> vb;
55
56 const int maxn = 50500;
57 typedef struct Node {
58     int i, n;
59 }Node;
60
61 int n;
62 int a[maxn];
63 Node b[maxn];
64
65 bool cmp(Node x, Node y) {
66     if(x.n == y.n) return x.i < y.i;
67     return x.n < y.n;
68 }
69
70 int main() {
71     // FRead();
72     while(~Rint(n)) {
73         Rep(i, n) {
74             Rint(a[i]);
75             b[i].n = a[i]; b[i].i = i;
76         }
77         sort(b, b+n, cmp);
78         int ret = 0, cur = b[0].i;
79         For(i, 1, n) {
80             if(b[i].i > cur) ret = max(ret, b[i].i-cur);
81             else cur = b[i].i;
82         }
83         printf("%d\n", ret);
84     }
85     RT 0;
86 }
时间: 2024-10-05 05:00:09

[51NOD1272]最大距离(贪心)的相关文章

51Nod1272 最大距离

Problem 给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对.每个元素和自己也可以组成一对.例如:{5, 3, 6, 3, 4, 2},可以组成11对,如下(数字为下标): (0,0), (0, 2), (1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (3, 3), (3, 4), (4, 4), (5, 5).其中(1, 4)是距离最大的一对,距离为3. Solution 二分距离,后缀最大值优化检验

计蒜客 跳跃游戏(贪心)

给定一个非负整数数组,假定你的初始位置为数组第一个下标.数组中的每个元素代表你在那个位置能够跳跃的最大长度. 请确认你是否能够跳跃到数组的最后一个下标. 例如: A = [2,3,1,1,4], return ture A = [3,2,1,0,4], return false. 格式: 第一行输入一个正整数n,接下来的一行,输入数组A[n].如果能跳到最后一个下标,输出"true",否则输出"false" 样例1 ????输入:???? ????????5 ???

51nod 1272 最大距离

题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给出一个长度为N的整数数组A,对于每一个数组元素,如果他后面存在大于等于该元素的数,则这两个数可以组成一对.每个元素和自己也可以组成一对.例如:{5, 3, 6, 3, 4, 2},可以组成11对,如下(数字为下标): (0,0), (0, 2), (1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (3, 3), (3, 4), (4,

poj 1328 贪心

/* 贪心.... 处理处每个点按照最大距离在x轴上的映射 然后我们就有了一些线段 目的是选取尽量少的点 使得每个线段内都有点出现 我们按照左端点排序 然后逐一处理 假设第一个雷达安在第一个线段的右端点 若下一条与之无交点 则再按一个雷达 若完全覆盖 贪心的 我们把雷达移动到下一条的右端点 这样这个雷达就又多覆盖了一个岛 */ #include<iostream> #include<cstdio> #include<cstring> #include<algori

【贪心】PAT 1033. To Fill or Not to Fill (25)

1033. To Fill or Not to Fill (25) 时间限制 10 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 ZHANG, Guochuan With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to fin

贪心(qwq)习题题解

贪心(qwq)习题题解 SCOI 题解 [ SCOI2016 美味 ] 假设已经确定了前i位,那么答案ans一定属于一个区间. 从高位往低位贪心,每次区间查找是否存在使此位答案为1的值. 比如6位数确定了前三位\((101...)_2\),下一位应该是1 那么\(a_i+x_i\)的查找区间为:\([(101100)_2,(101111)_2]\) ,同理如果应该是0则为\([(101000)_2,(101011)_2]\). 注意到有区间\([l,r]\)范围的限制所以用主席树维护即可. [

LuoguP1131 [ZJOI2007]时态同步 (树形DP,贪心)

贪心就离根最大距离 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #define R(a,b,c) for(register int a = (b); a <= (c); ++ a) #define nR(a,b,c) for(register int a = (b); a >= (c); -

【uva 1615】Highway(算法效率--贪心 区间选点问题)

题意:给定平面上N个点和一个值D,要求在x轴上选出尽量少的点,使得对于给定的每个店,都有一个选出的点离它的欧几里德距离不超过D. 解法:先把问题转换成模型,把对平面的点满足条件的点在x轴的直线上可得到一个个区间,这样就是选最小的点覆盖所有的区间的问题了.我之前的一篇博文有较详细的解释:关于贪心算法的经典问题(算法效率 or 动态规划).代码实现我先空着.挖坑~

【贪心+Treap】BZOJ1691-[Usaco2007 Dec]挑剔的美食家

[题目大意] 有n头奶牛m种牧草,每种牧草有它的价格和鲜嫩度.每头奶牛要求它的牧草的鲜嫩度要不低于一个值,价格也不低于一个值.每种牧草只会被一头牛选择.问最少要多少钱? [思路] 显然的贪心,把奶牛和牧草都按照鲜嫩度由大到小排序,对于每奶牛把鲜嫩度大于它的都扔进treap,然后找出后继. 不过注意后继的概念是大于它且最小的,然而我们这里是可以等于的,所以应该是找cow[i].fresh-1的后继,注意一下…… 1 #include<iostream> 2 #include<cstdio&