Codeforces Round #301 (Div. 2)-E. Infinite Inversions
来源:互联网 发布:网络割接回退方案 编辑:程序博客网 时间:2024/04/19 23:20
原题链接
#include <bits/stdc++.h>#define maxn 100005using namespace std;typedef long long ll;struct Node{Node(){}Node(int a, int b){m = a;num = b;}friend bool operator < (const Node&a, const Node&b){return a.m < b.m;}int m, num;};int sum[maxn<<2];Node v1[maxn<<2], v2[maxn<<2];int cnt = 0;map<int, int>m;void Update(int j, int f){int i = j;while(i <= cnt){sum[i] += v1[f].num;i += i & -i;}}int Query(int j){int s = 0;while(j){s += sum[j];j -= j & -j;}return s;}int main(){//freopen("in.txt", "r", stdin);int n, a, b;scanf("%d", &n);for(int i = 0; i < n; i++){scanf("%d%d", &a, &b);int k1 = m[a], k2 = m[b];if(k1 == 0) k1 = a;if(k2 == 0) k2 = b;m[a] = k2;m[b] = k1;}map<int, int> ::iterator iter = m.begin(), kk;if(iter->first != 1){v1[++cnt] = Node(1, (iter->first)-1);v2[cnt] = v1[cnt]; }for(; iter != m.end(); iter++){ v1[++cnt] = Node(iter->second, 1); v2[cnt] = v1[cnt];kk = iter;kk++;if(kk != m.end() && (kk->first) - (iter->first) != 1){v1[++cnt] = Node((iter->first)+1, (kk->first)-(iter->first)-1);v2[cnt] = v1[cnt]; }} ll ans = 0;sort(v2+1, v2+1+cnt);for(int i = 1; i <= cnt; i++){int l = 1, r = cnt + 1;while(l < r){int mid = (l + r) >> 1;if(v2[mid].m >= v1[i].m) r = mid;else l = mid + 1;}ans += (ll)(v1[i].m - 1 - Query(l-1)) * v1[i].num;Update(l, i);}printf("%I64d\n", ans);return 0;}
0 0
- 树状数组Codeforces Round #301 (Div. 2) E - Infinite Inversions
- Codeforces Round #301 (Div. 2)-E. Infinite Inversions
- #301 (div.2) E. Infinite Inversions
- 301 (div.2) E. Infinite Inversions
- Codeforces 540 E. Infinite Inversions
- Codeforces Round #388 (Div. 2)E Inversions After Shuffle
- Infinite Inversions CodeForces
- Codeforces 540E Infinite Inversions 离散化+树状数组
- codeforces 540 E. Infinite Inversions (离散化 + 树状数组)
- CodeForces-540E Infinite Inversions(树状数组+离散化+加点)
- Codeforces Round #301 (Div. 2) E
- Codeforces Round #353 (Div. 2)-A. Infinite Sequence(模拟)
- Codeforces Round #353 (Div. 2) A. Infinite Sequence 思维题
- Codeforces Round #353 (Div. 2) A Infinite Sequence
- Codeforces Round #353 (Div. 2) -- A. Infinite Sequence
- Codeforces Round #353 (Div. 2) A. Infinite Sequence
- Codeforces Round #353 (Div. 2) A. Infinite Sequence
- Codeforces Round #124 (Div. 2)D. Infinite Maze
- struts1配置
- Leetcode刷题记—— 118. Pascal's Triangle(杨辉三角形)
- js中的校验
- 创新型产品的需求发现
- 获取事件
- Codeforces Round #301 (Div. 2)-E. Infinite Inversions
- Vim 使用经验记录
- hibernate基础认知
- 蚁群算法解决TSP问题
- 手机端图片滑动切换效果
- 白平衡基础
- ibus输入法窗口位置异常左下角
- Linux-Bash技巧——字符串和base64互转
- 超声波引导系统开源(四)485软件网络架构设计