bzoj3192 [JLOI2013]删除物品
用数组表示两个栈,将两个栈的栈顶并在一起,用树状数组维护一下操作即可。
代码
#include<cstdio>
#include<algorithm>
#include<map>
#define lb(x) (x&-x)
using namespace std;
const int N = ;
int n,m,i,id[N],a[N],b[N],c[N],top,tot;
long long ans;
map<int,int> ma;
void cc(int x,int w)
{
while (x<=n+m)
{
c[x]+=w;
x+=lb(x);
}
}
int sum(int x)
{
int ans=;
while (x)
{
ans+=c[x];
x-=lb(x);
}
return ans;
}
int main()
{
scanf("%d%d",&n,&m);
for (i=;i<=n;i++)
scanf("%d",&a[i]),b[i]=a[i];
for (i=n+;i<=n+m;i++)
scanf("%d",&a[i]),b[i]=a[i];
sort(b+,b++m+n);
for (i=;i<=n+m;i++)
if (ma[b[i]]==) ma[b[i]]=++tot;
for (i=;i<=n+m;i++) a[i]=ma[a[i]];
for (i=;i<=n;i++)
id[a[i]]=n-i+;
for (i=;i<=m;i++)
id[a[n+i]]=n+i; for (i=;i<=n+m;i++) cc(i,); top=n;
for (i=n+m;i>=;i--)
{
if (id[i]<=top)
{
ans+=sum(top)-sum(id[i]);
top=id[i];
}
else
{
ans+=sum(id[i]-)-sum(top);
top=id[i];
}
cc(id[i],-);
}
printf("%lld\n",ans);
}
bzoj3192 [JLOI2013]删除物品的更多相关文章
- [bzoj3192][JLOI2013]删除物品(树状数组)
3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 872 Solved: 508[Submit][Status ...
- [bzoj3192][JLOI2013]删除物品_树状数组_栈
删除物品 bzoj-3192 JLOI-2013 题目大意:给你n个物品,分成2堆.所有的物品有不同的优先级.我只可以将一堆中的堆顶移动到另一个堆的堆顶.而如果当前物品是全局所有物品中优先级最高的,我 ...
- BZOJ3192: [JLOI2013]删除物品(splay)
Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. ( ...
- bzoj3192: [JLOI2013]删除物品(树状数组)
既然要从一个堆的堆顶按顺序拿出来放到第二个堆的堆顶,那么我们就可以把两个堆顶怼在一起,这样从一个堆拿到另一个堆只需要移动指针就好了. 换句话说,把1~n倒着,n+1到n+m正着,用一个指针把两个序列分 ...
- 洛谷 P3253 [JLOI2013]删除物品 解题报告
P3253 [JLOI2013]删除物品 题目描述 箱子再分配问题需要解决如下问题: (1)一共有\(N\)个物品,堆成\(M\)堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能 ...
- 3192: [JLOI2013]删除物品
3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1366 Solved: 794 [Submit][Statu ...
- BZOJ3192:[JLOI2013]删除物品——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3192 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的 ...
- bzoj 3192: [JLOI2013]删除物品
Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. ( ...
- [JLOI2013]删除物品
嘟嘟嘟 只要每一次将优先级最高的上面的物品移走,就一定能保证是最优解. 所以我们只要想办法简化这个模拟移物品的过程,看完了题解后,发现可以这么想,我们可以把两个栈头碰头的挨在一起,然后设一个指针代表两 ...
随机推荐
- Jquery元素选取、常用方法;js只能获取内联样式,jquery内联内嵌都可以获取到;字符串.trim();去字符串前后空格
一:常用的选择器: 基本选择器 $("#myDiv") //匹配唯一的具有此id值的元素 $("div") //匹配指定名称的所有元素 $(".myC ...
- [收藏]Asp.net MVC生命周期
一个HTTP请求从IIS移交到Asp.net运行时,Asp.net MVC是在什么时机获得了控制权并对请求进行处理呢?处理过程又是怎样的? 以IIS7中asp.net应用程序生命周期为例,下图是来自M ...
- SQLSERVER 表名数据库名作为变量 必须使用动态SQL(源自网络)
动态语句基本语法: 1 :普通SQL语句可以用exec执行 Select * from tableName exec('select * from tableName') exec sp_execut ...
- Magento Service Temporarily Unavailable解决方法
插件升级错误或安装失败时 会出现Service Temporarily Unavailable错误,使网站前台后台都无法显示. 在操作完成的情况下,仍然出现这个错误时可以采用以下方法: 1.删除网站站 ...
- 微信域名weixin.com天价成交!是腾讯吗?
据业内人士爆料,“微信”双拼域名weixin.com已于今天交易了,成交价格8位数.如此大手笔,神秘买家会是腾讯吗? 通过查询该域名的whois信息,最近一次的更新时间显示为今年4月13日,注册邮箱信 ...
- loop_nslookup
function loop_nslookup() { $baseFolder = "D:\ps_toolkit" $ip_list = "$baseFolder\ip_l ...
- form和validate示例
//验证from表单 $(function () { $("#addUserForm").validate({ rules: { txtName: { required: true ...
- Java遇见HTML——JSP篇之JSP内置对象(下)
一.什么是session 1.session表示客户端与服务器的一次会话2.Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 ...
- iOS支付后默认关注公众号
1.这个是微信内部的功能,不对外公开,需要商务洽谈.跟技术无关. 2.同时金额少于1块的也不会有提示关注显示. 3.关注过的不会默认再次关注,但是仍然有选项可以选择.
- docker offical docs:Working with Containers
enough ---------------------------------------------------------------------------------- Working wi ...