poj3067 树状数组
来源:互联网 发布:用c 计算矩阵特征值 编辑:程序博客网 时间:2024/05/17 04:46
日本有N个城市在东海岸,有M个城市在西海岸,有K条高速公路将要被建,高速公路端点分别是东海岸和西海岸的一个城市,问这K条公路有多少交点
代码:
#include <iostream>#include <string>#include <cstring>#include <cstdio>#include <cmath>#include <cstdlib>#include <algorithm>#include <queue>#include <map>#define MST(s,q) memset(s,q,sizeof(s))#define INF 0x3f3f3f3f#define MAXN 1000005#define Lchild id<<1#define Rchild (id<<1)+1inline int lowbit(int x) {return x & (-x);}using namespace std;struct edge{ int u, v;} Edge[MAXN];bool cmp(edge a, edge b) { if (a.u == b.u) return a.v < b.v; return a.u < b.u;}int t[MAXN];void update(int x, int N) { while (x <= N) { t[x]++; x += lowbit(x); }}long long getsum(int x) { long long ans = 0; while (x > 0) { ans += t[x]; x -= lowbit(x); } return ans;}int main() { int N, M, K, T, icase = 1; cin >> T; while (T--) { scanf("%d%d%d", &N, &M, &K); for (int i = 1; i <= K; i++) scanf("%d%d", &Edge[i].u, &Edge[i].v); sort(Edge + 1, Edge + 1 + K, cmp); memset(t, 0, sizeof(t)); long long sum = 0; for (int i = 1; i <= K; i++) { update(Edge[i].v, M); sum += getsum(M) - getsum(Edge[i].v); } printf("Test case %d: %lld\n", icase++ , sum ); }}
0 0
- Japan poj3067--树状数组
- 树状数组POJ3067
- POJ3067树状数组
- poj3067---树状数组
- poj3067之树状数组
- poj3067 Japan(树状数组)
- POJ3067 Japan 树状数组
- poj3067 Japan (树状数组)
- POJ3067 Japan(树状数组)
- poj3067 树状数组
- POJ3067--Japan(树状数组)
- POJ3067 Japan(树状数组)
- POJ3067-Japan(树状数组)
- poj3067 树状数组(Binary Indexed Tree)
- 树状数组专题(四)POJ3067
- poj3067 树状数组求逆序数
- poj3067 Japan 树状数组&逆序对
- POJ3067 Japan 线段树 || 树状数组
- HDU1860 统计字符
- 欠拟合、过拟合及其解决方法
- mysql 获取中文字符串长度
- license.lic
- x86中常见的系统功能调用
- poj3067 树状数组
- 类文件结构
- uva 340 -----Master-Mind Hints(猜数字游戏的提示)
- 通过抓取淘宝评论为例讲解Python爬取ajax动态生成的数据
- 多个editText监听事件
- 关于memset的初始最大最小值
- 三三笔记-redis安装到windows服务的详细步骤(含步骤截图)
- js上传图片处理:压缩,旋转校正图片
- Struts中的<s:select>