关注
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,q;
int num[1<<21],num1[1<<21];
long long a[55],b[55],c[55];
long long ans;
long long temp,tempcnt;
void merge_sort(int l,int r,int level)
{
if(l==r) return;
int mid=(l+r)/2,i,j,k;
i=l;k=l;j=mid+1;
merge_sort(l,mid,n-1);
merge_sort(mid+1,r,n-1);
while(i<=mid && j<=r)
{
if(num[i]<=num[j])
num1[k++]=num[i++];
else
{
a[level]+=mid-i+1;
num1[k++]=num[j++];
}
}
while(i<=mid)
num1[k++]=num[i++];
while(j<=r)
num1[k++]=num[j++];
for(int o=l;o<=r;++o)
num[o]=num1[o];
temp=0;
tempcnt=0;
for(int o=l+1;o<=r;++o)
{
if(num[o]!=num[o-1])
{
if(tempcnt!=0)
temp+=(tempcnt-1)*tempcnt/2;
tempcnt=0;
}
else
{
if(tempcnt==0)
tempcnt=2;
else
tempcnt++;
}
}
if(tempcnt!=0)
temp+=(tempcnt-1)*tempcnt/2;
c[level]+=temp;
}
int main()
{
scanf("%d",&n);
temp=1;
b[0]=0;
for(int i=1;i<=n;i++)
{
temp*=2;
b[i]=temp*(temp-1)/2;
for(int j=0;j<i;j++)
{
b[j]*=2;
b[i]-=b[j];
}
}
for(int i=0;i<(1<<n);i++)
scanf("%d",&num[i]);
merge_sort(0,(1<<n)-1,n);
for(int i=n;i>=1;i--)
c[i]-=c[i-1];
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%d",&q);
for(int j=0;j<=q;j++)
{
a[j]=b[j]-a[j];
}
ans=0;
for(int j=0;j<=n;j++)
{
ans+=a[j];
}
ans-=temp;
printf("%lld\n",ans);
}
return 0;
} 第二题的一个思路,不知道对不对 思路:使用归并排序求逆序对,在计算过程中记录每一层的可能存在的最大逆序对数量b[],实际的逆序对数量a[].相同值的元素吞掉的逆序对c[] 对于每2的q次方翻转的操作,相当于是翻转了0-q层,也就是说0-q层的a[]=b[]-a[]-c[] 然后最后对于0-n层求和即可 总复杂度为nlogn(归并排序)+mlogn(m次翻转,每次logn)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
2025-11-18 18:24
北京理工大学珠海学院 嵌入式软件工程师
秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态 点赞 评论 收藏
分享
牛客热帖
更多
- 1... 双非本秋招总结6039
- 2... 打工的这一年3739
- 3... 你会和mentor进行deeptalk吗?2903
- 4... 学院本 末 211 硕勇闯 java 后端实习美团 oc 逆袭指南2724
- 5... 金丹后期牛友!我们新年再见2435
- 6... 双非本2025秋招总结:65w+SSP三选一,最终还是“有鹅选鹅”|附面试心路历程2435
- 7... 牛客运营们,我保证这是我最后一次消费烤肠了!2253
- 8... 写给后辈们的一封信, 希望能帮助到你找第一份工作时少踩坑2188
- 9... 没人带+同事冷漠,真的会内耗2117
- 10... 希望新的一年,我依然是走向幸福的那个人2040
正在热议
更多
# 对2025年忏悔 #
4811次浏览 108人参与
# 你觉得专业和学校哪个对薪资影响最大 #
87602次浏览 587人参与
# 实习没人带,苟住还是跑路? #
13319次浏览 271人参与
# 巨人网络求职进展汇总 #
183888次浏览 1223人参与
# 元旦假期你打算怎么过 #
8499次浏览 175人参与
# 春招前还要继续实习吗? #
5469次浏览 66人参与
# 面试官问过你最刁钻的问题是什么? #
10473次浏览 102人参与
# 腾讯云智研发工作体验 #
34505次浏览 164人参与
# 大家实习都在做什么? #
8868次浏览 96人参与
# 如何缓解入职前的焦虑 #
247196次浏览 1439人参与
# 一人说一家双休的公司 #
7487次浏览 99人参与
# 我们是不是被“优绩主义”绑架了? #
9336次浏览 287人参与
# 新年的第一句祝福 #
51096次浏览 377人参与
# 腾讯工作体验 #
549040次浏览 3664人参与
# 领导秒批的请假话术 #
30592次浏览 121人参与
# 求职遇到的搞笑事件 #
154258次浏览 889人参与
# 妈妈治愈了你哪些脆皮时刻 #
38940次浏览 338人参与
# 我来点评面试官 #
38095次浏览 165人参与
# 机械人你觉得今年行情怎么样? #
6344次浏览 88人参与
# 设计人的面试记录 #
177770次浏览 1576人参与

