不明觉厉的数据结构题2

例1 Harmony Forever hdu3303

题目要求你维护一个集合,每次插入一个数x,或询问集合中模一个给定数y的最小数。

操作数n<=4*10^4,x,y<=5*10^5。

首先对于一个模y的询问,我们可以在插入的时候就处理出这个答案,假设我们对于<=p的y处理出所有答案,那么插入是O(p)的,询问O(1)。

然后对于>p的y我们可以暴力查询大于等于ky的数最小是多少,暴力枚举这个k,用一些你喜爱的数据结构(set?)来维护这个集合,询问复杂度大约是O(x/p*logn)

不妨设logn≈15(算上常数),那么令x/p*logn=p,p≈2700。保险起见开了3000。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <string.h>
#include <vector>
#include <math.h>
#include <limits>
#include <set>
#include <map>
using namespace std;
int P=3000;
typedef pair<int,int> pii;
set<pii> s;
pii minn[23333];
int maxn=0;
void sol(int q)
{
    s.clear();
    for(int i=1;i<=P;i++) minn[i]=pii(2000000000,-1);
    int t=0; maxn=0;
    while(q--)
    {
        char o[3]; int a;
        scanf("%s%d",o,&a);
        if(o[0]==‘B‘)
        {
            pii cur=pii(a,-(++t));
            maxn=max(maxn,a);
            for(int j=1;j<=P;j++) minn[j]=min(minn[j],pii(a%j,-t));
            s.insert(cur);
        }
        else
        {
            if(!maxn) {puts("-1"); continue;}
            if(a<=P) printf("%d\n",-minn[a].second);
            else
            {
                pii mans=pii(2000000000,-1);
                for(int k=0;k*a<=maxn;k++)
                {
                    set<pii>::iterator ii=s.lower_bound(pii(k*a,-23333333));
                    if(ii!=s.end())
                    {
                        pii p=*ii; p.first%=a; mans=min(mans,p);
                    }
                }
                printf("%d\n",-mans.second);
            }
        }
    }
}
int main()
{
    int cs=0,q;
    while(scanf("%d",&q),q)
    {
        if(cs) putchar(10);
        printf("Case %d:\n",++cs);
        sol(q);
    }
}

本来还有一题,后来发现那题实在裸的不行就先不放上来了

时间: 2024-08-26 06:37:20

不明觉厉的数据结构题2的相关文章

不明觉厉的数据结构题

这篇文章会列一点非常规的数据结构题. tyvj4393 纸条 大意是有若干条纸条,每次操作是把一个纸条挪动一下,然后求一个位置的所有纸条上数的和.所有纸条的长度之和不超过20W,纸条数量啥的都是10W. 首先我们可以分块,不过标解不知道高到哪里去了,对于所有的纸条按照长度大于小于分个类,小于的挪动时暴力修改,大于的反正不到个,询问时枚举一遍就行. 求老司机讲一下线段树的做法- #include <iostream> #include <stdio.h> #include <s

树和二叉树-第6章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第6章 树和二叉树 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼06 树和二叉树  

数组和广义表-第5章-《数据结构题集》答案解析-严蔚敏吴伟民版

习题集解析部分 第5章 数组和广义表 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       本习题文档的存放目录:数据结构\▼配套习题解析\▼05 数组和广义表       文档中源码的存放目录:数据结构\▼配

图-第7章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第7章 图 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼07 图       文档中源

串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版

习题集解析部分 第4章 串 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       本习题文档的存放目录:数据结构\▼配套习题解析\▼04 串       文档中源码的存放目录:数据结构\▼配套习题解析\▼04

绪论-第1章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第1章  绪论 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑          本习题文档的存放目录:数据结构\▼配套习题解析\▼01 绪论\        文档中源码的存放目录:数据结构\▼配套习

动态存储管理-第8章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第8章 动态存储管理 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼08 动态存储管理

外部排序-第11章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第11章 外部排序 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼11 外部排序    

文件-第12章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第12章 文件 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼12 文件       文