URAL 1613 For Fans of Statistics

题意:就是给了你n个数字,他们的编号为1到n,然后接下来有q个询问,每次询问有 l,r,x, 就是问你 是否 在编号区间[l,r]内有数字X出现过,有就是1,无就是0,最后一起输出来

输入其实数字是有重复的,所以先用map离散化,然后再用map跟vector 的邻接表连接,讲编号放入邻接表里面,并升序排序,然后询问的时候直接二分查找编号,是否存在就可以了,手写的二分 一直WA,莫名其妙,改用Lower_bound就过了

int n;

map<string ,int>mark,mp;

vector<int > G[70000 + 55];

int tot;

void init() {
	mp.clear();
	mark.clear();
	for(int i=0;i<70000 + 55;i++)G[i].clear();
	tot = 1;
}

bool input() {
	while(cin>>n) {
		string tmp;
		for(int i=0;i<n;i++) {
			cin>>tmp;
			if(!mark[tmp]) {
				mp[tmp] = tot;
				G[tot].push_back(i + 1);
				tot++;
				mark[tmp]++;
			}
			else G[mp[tmp]].push_back(i + 1);
		}
		return false;
	}
	return true;
}

void cal() {
	for(int i=1;i<=tot;i++)sort(G[i].begin(),G[i].end());
	int q;
	cin>>q;
	int le,ri;
	string now;
	string ans = "";
	while(q--) {
		cin>>le>>ri>>now;
		int pos = mp[now];
		if(pos == 0) {ans += "0";continue;}
		int len = G[pos].size();
		int Head = lower_bound(G[pos].begin(),G[pos].end(),le) - G[pos].begin();
		if(Head < len && G[pos][Head] <= ri)ans += "1";
		else ans += "0";
	}
	cout<<ans<<endl;
}

void output() {

}

int main() {
	while(true) {
		init();
		if(input())return 0;

		cal();
		output();
	}
	return 0;
}

/*
5
1234567 666666 3141593 666666 4343434
5
1 5 3141593
1 5 578202
2 4 666666
4 4 666666
1 1 1234567

*/
时间: 2025-01-03 18:29:42

URAL 1613 For Fans of Statistics的相关文章

Ural 1613 For Fans of Statistics(vector应用)

题目: For Fans of Statistics Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64 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 th

URAL 1613. For Fans of Statistics(STL 数学啊 )

题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1613 1613. For Fans of Statistics Time limit: 1.0 second Memory limit: 64 MB Have you ever thought about how many people are transported by trams every year in a city with a ten-million population whe

timus 1613. For Fans of Statistics【该题超时的代码记录】

该题的意思:按编号递增给出n(0<n<70000)个点的值(点的编号从1~n),给出m(1<=m<70000)条查询数据 数据输入格式为a b c(从编号a到编号b之间是否有值是为c的,如果有则返回1,没有返回0 具体的意思可以进链接: http://acm.timus.ru/problem.aspx?space=1&num=1613 这里只给出超时的代码(可能这道题C++解决真的得用上STL): case 1: /* 树的子节点最多三个 左边的子节点(left)表示小于根

Ural 1613-For Fans of Statistics(vector)

1613. For Fans of Statistics Time limit: 1.0 second Memory limit: 64 MB 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

STL--G - For Fans of Statistics(两个判断条件-二分)

G - For Fans of Statistics Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Description Have you ever thought about how many people are transported by trams every year in a city with a ten-million population

For Fans of Statistics

For Fans of Statistics Time limit: 1.0 secondMemory limit: 64 MB 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 th

苎蜗矩旁乓vzrjk1ct7so

新华社瓦莱塔4月10日电(记者李拯宇 李佳)全国政协主席俞正声10日在前往非洲三国进行正式友好访问途中过境马耳他,在瓦莱塔会见马耳他议长法鲁贾. 俞正声说,中马保持长期友好关系,政治上相互信任,经济上密切合作,人文交流不断深化.中方感谢马方在中国撤侨行动中给予的支持和帮助.中方愿同马方一道,落实两国领导人达成的共识,弘扬中马传统友好,拓展在科技.渔业.旅游等领域互利合作,打造合作新亮点.中国全国政协愿与马耳他议会和社会各界保持密切交往,加强治国理政经验交流,为两国扩大务实合作营造良好环境,共同促

苷死釉问叵q3194ge0xrduee6743e

新华社瓦莱塔4月10日电(记者李拯宇 李佳)全国政协主席俞正声10日在前往非洲三国进行正式友好访问途中过境马耳他,在瓦莱塔会见马耳他议长法鲁贾. 俞正声说,中马保持长期友好关系,政治上相互信任,经济上密切合作,人文交流不断深化.中方感谢马方在中国撤侨行动中给予的支持和帮助.中方愿同马方一道,落实两国领导人达成的共识,弘扬中马传统友好,拓展在科技.渔业.旅游等领域互利合作,打造合作新亮点.中国全国政协愿与马耳他议会和社会各界保持密切交往,加强治国理政经验交流,为两国扩大务实合作营造良好环境,共同促

bzoj1814: Ural 1519 Formula 1 2011-12-20

1814: Ural 1519 Formula 1Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 263  Solved: 70[Submit][Status][Discuss]DescriptionRegardless of the fact, that Vologda could not get rights to hold the Winter Olympic games of 20**, it is well- known, that the