洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)
P1966 火柴排队
这题贪心显然,即将两序列中第k大的数的位置保持一致,证明略;
树状数组求逆序对啦
浅谈树状数组求逆序对及离散化的几种方式及应用
方法:从前向后每次将数插入到bit(树状数组)中,求其前缀和(在它之前插入且比它小的数),那么用i(当前插入的数的总数)- 前缀和就是其(以c[i]为结尾)逆序对对数
这个题需要将一个序列按照另一个序列排序,因为只需要移动一个序列,sort排序就有了第k小的数的下标
$c[a[i].id]=b[i].id$
第i小的数在a中的位置就是b中第i小的数应放的位置,相当于以第一个数列为关键字排序第二个数列
#include<bits/stdc++.h> #define N 1010100
using namespace std; const int mod=; int n,c[N],bit[N],ans;
struct node{
int x,id;
}a[N],b[N]; bool cmp(node A,node B){
return A.x<B.x;
} int lowbit(int k){
return k&(-k);
}
void add(int x,int w){
while(x<=n){
bit[x]+=w;
bit[x]%=mod;
x+=lowbit(x);
}
}
int sum(int x){
int res=;
while(x){
res+=bit[x];
x-=lowbit(x);
res%=mod;
}
return res%mod;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&a[i].x),a[i].id=i;
for(int i=;i<=n;i++) scanf("%d",&b[i].x),b[i].id=i;
sort(a+,a++n,cmp);
sort(b+,b++n,cmp);
for(int i=;i<=n;i++)
c[a[i].id]=b[i].id;
for(int i=;i<=n;i++){
add(c[i],);
ans=(ans+(i-sum(c[i])))%mod;
}
printf("%d\n",ans);
return ;
}
P1774 最接近神的人_NOI导刊2010提高(02)
同样的离散化,只不过是从后向前插入,那么其前缀和就是逆序数。
#include<bits/stdc++.h>
#define N 500005
#define ll long long using namespace std; int n,h[N],c[N];
ll ans;
struct node{
int y;ll x;
bool operator<(const node A)const {
return x==A.x ? y<A.y :x<A.x;
}
}e[N]; void update(int k,int x){
for(;k<=n;k+=k&-k) c[k]+=x;
} ll query(int k){
ll an=;
for(;k;k-=k&-k) an+=c[k];
return an;
} int main()
{
cin>>n;
for(int i=;i<=n;i++)
scanf("%lld",&e[e[i].y=i].x);
sort(e+,e++n);
for(int i=n;i;i--){
ans+=query(e[i].y-);
update(e[i].y,);
}cout<<ans;
// printf("%lld",ans);
return ;
}
洛谷——P1966 火柴排队&&P1774 最接近神的人_NOI导刊2010提高(02)的更多相关文章
- 洛谷P1774 最接近神的人_NOI导刊2010提高(02) [2017年6月计划 线段树03]
P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...
- P1774 最接近神的人_NOI导刊2010提高(02)
P1774 最接近神的人_NOI导刊2010提高(02) 关于此题为什么可以使用求逆序对的方法来做 假设一个数\(a_i\),且前\(i-1\)个数已经成为单调增的数列. 我们要从前\(a_1\)至\ ...
- 洛谷P1774 最接近神的人_NOI导刊2010提高(02)(求逆序对)
To 洛谷.1774 最接近神的人 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的 ...
- 洛谷 P1774 最接近神的人_NOI导刊2010提高(02)
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- 洛谷——P1774 最接近神的人_NOI导刊2010提高(02)
https://www.luogu.org/problem/show?pid=1774 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古 ...
- 【luogu P1774 最接近神的人_NOI导刊2010提高(02)】 题解
题目链接:https://www.luogu.org/problemnew/show/P1774 归并排序求逆序对. #include <cstdio> #define livelove ...
- luogu P1774 最接近神的人_NOI导刊2010提高(02)
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- luoguP1774 最接近神的人_NOI导刊2010提高(02)x
P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门 ...
- P1774 最接近神的人_NOI导刊2010[树状数组 逆序对 离散化]
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
随机推荐
- react State改变,页面却没有改变
react 小白编程 做项目时遇到了个问题,无论我怎么查看我的action.reducer 还是 dispatch 函数,都没有发现有什么毛病.但是 debugger 的时候,state 改变了,页面 ...
- ES6 一些常用使用
//1.解构数组 let arr1 = ['apple', 'coffee', 'cake']; let [fruit, drink, dessert] = arr1; console.log(fru ...
- hdoj-1214-圆桌会议【逆序数】
圆桌会议 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...
- git 命令 —— checkout
git checkout 会重写工作区.check in 常常表示酒店入住,则 check out 就表示结账(检查)离开. 1. 基本用法 Git学习笔记04–git checkout git ch ...
- Black Rock Shooter
在人气动漫 Black Rock shooter 中,当加贺里对麻陶 说出了"滚回去"以后,与此同时,在另一个心灵世界里, BRS 也遭到了敌人的攻击.此时,一共有 n 个攻击排成 ...
- Vue使用html2canvas将页面转化为图片
需求是微信端将页面截屏之后保存到本地,使用了html2canvas插件 先引入插件 npm install --save html2canvas 之后在你所需要使用的页面引入 import html2 ...
- idea git项目修改后无法提交 颜色都是灰色
现象: idea git项目修改后无法提交 修改后的文件提交时不显示 颜色都是灰色 分析问题出现的原因: git未识别idea下项目. 排查: 发现是因为这个项目之前是基于svn的,然后直接导入 ...
- Codeforces Round 411 Div.2 题解
A Fake NP standard input/output s, MB Submit Add to favourites x3673 B -palindrome standard input/ou ...
- js-消息对话框
最近在某技术网站学习一些js(JavaScript)的课程,将笔记分享一下 消息对话框1. **alert **消息对话框,输出内容,可以是字符串或变量,与document.write 相似 va ...
- JS——client
clientTop.clientLeft: clientTop:盒子的上boder clientLeft:盒子的左border clientWidth与clientHeight 1.在有DTD情况下: ...