Codeforces Round #332 (Div. 2)C. Day at the Beach(好题,)

原创 2015年11月21日 11:38:26

题目链接
题意:给你n个数,然后你把他们分块,然后每块有序后,整体就是有序的。问最多分几块。
解法:官方题解:

Let’s take a minute to see how the best answer should look like. Let
Hi be a sorted sequence of hi. Let E — set of indices of the last
elements of each block. Then e E, first e sorted elements of sequence
hi are equal to the first e elements of the sequence Hj. So, it is not
difficult to notice that the size of E is the answer for the problem.
Firstly, we need to calculate two arrays: prefmax and suffmin, where
prefmaxi — maximum between a1, a2, …, ai, and suffmini — minimum
between ai, ai + 1, …, an. If you want to get the answer, just
calculate the number of indices i that prefmaxi  ≤  suffmini + 1.
Time: O(N)

也就是我们看一个数x前面的最大值是不是比x后面的最小值小,如果小的话,那么可以划分x。最后统计这样的x总数。先直接计算出,suffMaxm和suffMin数组即可


#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define pb push_back
#define X first
#define Y second
#define cl(a,b) memset(a,b,sizeof(a))
typedef pair<int,int> P;
const int maxn=100005;
const LL inf=1LL<<45;
const LL mod=1e9+7;
LL a[maxn],suffMax[maxn],suffMin[maxn];
int main(){
    int n;scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    for(int i=1;i<=n;i++){
        suffMax[i]=max(suffMax[i-1],a[i]);
    }
    suffMin[n+1]=inf;
    for(int i=n;i>=1;i--){
        suffMin[i]=min(suffMin[i+1],a[i]);
    }
    suffMin[1]=inf;
    LL ans=0;
    for(int i=1;i<=n;i++){
        if(suffMax[i]<=suffMin[i+1])ans++;
    }
    printf("%lld\n",ans);
    return 0;
}


版权声明:一个菜逼的笔记,并没有什么题解。。。

Codeforces Round #406 (Div. 2):C. Berzerk(记忆化搜索解决博弈问题)

C. Berzerk time limit per test 4 seconds memory limit per test 256 megabytes input standard in...
  • Jaihk662
  • Jaihk662
  • 2017年03月24日 15:23
  • 791

【Codeforces Round 375 (Div 2) E】【欧拉回路Fleury算法 或网络流】One-Way Reform 每条边定向使得最多的点满足入度=出度

E. One-Way Reform time limit per test 2 seconds memory limit per test 256 megabytes ...
  • snowy_smile
  • snowy_smile
  • 2016年10月04日 10:20
  • 735

Codeforces Round #312 (Div. 2) (第三题是位运算,好题)

比赛:点击打开链接 558A - Lala Land and Apple Trees 分析:从0坐标分开,负半轴一个数组,正半轴一个数组,来记录果树的左边和数量,可以用结构体数组来存储数据,其...
  • loveyou11111111
  • loveyou11111111
  • 2015年08月31日 16:30
  • 156

Codeforces Round #248 (Div. 2) B题 【数据结构:树状数组】

题目链接:http://codeforces.com/contest/433/problem/B 题目大意:给n(1 ≤ n ≤ 105)个数据(1 ≤ vi ≤ 109),其中有m(1 ≤ m ≤...
  • u013912596
  • u013912596
  • 2014年05月24日 18:18
  • 706

Codeforces 432C Prime Swaps【筛法素数预处理+贪心】

C. Prime Swaps time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu...
  • mengxiang000000
  • mengxiang000000
  • 2016年10月11日 21:40
  • 417

【Codeforces Round 332 (Div 2)C】【贪心】Day at the Beach 最多区间数划分使得区间排序构成全局排序

C. Day at the Beach time limit per test 2 seconds memory limit per test 256 megabytes ...
  • snowy_smile
  • snowy_smile
  • 2015年12月02日 12:13
  • 388

codeforces 776C Molly's Chemicals(连续子序列和为k的次方的个数)

C. Molly's Chemicals time limit per test 2.5 seconds memory limit per test 512 megabytes input...
  • zwj1452267376
  • zwj1452267376
  • 2017年02月24日 02:47
  • 870

Codeforces Round #408 (Div. 2)-C. Bank Hacking-(三种方法)分类讨论,二分,集合

补题速度太慢了,这样可不行啊。 代码里都有解释。 看别人代码有三种写法 set,分类,和二分。 这是个是用分类思想写的,#include using namespace std; /* 一开...
  • qq_35781950
  • qq_35781950
  • 2017年04月19日 20:52
  • 136

Codeforces 375D 数据结构(好题中的好题, 4解)

题目链接:http://codeforces.com/problemset/problem/375/D 全部代码: 题意:给你一棵树n个点,m次询问(n=100000,m=100000),每个节点有一...
  • c3568
  • c3568
  • 2014年03月25日 19:38
  • 1424

数学推公式——较难——Codeforces Round #187 (Div. 2)

题目链接: http://codeforces.com/contest/315/problem/C C. Sereja and Contest time limi...
  • CS_liuqing
  • CS_liuqing
  • 2013年06月16日 15:34
  • 1995
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Codeforces Round #332 (Div. 2)C. Day at the Beach(好题,)
举报原因:
原因补充:

(最多只允许输入30个字)