“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 F-排列计算(树状数组)
Posted liyexin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 F-排列计算(树状数组)相关的知识,希望对你有一定的参考价值。
地址:https://ac.nowcoder.com/acm/contest/5477/F
解析:其实并不需要关心它具体是怎么构造的,那样的是很麻烦的。。。明确一点,某个位置出现的次数越多,就需要给它赋越大的值,既当前sum=出现次数*x。出现次数,可以通过差分数组或线段树维护一下,然后排个序,按顺序赋值就可以了。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<map> using namespace std; typedef long long ll; const int maxn=2e5+10; int c[maxn]; int main() { int n , m ; cin>>n>>m; while(m--) { int l,r; cin>>l>>r; c[l]++; c[r+1]--; } for(int i = 1;i<=n;i++) c[i]+=c[i-1]; sort(c+1,c+n+1); ll sum=0; for(int i=n;i>=1;i--) sum+=i*c[i]; cout<<sum<<endl; }
以上是关于“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 F-排列计算(树状数组)的主要内容,如果未能解决你的问题,请参考以下文章
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 C 张老师的旅行
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 C 张老师的旅行
“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛
“科大讯飞杯”第18届上海大学程序设计联赛春季赛暨高校网络友谊赛