poj--3067 Japan(树状数组+逆序数)
2016-09-15 17:26
309 查看
3067 Japan
题解
(POJ为什么不与时俱进升级下编译器呢..)#include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; #define fst first #define sec second const int maxn = 1000 + 5; typedef pair<int, int> PII; vector< PII > vec; int c[maxn]; int n, m, k, t; int lowbit(int x) { return x & -x; } void update(int x, int v){ for(int i = x; i <= maxn; i += lowbit(i)) c[i] += v; } int query(int x){ int s = 0; for(int i = x; i ; i -= lowbit(i)) s += c[i]; return s; } int cmp(const PII& p1, const PII& p2){ return p1.fst == p2.fst ? p1.sec < p2.sec : p1.fst < p2.fst; } int main(){ #ifdef EXMY freopen("data.in", "r", stdin); #endif // EXMY scanf("%d", &t); for(int Case = 1; Case <= t; ++Case){ vec.clear(); memset(c, 0, sizeof(c)); scanf("%d %d %d", &n, &m, &k); int e, w; for(int i = 0; i < k; ++i){ scanf("%d %d", &e, &w); vec.push_back(PII(e, w)); } sort(vec.begin(), vec.end(), cmp); long long ans = 0; for(int i = 0; i < vec.size(); ++i){ update(vec[i].sec, 1); ans += (i + 1) - query(vec[i].sec); } printf("Test case %d: %I64d\n", Case, ans); } return 0; }
相关文章推荐
- POJ 3067 Japan(树状数组+逆序数)
- poj 3067 Japan 树状数组+逆序数变形
- 【原】 POJ 3067 Japan 2D树状数组+逆序数 解题报告
- POJ 3067 Japan
- POJ 3067 Japan 【树状数组-逆序对】
- poj 3067 Japan
- poj 3067 Japan
- POJ 3067 - Japan 树状数组~细心估计数据范围
- POJ 3067 Japan
- zoj 3129 || poj 3067 Japan
- POJ 3067 Japan
- POJ 3067—— Japan(树状数组)
- POJ 3067 Japan 树状数组求逆序对
- POJ 3067 Japan 树状数组
- POJ 3067 Japan(利用树状数组求逆序数)
- POJ 3067 Japan 【 树状数组 】
- POJ 3067 Japan (树状数组)
- poj 3067 Japan(线段树)
- POJ 3067 Japan 树状数组
- poj-3067-Japan(树状数组)