Japan

Japan
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 17409 Accepted: 4685

Description

Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Japan is tall island with N cities on the East coast and M cities on the West coast (M <= 1000, N <= 1000). K superhighways will be build. Cities on each coast are numbered 1, 2, ... from North to South. Each superhighway is straight line and connects city on the East coast with city of the West coast. The funding for the construction is guaranteed by ACM. A major portion of the sum is determined by the number of crossings between superhighways. At most two superhighways cross at one location. Write a program that calculates the number of the crossings between superhighways.

Input

The input file starts with T - the number of test cases. Each test case starts with three numbers – N, M, K. Each of the next K lines contains two numbers – the numbers of cities connected by the superhighway. The first one is the number of the city on the East coast and second one is the number of the city of the West coast.

Output

For each test case write one line on the standard output: 
Test case (case number): (number of crossings)

Sample Input

1
3 4 4
1 4
2 3
3 2
3 1

Sample Output

Test case 1: 5

Source

/**树状数组**/
/***********************************************************************
按照题目所给的信息,首先要知道,从同一点出发的高速路是没有交点的。
    其次,每添加一条公路时,必须保证与它相交的公路都已经添加完毕,
    然后,思路:
以east的点为起点,west的点为终点,
先将公路存储,然后按照起点从小到大排列,如果起点相同,按照公路终点的
远近从大到小排列,这样添加公路时,就可以保证能穿过的都已经添加了,
ans就是每添加一条公路时,在之前添加的,且能被穿过的公路都已经被添加了。
    但是,
当添加1 4时,
需要更新sum[1][1],sum[1][2],sum[1][3]....但树状数组是更新sum[1][5]....
所以,
     添加公路时,west应转换,变成m+1-west,这样就符合树状数组的更新规则了.
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;
#define maxn 1010
#define lowbit(x) (x)&(-x)
#define f(x) (m+1)-(x)
//转换函数
struct Shw//superhighway
{
    int e,w;
}s[maxn*maxn];//公路
int n,m,k;
long long sum[maxn];//实际上,经过east的排序后,第一维可以去掉了

void Insert(int x)//树状数组插入
{
    while(x<=m)
    {
        sum[x]+=1;
        x+=lowbit(x);
    }
}
long long Query(int x)//树状数组查询
{
    long long ans=0;
    while(x>0)
    {
        ans+=sum[x];
        x-=lowbit(x);
    }
    return ans;
}

bool cmp(Shw a,Shw b)//排序函数
{
    if(a.e!=b.e) 
        return a.e<b.e;
    else
        return a.w<b.w;
}
void read()
{
    memset(sum,0,sizeof(sum));
    memset(s,0,sizeof(s));
    for(int i=0;i<k;i++)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        s[i].e=a;
        s[i].w=f(b);
    }
    sort(s,s+k,cmp);
}

long long deal()
{
    long long ans=0;
    int j=0;
    for(int i=0;i<k;i++)
    {
        ans+=Query(s[i].w-1);
        if(i>0&&s[i].e==s[i-1].e)//同一点出发的公路,要将起点的交点减去
            j++;
        else
            j=0;
        ans-=j;
        Insert(s[i].w);
    }
    return ans;
}

int main()
{
    int icas,i=1;
    scanf("%d",&icas);
    for(i=1;i<=icas;i++)
    {
        scanf("%d%d%d",&n,&m,&k);
        read();
        printf("Test case %d: %lld\n",i,deal());
    }
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: grddc2020道路数据集是一个关于日本道路的数据集。这个数据集包含了日本各个地区的道路信息,如道路类型、道路等级、道路宽度、道路长度等。 首先,这个数据集包含了不同类型的道路信息。日本的道路可以分为高速公路、国道、县道、市区道路等不同类型。这个数据集提供了每个道路的类型,帮助用户了解不同道路的功能和特点。 其次,数据集中还包含了道路等级信息。根据交通流量和重要性,道路可以被分为一级道路、二级道路、三级道路等不同等级。这个数据集提供了每个道路的等级,帮助用户了解道路的重要程度。 此外,数据集中还包含了道路宽度和道路长度信息。道路宽度可以影响车辆通行的舒适度和道路容量,而道路长度可以帮助用户了解不同道路的覆盖范围。 通过这个数据集,用户可以了解日本不同地区的道路情况。这对于交通规划、交通管理以及交通模型的建立都非常有用。用户可以根据道路类型和等级来规划出行路线,也可以根据道路宽度和长度来评估交通状况。此外,这个数据集还可以用于研究和分析日本的交通网络发展趋势,为城市规划和基础设施建设提供参考。 综上所述,grddc2020道路数据集 japan是一个关于日本道路的数据集,提供了道路类型、道路等级、道路宽度、道路长度等信息,对于交通规划、交通管理和交通研究都具有重要意义。 ### 回答2: grddc2020道路数据集是一个关于日本道路的数据集,该数据集提供了关于日本道路网络的详细信息。 这个数据集提供了日本各地道路的几何形状、长度、连接关系等信息。它包括道路的类型,如高速公路、城市道路、乡村道路等,并且还包括了道路的交通流量和速度限制等额外信息。 使用这个数据集,可以进行许多有益的分析和研究。首先,可以使用这些数据来评估现有道路网络的完备性和质量,判断是否需要修建或扩展道路。其次,可以使用这些数据来预测交通拥堵情况,帮助规划者制定更有效的交通管理方案。此外,还可以将这些数据与其他数据集结合,如人口分布数据或商业区数据,进行空间分析,以更好地了解道路网络在城市发展中的作用。 grddc2020道路数据集日本在城市规划、交通规划和交通管理方面具有重要的应用价值。通过对该数据集进行深入的研究和分析,可以为城市的发展和交通的运行提供更全面、准确的参考和指导。 ### 回答3: grddc2020是一个道路数据集,其中提供了日本的道路相关信息。该数据集包含了日本全国范围内的公路、高速公路、国道等各类道路的详细信息。 首先,该数据集包含了道路的基本属性信息,比如道路名称、长度、宽度等。这些信息可以帮助我们了解每条道路的规模和特点,为道路规划和交通管理提供依据。 其次,这个数据集还提供了道路的地理位置信息,包括每条道路的起点和终点的经纬度坐标。通过这些地理信息,我们可以在地图上精确地标记出每条道路的位置,并进行空间分析和可视化。 此外,grddc2020道路数据集还包含了道路的交通流量信息。这些数据可以帮助我们了解每条道路的交通状况,包括每天的交通流量、交通峰值时段等。通过分析这些交通流量数据,我们可以评估道路的拥堵情况,优化交通信号灯、调整交通组织方案,改善交通流动性。 最后,这个数据集还提供了道路的路面状况信息,如路面材料、路面质量等。这些数据对于道路维护和管理至关重要。可以帮助相关部门及时发现并修复道路损坏、减少交通事故的发生。 综上所述,grddc2020道路数据集是一个包含了日本道路相关信息的全面数据集,它可以为道路规划、交通管理、交通安全等领域提供重要的数据支持。通过对这些数据的分析和利用,我们可以更好地了解日本的道路网络状况,为日本的交通系统优化提供科学依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值