2147 数星星

题目描述 Description

小明是一名天文爱好者,他喜欢晚上看星星。这天,他从淘宝上买下来了一个高级望远镜。他十分开心,于是他晚上去操场上看星星。

不同的星星发出不同的光,他的望远镜可以计算出观测到的星星发出的光的数值W。小明当然想尽可能地多看到星星,于是他每看到一颗星星,就要看看他之前有没有看过这颗星星。但是他看的星星太多了,他根本数不过来,于是他让你帮忙。

输入描述 Input Description

共有两行,第一行只有一个整数,为小明观测到的星星的数量n。第二行有n个整数,每两个整数由一个空格隔开,分别为小明观测到每颗星星的光的数值W[1]-W[n]。

输出描述 Output Description

只有一行,这一行共有n个数字0或1。0表示对应的星星之前没有观测到,1表示对应的星星之前已经看过了。注意:数字之间没有空格!

样例输入 Sample Input

5

1 5 5 4 1

样例输出 Sample Output

00101

数据范围及提示 Data Size & Hint

样例是往往是骗人的,本题中

30%的数据,0<n≤5000。

20%的数据,-20000≤W≤20000。

60%的数据,0<n≤50000。

100%的数据,0<n≤500000;-2000000000≤W≤2000000000。

是不是哈希 我也说不准上来,只是觉得怪怪的。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cstdlib>
 5 #include<cmath>
 6 using namespace std;
 7 #define mod 500009//大于50万的最小素数
 8 long long hash[mod*2];
 9 int n,w[mod];
10 int main(){
11     memset(hash,-128,sizeof(hash));//赋最小值
12     scanf("%d",&n);
13     for(int i=1;i<=n;i++){
14         scanf("%d",&w[i]);
15         int k=abs(w[i])%mod;//字符下标非负
16         bool flag=0;
17         while(hash[k]>=-2000000000){
18             if(hash[k]==w[i])
19                flag=1;//是否已经看过
20             k++;
21         }
22         hash[k]=w[i];//往后放到空位置
23         if(flag)
24           printf("1");
25         else
26           printf("0");
27     }
28
29     return 0;
30 }
时间: 2024-10-09 05:42:25

2147 数星星的相关文章

codevs 2147 数星星

时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星.这天,他从淘宝上买下来了一个高级望远镜.他十分开心,于是他晚上去操场上看星星. 不同的星星发出不同的光,他的望远镜可以计算出观测到的星星发出的光的数值W.小明当然想尽可能地多看到星星,于是他每看到一颗星星,就要看看他之前有没有看过这颗星星.但是他看的星星太多了,他根本数不过来,于是他让你帮忙. 输入描述 Input Description

poj 2352 Stars 数星星 详解

题目: poj 2352 Stars 数星星 题意:已知n个星星的坐标.每个星星都有一个等级,数值等于坐标系内纵坐标和横坐标皆不大于它的星星的个数.星星的坐标按照纵坐标从小到大的顺序给出,纵坐标相同时则按照横坐标从小到大输出. (0 <= x, y <= 32000) 要求输出等级0到n-1之间各等级的星星个数. 分析: 这道题不难想到n平方的算法,即从纵坐标最小的开始搜,每次找它前面横坐标的值比它小的点的个数,两个for循环搞定,但是会超时. 所以需要用一些数据结构去优化,主要是优化找 横坐

空间点过程与随机测度(一):从数星星说起

数星星的数学 从今天开始,我打算分几篇来分享一个我认为是概率理论中一个非常漂亮的Topic:空间点过程(Point Processes)和随机测度(Random Measure).小时候,在晴朗的夜里,我喜欢仰望星空,去数天上的星星--那是无忧无虑的快乐童年.长大后,当我们再度仰望苍穹,也许会思考一个不一样的问题:这点点繁星的分布是不是遵循什么数学规律呢?这个问题也许问得太不解风情了.但是,在这篇文章里,我希望向大家表达的是,这个问题会把我们带入一个比星空更为美丽的数学的世界.探讨这个问题,不需

【算法学习笔记】26.扫描维护法 解题报告 SJTU_OJ 1133 数星星

SJTU OJ 1133. 数星星 Description 主任和小伙伴晚上非常无聊,于是带着他的宠物狗出来走走.主任突然发现天空中有一条长度为N的字符串,里面的字符都是大写字母.于是主任和他的小伙伴们开始数星星(STAR). 主任和他的小伙伴还有宠物狗数星星的数法不太一样.小伙伴是一个很教条的人,他只喜欢有规则的东西.所以他每次会在字符串里面找最早的’S’,然后找’S’之后最早的’T’,然后找’T’之后最早的’A’,最后找’A’之后最早的’R’.也就是找一个位置最靠前的STAR的子序列.每次找

一步一步写算法(之“数星星”)

原文:一步一步写算法(之"数星星") [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 学过编程的朋友都知道,当初为了学习编程语言中的各种语法结构,我们要试着解决各种各样奇怪的题目.其中"数星星"就似乎其中的一种.什么是"数星星"呢?就是打印各种形状的"*",正三角.倒三角.菱形等等.本篇博客纯粹为了纪念我们逝去的岁月. a)正三角 void star_1() { int

大红数星星 图论 XD网络赛

问题 A: 大红数星星 时间限制: 3 Sec  内存限制: 128 MB提交: 1066  解决: 67[提交][状态][讨论版] 题目描述 "三角形十分的美丽,相信大家小学就学过三角形具有稳定性,三角形也是二维几何中最基本的必不可少的元素之--",大红走在路上若有所思,突然抬头看到了天空中有很多很亮的星星划过,星星和他们划过的轨迹像极了一个无向图.于是好学的大红,就开始数起了"三角形",1.2.3--数了好久,大红数的眼泪都掉下来了,所以他哭着请求你来帮他,你这

1144 数星星 (树状数组)

1144 数星星 该题有题解 时间限制:564MS  内存限制:65536K提交次数:193 通过次数:43 题型: 编程题   语言: G++;GCC Description 天文学家们喜欢观察星星.它们把每颗星星看成一个点,并把每颗星星左下方(即横坐标和纵坐标都不比它大)的星星颗数作为它的等级值. 现给出所有星星(星星个数为N)的坐标,计算并输出指定编号的星星的等级. 注意:不存在相同坐标的星星 输入格式 第一行为N 后N行为编号为1到N的星星的坐标(坐标用整数) 此后是M 后一行是M个星星

数星星

数星星 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 7  Solved: 3 [Submit][Status][Web Board] Description 一天,小明坐在院子里数星星,Gardon就出了个难题给她:Gardon在天空画出了一个矩形区域,让他输入矩形区域里有多少颗星星,仁慈的上帝还为他标出了每个星星的坐标.但小明数着数着就看花了眼,但他的原则是:宁愿多数一次,不可错过一个.如果小明把他数过的星星的坐标都告诉你,你能否帮他进行排重

[NowCoder] 牛牛数星星

一闪一闪亮晶晶,满天都是小星星,牛牛晚上闲来无聊,便躺在床上数星星. 牛牛把星星图看成一个平面,左上角为原点(坐标为(1, 1)).现在有n颗星星,他给每颗星星都标上坐标(xi,yi),表示这颗星星在第x行,第y列. 现在,牛牛想问你m个问题,给你两个点的坐标(a1, b1)(a2,b2),表示一个矩形的左上角的点坐标和右下角的点坐标,请问在这个矩形内有多少颗星星(边界上的点也算是矩形内). 输入描述: 第一行输入一个数字n(1≤n≤100000),表示星星的颗数.接下来的n行,每行输入两个数x