zoukankan      html  css  js  c++  java
  • NYOJ 631 冬季长跑(逆序数+单调递增序列个数)

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 #define N 1000000010
     5 int sum,n,p[50001][21],len[50001],L[21],R[21];
     6 
     7 void merger(int a[],int beg,int mid,int end)
     8 {
     9     int L_len=mid-beg,R_len=end-mid-1;
    10     int i,j,k;
    11     for(i=0;i<=L_len;i++)
    12         L[i]=a[beg+i];
    13     for(j=0;j<=R_len;j++)
    14         R[j]=a[mid+j+1];
    15     L[L_len+1]=R[R_len+1]=N;
    16     i=j=0;
    17     for(k=beg;k<=end;k++)
    18     {
    19         if(L[i]<=R[j])
    20             a[k]=L[i++];
    21         else
    22         {
    23             a[k]=R[j++];
    24             sum+=L_len-i+1;
    25         }
    26     }
    27 }
    28 
    29 void mergerSort(int a[],int beg,int end)
    30 {
    31     int mid=(beg+end)>>1;
    32     if(beg<end)
    33     {
    34         mergerSort(a,beg,mid);
    35         mergerSort(a,mid+1,end);
    36         merger(a,beg,mid,end);
    37     }
    38 }
    39 
    40 void slove(int k)
    41 {
    42     int a = len[k]; len[k] = -1;
    43     for(int i = k+1; i < n; ++i)
    44     {
    45         if(len[i] != -1 && len[i] > a)
    46         {
    47             a = len[i]; len[i] = -1;
    48         }
    49     }
    50 }
    51 
    52 int main()
    53 {
    54    // freopen("in.txt","r",stdin);
    55     int t,mi,i,j,ans;
    56     cin>>t;
    57     while(t--)
    58     {
    59         cin>>n;
    60         for(i=0;i<n;++i)
    61         {
    62             cin>>mi; sum = 0;
    63             for(j=0;j<mi;++j)
    64                 cin>>p[i][j];
    65             mergerSort(p[i],0,mi-1);
    66             len[i] = sum;
    67         }
    68         ans = 0;
    69         for(i=0;i<n;++i)
    70         {
    71             if(len[i] != -1)
    72             {
    73                 slove(i);
    74                 ++ans;
    75             }
    76         }
    77         cout<<ans<<endl;
    78     }
    79     return 0;
    80 }
  • 相关阅读:
    java学习笔记
    androd Sdk manager配置
    50ms延时程序
    89c51中断入口地址表
    打印杨辉三角--队列的应用
    栈的应用--括号匹配
    哈夫曼编码---数据压缩
    PS转手绘
    数据结构学习思路
    第三届蓝桥杯省赛---第39级台阶
  • 原文地址:https://www.cnblogs.com/yaling/p/3065347.html
Copyright © 2011-2022 走看看