3192: [JLOI2013]删除物品
2015-12-17 16:45
387 查看
用BIT模拟一下过程就好了
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=100000+5; int d ,n,m; struct Data{ int x,pos; bool operator<(const Data &rhs)const{ return x>rhs.x; } }a ; void add(int x,int v){ for(;x<=n;x+=(x&-x))d[x]+=v; } int sum(int x){ int ret=0; for(;x>0;x-=(x&-x))ret+=d[x]; return ret; } int main(){ scanf("%d%d",&n,&m); int last,now; for(int i=1;i<=n;i++){ scanf("%d",&a[i].x); a[i].pos=n-i+1; } last=n; for(int i=1;i<=m;i++){ scanf("%d",&a[i+n].x); a[i+n].pos=i+n; } n+=m; sort(a+1,a+1+n); long long ans=0; for(int i=1;i<=n;i++)add(i,1); for(int i=1;i<=n;i++){ int now=a[i].pos; if(last<=now){ int tmp=sum(now-1)-sum(last); if(tmp>0)ans+=tmp; add(now,-1);last=now; }else{ int tmp=sum(last)-sum(now); if(tmp>0)ans+=tmp; add(now,-1);last=now; } } printf("%lld",ans); return 0; }
相关文章推荐
- LZW压缩算法
- Linux指令--mv
- redis初探
- Spring 配置log4j和简单介绍Log4J的使用
- Linux指令--mv
- Cocos2dx 3.0 交流篇
- 浏览器下载文件
- 代码:cookie(一个广告展示例子)
- mysql 去除重复记录
- 欢迎使用CSDN-markdown编辑器
- 图片验证码生成
- HTML5知识介绍
- 转:Python模块——struct(字节流,组包拆包实现)
- win10系统Powershell重置应用失效的解决办法
- TCP/IP、Http、Socket的区别
- 用viewpager+fragment实现仿华为自定义铃声
- uinavigationcontroller手势返回
- 【ALearning】第三章 Android基本常见控件
- 关于线上与线下性能测试结果的差异
- 论Python的单例模式和装饰器