关注
第二题ac代码: #include <bits/stdc++.h> using namespace std; long long f[30], e[30]; int a[1050000]; void divide(int l, int r,int x); int main(){ int n, m; scanf("%d", &n); m = pow(2,n); for (int i=0; i<m; ++i){ scanf("%d", &a[i]); } divide(0,m,n); int t, p; long long ans; scanf("%d", &t); while (t--){ scanf("%d", &p); for (int i=1; i<=p; ++i) f[i] = pow(2,i+n-2) - e[i] - f[i]; ans = 0; for (int i=1; i<=n; ++i){ ans += f[i]; } cout << ans << endl; } } void divide(int l, int r,int x){ if (x==0){ return; } int mid = (l+r) / 2; divide(l,mid,x-1); divide(mid,r,x-1); int nowp = mid; for (int i=l; i<mid; i++){ while (nowp < r && a[nowp] < a[i]) nowp++; f[x] += (nowp-mid); } int i=l, j=mid, ri, rj; while (i<mid && j<r){ if (a[i] == a[j]){ ri = rj = 1; while (ri+i < mid && a[ri+i] == a[i]) ri++; while (rj+j < r && a[rj+j] == a[j]) rj++; e[x] += ri * rj; i += ri; j += rj; continue; } if (a[i] > a[j]) j++; else i++; } vector<int> v; i=l; j=mid; while (i<mid || j<r){ if (i==mid) { v.push_back(a[j++]); continue; } if (j==r) { v.push_back(a[i++]); continue; } if (a[i] < a[j]) v.push_back(a[i++]); else v.push_back(a[j++]); } for (int i=l; i<r; ++i) a[i] = v[i-l]; }
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
04-27 17:32
门头沟学院 golang 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 这个offer值得去吗? #
3959次浏览 68人参与
# 你实习是赚钱了还是亏钱了? #
119682次浏览 662人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
43598次浏览 499人参与
# 你会因为行情,降低找工作标准吗? #
13756次浏览 150人参与
# 机械人晒出你的简历 #
191651次浏览 1105人参与
# 如果春招能重来,我会___ #
6738次浏览 75人参与
# 实习想申请秋招offer,能不能argue薪资 #
256225次浏览 1333人参与
# 刚入职的你踩过哪些坑 #
60147次浏览 417人参与
# 腾讯云智研发工作体验 #
43464次浏览 177人参与
# 招银网络求职进展汇总 #
250062次浏览 1121人参与
# 面试官拷打AI项目都会问什么? #
3133次浏览 148人参与
# 想做Agent可以做哪些岗位? #
3439次浏览 44人参与
# 你觉得最好用的AI编程工具是_ #
1442次浏览 35人参与
# 除了线上,还能去哪些地方投简历 #
4354次浏览 47人参与
# 求职你最看重什么? #
166412次浏览 907人参与
# 你的秋招白月光和意难平公司 #
98319次浏览 350人参与
# 实习第一天,你在干什么 #
4840次浏览 41人参与
# 暑假倒计时,你都干了些啥? #
58970次浏览 314人参与
# 如何一边实习一边秋招 #
2236134次浏览 19228人参与
# 如何排解工作中的焦虑 #
330630次浏览 2832人参与
# 你和你的mentor相处模式是__ #
7003次浏览 62人参与

