洛谷 P1795 无穷的序列_NOI导刊2010提高(05)

P1795 无穷的序列_NOI导刊2010提高(05)

题目描述

有一个无穷序列如下:

110100100010000100000…

请你找出这个无穷序列中指定位置上的数字

输入输出格式

输入格式:

第一行一个正整数N,表示询问次数;

接下来的N行每行一个正整数Ai,Ai表示在序列中的位置。

输出格式:

N行,每行为0或l,表示序列第Ai位上的数字。

输入输出样例

输入样例#1: 复制

4
3
14
7
6

输出样例#1: 复制

0
0
1
0

说明

对于100%的数据有N≤1500000,Ai≤10^9

思路:前缀和+二分。

#include<map>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
map<int,bool>ma;
int n,x,sum=1;
int main(){
    scanf("%d",&n);
    for(int i=1;i;i++){
        ma[sum]=1,sum+=i;
        if(sum>1000000000)    break;
    }
    while(n--){
        scanf("%d",&x);
        if(ma[x])    printf("1\n");
        else printf("0\n");
    }
}

STL TLE 90分

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int ma[44722];
int l,r,mid;
int n,x,sum=1;
int main(){
    scanf("%d",&n);
    ma[1]=1;
    for(int i=2;i<=44721;i++)
        ma[i]=ma[i-1]+i-1;
    while(n--){
        scanf("%d",&x);
        l=1;r=44721;int flag=0;
        for(int i=1;i<=32;i++){
            mid=(l+r)/2;
            if(ma[mid]<x)    l=mid+1;
            else if(ma[mid]>x)    r=mid-1;
            else if(ma[mid]==x){ flag=1;break; }
        }
        if(flag)    printf("1\n");
        else printf("0\n");
    }
}
时间: 2024-09-30 21:11:36

洛谷 P1795 无穷的序列_NOI导刊2010提高(05)的相关文章

洛谷——P1795 无穷的序列_NOI导刊2010提高(05)

P1795 无穷的序列_NOI导刊2010提高(05) 题目描述 有一个无穷序列如下: 110100100010000100000… 请你找出这个无穷序列中指定位置上的数字 输入输出格式 输入格式: 第一行一个正整数N,表示询问次数: 接下来的N行每行一个正整数Ai,Ai表示在序列中的位置. 输出格式: N行,每行为0或l,表示序列第Ai位上的数字. 输入输出样例 输入样例#1: 复制 4 3 14 7 6 输出样例#1: 复制 0 0 1 0 说明 对于100%的数据有N≤1500000,Ai

洛谷P1776 宝物筛选_NOI导刊2010提高(02)

P1776 宝物筛选_NOI导刊2010提高(02) 题目描述 终于,破解了千年的难题.小FF找到了王室的宝物室,里面堆满了无数价值连城的宝物……这下小FF可发财了,嘎嘎.但是这里的宝物实在是太多了,小FF的采集车似乎装不下那么多宝物.看来小FF只能含泪舍弃其中的一部分宝物了……小FF对洞穴里的宝物进行了整理,他发现每样宝物都有一件或者多件.他粗略估算了下每样宝物的价值,之后开始了宝物筛选工作:小FF有一个最大载重为W的采集车,洞穴里总共有n种宝物,每种宝物的价值为v[i],重量为w[i],每种

【洛谷P1801】黑匣子_NOI导刊2010提高(06)

题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ADD(x):把x元素放进BlackBox; GET:i加1,然后输出Blackhox中第i小的数. 记住:第i小的数,就是Black Box里的数的按从小到大的顺序排序后的第i个元素.例如: 我们来演示一下一个有11个命令的命令串.(如下图所示) 现在要求找出对于给定的命令串的最好的处理方法.AD

洛谷 P1808 单词分类_NOI导刊2011提高(01)

P1808 单词分类_NOI导刊2011提高(01) 题目描述 Oliver为了学好英语决定苦背单词,但很快他发现要直接记住杂乱无章的单词非常困难,他决定对单词进行分类. 两个单词可以分为一类当且仅当组成这两个单词的各个字母的数量均相等. 例如“AABAC”,它和“CBAAA”就可以归为一类,而和“AAABB”就不是一类. 现在Oliver有N个单词,所有单词均由大写字母组成,每个单词的长度不超过100.你要告诉Oliver这些单词会被分成几类. 输入输出格式 输入格式: 输入文件的第一行为单词

洛谷 P1835 素数密度_NOI导刊2011提高(04)题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1835 题目描述 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 输入输出格式 输入格式: 两个数L和R. 输出格式: 一行,区间中素数的个数. 输入输出样例 输入样例#1: 2 11 输出样例#1: 5 分析:裸的区间素数筛.代码中有详细注释(其中区间素数筛函数大部分借用了<挑战程序

洛谷P1774 最接近神的人_NOI导刊2010提高(02) [2017年6月计划 线段树03]

P1774 最接近神的人_NOI导刊2010提高(02) 题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的遗产了.但现在的问题是如何打开这扇门…… 仔细研究后,他发现门上的图案大概是说:古代人认为只有智者才是最容易接近神明的.而最聪明的人往往通过一种仪式选拔出来.仪式大概是指,即将隐退的智者为他的候选人写下一串无序的数字,并让他们进行一种操作,即

洛谷 P1796 汤姆斯的天堂梦_NOI导刊2010提高(05)

P1796 汤姆斯的天堂梦_NOI导刊2010提高(05) 题目描述 汤姆斯生活在一个等级为0的星球上.那里的环境极其恶劣,每天12小时的工作和成堆的垃圾让人忍无可忍.他向往着等级为N的星球上天堂般的生活. 有一些航班将人从低等级的星球送上高一级的星球,有时需要向驾驶员支付一定金额的费用,有时却又可以得到一定的金钱. 汤姆斯预先知道了从0等级星球去N等级星球所有的航线和需要支付(或者可以得到)的金钱,他想寻找一条价格最低(甚至获得金钱最多)的航线. 输入输出格式 输入格式: 第一行一个正整数N(

洛谷 P1807 最长路_NOI导刊2010提高(07)

P1807 最长路_NOI导刊2010提高(07) 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入输出格式 输入格式: 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v). 输出格式: 输出文件longest.out,一个整数,即1到n之间的最长路径.如

洛谷P1801 黑匣子_NOI导刊2010提高(06)

P1801 黑匣子_NOI导刊2010提高(06) 题目描述 Black Box是一种原始的数据库.它可以储存一个整数数组,还有一个特别的变量i.最开始的时候Black Box是空的.而i等于0.这个Black Box要处理一串命令. 命令只有两种: ADD(x):把x元素放进BlackBox; GET:i加1,然后输出Blackhox中第i小的数. 记住:第i小的数,就是Black Box里的数的按从小到大的顺序排序后的第i个元素.例如: 我们来演示一下一个有11个命令的命令串.(如下图所示)