zoukankan      html  css  js  c++  java
  • [bzoj3192] [JLOI2013]删除物品

      将两堆东西并起来(前面那堆就倒过来了)...然后就是在一列数里面跑来跑去...

      这个显然可以树状数组维护一波。。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 #define ll long long
     6 #define MOD(x) x-=x>=modd?modd:0
     7 using namespace std;
     8 const int maxn=100023;
     9 struct zs{int v,id;}a[maxn];
    10 int t[maxn];
    11 int i,j,k,n,m,pos,next;
    12 ll ans;
    13  
    14 int ra;char rx;
    15 inline int read(){
    16     rx=getchar(),ra=0;
    17     while(rx<'0'||rx>'9')rx=getchar();
    18     while(rx>='0'&&rx<='9')ra*=10,ra+=rx-48,rx=getchar();return ra;
    19 }
    20 bool cmp(zs a,zs b){return a.v>b.v;}
    21 inline int query(int l,int r){
    22     int sm=0,i;
    23     i=r;while(i)sm+=t[i],i-=i&-i;
    24     i=l;while(i)sm-=t[i],i-=i&-i;
    25     return sm;
    26 }
    27 int main(){
    28     n=read(),m=read();register int i,j;
    29     for(i=n;i;i--)a[i].v=read(),a[i].id=i;
    30     for(i=n+1;i<=n+m;i++)a[i].v=read(),a[i].id=i;
    31     pos=n,n+=m;
    32     sort(a+1,a+1+n,cmp);
    33     for(i=1;i<=n;i++){
    34         t[i]++;
    35         if(i+(i&-i)<=n)t[i+(i&-i)]+=t[i];
    36     }
    37     for(i=1;i<=n;i++){
    38         next=a[i].id;
    39         if(next<=pos)ans+=query(next,pos),pos=next;
    40         else ans+=query(pos,next-1),pos=next-1;
    41         j=next;while(j<=n)t[j]--,j+=j&-j;
    42     }
    43     printf("%lld
    ",ans);
    44 }
    View Code
  • 相关阅读:
    Microsoft Dynamics CRM 常用JS语法(已转成vs2017语法提示)
    IIS7如何实现访问HTTP跳转到HTTPS访问
    C#调用PB写的com组件dll
    C# winform程序免安装.net framework在XP/win7/win10环境运行!
    文件上传漏洞
    OWASP TOP 10
    sql
    ASCII码查看
    sql注入--mysql
    sql注入--access
  • 原文地址:https://www.cnblogs.com/czllgzmzl/p/5622137.html
Copyright © 2011-2022 走看看