11.14NOIP考前模拟赛(中位数、伟德国际官网) – MityKif的博客

版权表现:定冠词是视频博客作者的怪人文字。,未必博主批准,不得认为转载。。

一、伟德国际官网
[信头阐明]
N砖放弃在刻槽中。,最高的的油是N砖。,上上下下一次缩减一张砖。每一张砖都有一根树枝。,敲掉这块用砖建造、砌或铺,存在类似的分。,如图所示。

假如你想敲掉一楼的J砖,若i=1,你可以把它转变。;若i>1,后来地你必然要在分阶段I-1上击倒砖块J和J 1。。
现时你可以裁员似乎比实际时间长的的花招了。,你能得分总计分?。
[输入文献]
输入文献的第共同的有两个无符号积分的n和m。;
下条款N线,代理分A [我在N级砖上。,j],清偿过的0<=A[i,j]<=100。
[输入文献]
唯一的共同的,克制第一积分的。,最大得分。
[范本输入]
4 5
2 2 3 4
8 2 7
2 3
49
[范本输入]
19
[知识尺寸]
20%知识,清偿过的1<=N<=10,1<=M<=30
100%知识,清偿过的1<=N<=50,1<=M<=500。

题解:
率先,我们的把砖块向左疏远。,直角三角形的齐式。,可以找到:
1. 每一列必然要从第分层上上下下敲出一点点砖。
2。假如一列敲K用砖建造、砌或铺,后来地一直的柱子敲了反正K-1砖。。
因而我们的可以DP。
F[i] [j] [k]预示列i已从右向左爆震音。,经过,柱I敲除J砖和ReMe的最高值。。
f[i][j][k]=max(f[i+1][v][k+j])+a[1][i]+..+a[1]=j-1”>j

#include#include#includeusingnamespacestd;
int n,m,a[510][510],fi,fj,fk,v[510][510],f[60][60][510],ans; 
int main()
{
    freopen("","r",stdin);
    freopen("","w",基准输入)

    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++)
      for (int j=1;j<=n-i+1;j++)
        {
            scanf("%d",&a[i][j]);
        }

    for (int i=n;i>=1;i--)
      for (int j=1;j<=n-i+1;j++)
         v[i][j]=v[i][j-1]+a[j][i];

    memset(f,-1,sizeof(f));
    f[n+1][0][m]=0;

    for (int j=n;j>=1;j--)
      for (int i=0;i<=n-j+1;i++)
        for (int k=m-i;k>=0;k--)
        {
            for (int l=i-1;l<=n-j+1;l++)
            if (f[j+1][l][k+i]!=-1)
                F[j] [i] [k]=max(f[j] [i] [k],f[j+1][l][k+i]+v[j][i]);
            if (ANS)printf("%d",ANS) 
}

二、中位数

[信头阐明]
有第一长为{a1的序列n。,A2,…An},n和数字正巧是1…n的一种顺序。。需求计经营者序列{ai的数量。,Ai+1,…Aj}清偿过的:i<=j且j-i+1为奇数,序列的中位数为B。例如{5,1,3}的中位数为3。
[输入文献]
第共同的克制两个无符号积分的n和b。;秒行克制n个积分的。,积分的i是Ai。。
[输入文献]
只克制第一积分的。。,清偿过的使适应的子序列数。
[范本输入]
7 4
5 7 2 4 3 1 6
[范本输入]
4
[知识尺寸]
到30%的知识,清偿过的n<=100;
到60%的知识,清偿过的n<=1000;
100%知识中,清偿过的n<=100000,1<=B<=N。

这时成绩是第一再陷邪道相对地的成绩。,我给了同窗第一后期。,在喂,吞下你自己的想。。
关键在于,假如有中位数k,这么,必然要有比K.和N小的n编号。,由于数字必然要是彼此紧接着的的。,因而我们的握住相似地前缀的东西。:
1。记载K.的获名次
2。从K 1到完毕扫描(I),假如现在的值大于k,这么f[i]=f[i-1]+1;假如决不就f[i]=f[i-1]-1;
三。看一眼f[i]的值,假如全部含义0,ans++。
另外,P[F[i] ;(下一步将被运用)
4。从K-1扫描到1。。运用与前番平稳的的办法。,但它做了F[i]=f[i 1]+1和f[i]=f[i 2] – 1。。
5。看一眼f[i]的值,假如全部含义0,ans++。
另外,ANS = p[f[i] ]的相对数(由于它是相反的n)。,因而大于k的代表数和决不k的数。
6.printf
PS,但要注重。,C 文体无负下标。,因而我们的麝香把100000作为0下标。,决不100000全部含义零以下(为什么100000)?,由于最大n是100000。。

#include#define s 100000#define NUM 100010usingnamespacestd;
int n,m,ans,j,[叙述],f [ num ],PNum10];
int main()
{
    freopen("","r",stdin);
    freopen("","w",基准输入)

    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++)
    {
        scanf("%d",[我]
        if (a[i]==m)
          j=i;
    }
    f[j]=s;
    for (int i=j+1;i<=n;i++)
    {
        if (a[i]>m)
        {
          f[i]=f[i-1]+1;
        }
        else
        {
          f[i]=f[i-1]-1;
        }

          p[f[i]]++;

        if (f[i]==s)
          ans++;
    }

    for (int i=j-1;i>=1;i--)
    {
        if (a[i]>m)
        {
          f[i]=f[i+1]+1;
        }
        else
        {
          f[i]=f[i+1]-1;
        }

          ANS = P[sF[i]  s]
        if (f[i]==s)
          ans++;
    }
    printf("%d",ans+1);
}

NameE-mailWebsiteComment

发表评论

电子邮件地址不会被公开。 必填项已用*标注