For Fans of Statistics(STL)

- For Fans of StatisticsCrawling in process...Crawling failedTime Limit:1000MS    Memory Limit:65536KB     64bit IO Format:%I64d & %I64u

Description

Have you ever thought about how many people are transported by trams every year in a city with a ten-million population where one in three citizens uses tram twice a day?
Assume that there are n cities with trams on the planet Earth. Statisticians counted for each of them the number of people transported by trams during last year. They compiled a table, in which cities were sorted alphabetically. Since city names were inessential for statistics, they were later replaced by numbers from 1 to n. A search engine that works with these data must be able to answer quickly a query of the following type: is there among the cities with numbers from l to r such that the trams of this city transported exactly x people during last year. You must implement this module of the system.

Input

The first line contains the integer n, 0 < n < 70000. The second line contains statistic data in the form of a list of integers separated with a space. In this list, the ith number is the number of people transported by trams of the ith city during last year. All numbers in the list are positive and do not exceed 10 9 − 1. In the third line, the number of queries q is given, 0 < q < 70000. The next q lines contain the queries. Each of them is a triple of integers l, r, and x separated with a space; 1 ≤ lrn ; 0 < x < 10 9.

Output

Output a string of length q in which the ith symbol is “1” if the answer to the ith query is affirmative, and “0” otherwise.

Sample Input

inputoutput
5
1234567 666666 3141593 666666 4343434
5
1 5 3141593
1 5 578202
2 4 666666
4 4 7135610
1 1 1234567
 
 
 
 
 
 
 
 
 
 
 
 
 
题意:有五个城市以及每个城市的人口数,接下来是五组测试数据
每一组都包括num1,num2,people1,指num1城市到num2城市
有没有people1的人口数,有输出1,没有输出0;
 
 
思路“利用哈希的思想,对每个城市的人口哈希;
看的题解- -表示自己想不出来,越改越像题解
 
 
 
 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <map>
#include <queue>
#include <string>
#include <iostream>
using namespace std;
#define inf 99999
struct node
{
    int num;//城市的代号;
    int people;//城市的人口数;
}t;
vector<node> v[100010];//声明一个node的容器;
int a[700010];
int main()
{
    int n,m,i,j,k,mid;
    int num1,num2,people1;
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        t.num=i;
        t.people=a[i];
        v[a[i]%inf].push_back(t);//将入口哈希,借助v.push_back使数据加在最后;
    }
    scanf("%d",&m);
    for(i=1;i<=m;i++)
    {
        scanf("%d %d %d",&num1,&num2,&people1);
        if(a[num1]==people1||a[num2]==people1)
        {
            printf("1");
            continue;
        }
        int l=v[people1%inf].size();//判断相同的城市的人口数目,一一遍历,找出符合的城市;
        int flag=0;
        for(j=0;j<l;j++)
        {
            if(v[people1%inf][j].people==people1&&v[people1%inf][j].num>num1&&v[people1%inf][j].num<num2)
            {
                flag=1;
                break;
            }
        }
        if(flag==1)
            printf("1");
        else
            printf("0");

    }
    printf("\n");
    return 0;
}

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rocky0429

一块也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值