先按第一个数从大到小排序,相等的情况下,第二个数按照从大到小排序。。。。。

预处理后,照着树状数组写就行了。。。

注意:k的最大值应取1000*1000

代码如下:

include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#include <set>
#include <map> #define M 1005
#define INF 0x7fffffff
#define eps 1e-8
#define LL long long
#define LLU unsigned long long
#define lowbit(x) (x&-x) using namespace std; int c[M], r[M*M], e[M*M], w[M*M], n, m, k, maxx;
void add(int x)
{
for(int i = x; i <= maxx; i+=lowbit(i))
c[i] += 1;
}
int sum(int x)
{
int ret = 0;
for(int i = x; i > 0; i-=lowbit(i))
ret += c[i];
return ret;
}
int comp(const int a, const int b) { return e[a]==e[b]?w[a]>w[b]:e[a]>e[b]; }
int main ()
{
int kase = 0, t;
scanf("%d", &t);
while(t--)
{
LL ans = 0;
scanf("%d%d%d", &n, &m, &k);
memset(c,0,sizeof(c));
maxx = -INF;
for(int i = 1; i <= k; ++i)
{
scanf("%d%d", &e[i], &w[i]);
maxx = max(maxx, w[i]);
r[i] = i;
}
sort(r+1, r+1+k, comp);
for(int i = 1; i <= k; ++i)
{
int d = r[i];
ans += sum(w[d]-1);
add(w[d]);
}
printf("Test case %d: %lld\n", ++kase, ans);
}
return 0;
}

poj 3067 - Japan(树状数组)的更多相关文章

  1. POJ 3067 Japan (树状数组求逆序对)

    POJ - 3067 题意:有(1-n)个城市自上到下在左边, 另有(1-m)个城市自上到下在右边,共有m条高速公路,现求这m条直线的交点个数,交点不包括在城市处相交. 题解:先将高速公路读入,然后按 ...

  2. POJ 3067 Japan 树状数组求逆序对

    题目大意:有两排城市,这两排城市之间有一些路相互连接着,求有多少条路相互交叉. 思路:把全部的路先依照x值从小到大排序,x值同样的依照y值从小到大排序,然后插入边的时候,先找有多少比自己y值小的,这些 ...

  3. POJ 3067 Japan (树状数组 && 控制变量)

    题意: 西海岸和东海岸有分别有n (1~n)个和m (1~m)个城市, 两个海岸的城市之间有k条公路连通, 公路会相交, 现在给出城市和公路的信息问你由这些公路组成的复杂交通有多少个交点 (如果两个条 ...

  4. POJ 3067【树状数组】

    题意: 给你两行数字,n个m个,然后给你k条线直接把两个数连起来,问有多少个交叉的 思路: 假定上一行是起点,下一行是终点. 把路按照起点从大到下排序, 然后可以直接对每条路查询,这条路目前的交叉数, ...

  5. poj3067 Japan(树状数组)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:id=3067">http://poj.org/problem? id=3067 Descri ...

  6. poj3067 Japan 树状数组求逆序对

    题目链接:http://poj.org/problem?id=3067 题目就是让我们求连线后交点的个数 很容易想到将左端点从小到大排序,如果左端点相同则右端点从小到大排序 那么答案即为逆序对的个数 ...

  7. poj 2229 Ultra-QuickSort(树状数组求逆序数)

    题目链接:http://poj.org/problem?id=2299 题目大意:给定n个数,要求这些数构成的逆序对的个数. 可以采用归并排序,也可以使用树状数组 可以把数一个个插入到树状数组中, 每 ...

  8. POJ 2299 【树状数组 离散化】

    题目链接:POJ 2299 Ultra-QuickSort Description In this problem, you have to analyze a particular sorting ...

  9. poj 2155 Matrix (树状数组)

    Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 16797   Accepted: 6312 Descripti ...

随机推荐

  1. Volley简单封装

    public interface IRequest { /** * 获取头部信息 * * @return */ public Map<String, String> getHeaderMa ...

  2. 使用JS脚本获取url中的参数

    第一种方式:使用分隔符及循环查找function getQueryString(name) { // 如果链接没有参数,或者链接中不存在我们要获取的参数,直接返回空 if(location.href. ...

  3. 初试Nodejs——使用keystonejs创建博客网站1(安装keystonejs)

    我正在阿里云上创建一个简单的个人博客网站,刚好正在尝试NodeJs,决定找一款基于NodeJs的CMS来完成这个工作,最后找到了KeyStoneJS. KeyStoneJS是基于Express和Mon ...

  4. c# DESEncrypt 加密、解密算法

    using System; using System.Security.Cryptography; using System.Text; namespace AttendService { publi ...

  5. python获取命令行变量

    python获取命令行参数的方法是,开头使用import sys, 后面用sys.argv[0]表示文件名,sys.argv[1],sys.argv[2]...表示后续命令行参数. 注意,sys.ar ...

  6. win2008 IIS与php整合

    首先安装好IIS 安装的时候 要注意三个地方打得勾 注:   CGI  会在IIS+PHP的环境中用到 php.ini default_socket_timeout = 60extension_dir ...

  7. android开发学习笔记001a

    Android 应用与开发环境 1.使用SDK版本:Android 2.3 . 2.发展和历史 创始人:Andy Rubin,Android公司被Google收购.07年11月5日1.0发布. 3.平 ...

  8. webform的页面缓存

    给页面添加<%@ OutputCache Duration="10" VaryByParam="*"%>标签就可以启用页面缓存. Duration表 ...

  9. java开发常用工具

    1.eclipse3.6 +浏览器插件+findbug+checkstyle+pmd+svn 2.plsql8.0对数据库的操作,存储过程的调试 3.Securecrt对linux服务器的操作 4.e ...

  10. 利用chrome的profiler查找js的memory leak

    1. 首先要固定一个测试环境.具体来说,选择某一个可以重复的操作,作为标准的测试动作. 2. 刷新浏览器后用profiler抓下heap snapshot. 3. 进行操作,再一次抓下snapshot ...