题解  题目

1001 GT and sequence

注意先特判000的情况:如果读入的数据有000,那么去掉所有的000且最后答案和000取一个max。

剩下的正数显然全部乘起来比较优。

对于负数的话,如果个数是奇数个我们就去掉绝对值最小的那一个,然后全部乘起来即可。

1002 GT and numbers

如果AAA大于BBB那么显然无解。

考虑把AAA和BBB分解质因数。

若BBB存在AAA没有的质因数也显然无解。

对于某一个AAA的质因数的次数。为了加速接近BBB,它一定是每次翻倍,最后一次的时候把剩下的加上。

那么答案就是最小的kkk使得2k∗Anum≥Bnum2^{k}*A_{num} \geq B_{num}2​k​​∗A​num​​≥B​num​​。

最后把每个质因数的答案max起来即可。

感觉本场比赛没有trick(雾~),我就打算加入一个很经典的trick:

BBB可以刚好等于2632^{63}2​63​​,这样就要开unsigned long long。

同时我还在题目里特别提醒了“注意M的范围”

可惜仍然有很多选手没有注意。

这里我表示歉意,也希望你们以后可以更加仔细一点。

1003 GT and set

可能一些选手题意不是很清楚,我这里再提供一个转化后的问题:

给出N个集合。每次你可以指定一个数,然后所有包含这个元素的集合可以被删掉。

问你能否经过最多L轮操作使得所有集合都被删掉。

因为LLL只有555,考虑直接dfs。

对于第一个集合,我们枚举它的那个公共的数是多少。

然后线性扫描过去,找到接下来第一个没有这个数的集合。

(它显然不能通过这个公共的数与第一个数在同一个部分)

对于这个集合,再枚举它公共的数是多少,然后线性扫描过去找到第一个没有这两个数的集合……

这样重复555次后如果还是没有,就直接NO好了。若中途扫完序列就是YES。

这样最坏的效率就是O(N∗105)O(N*10^{5})O(N∗10​5​​),足以通过此题。

其实我们可以预处理使得效率变成O(105)O(10^5)O(10​5​​) ><然而出题人很良(lan)心(duo)。

1004 GT and strings

其实这题就是一个大暴力。

首先可以证明:如果对于每次询问,计算的效率是min(∣Si∣,∣Sj∣)min(|Si|,|Sj|)min(∣Si∣,∣Sj∣),

且把同样的询问记下来(map记忆化),效率是正确的。

我就感性地证明一下。首先我们来考虑如何hack这个算法。

首先因为效率是min的,我们询问的时候要尽量做到两个串长度一样。

(如果不一样的话,还不如把大的串分给小的串一点。)

那么数据一定是之前有一堆一样长且比较长的串(后面可能还存在较短的串凑数)。

设有P个比较长的串,有效的两两询问只有P2P^2P​2​​级别的。

那么效率就是min(P2,100000)∗(L/P)min(P^2,100000)*(L/P)min(P​2​​,100000)∗(L/P)

当$P = sqrt(N)$的时候取到最大效率O(N1.5)O(N^{1.5})O(N​1.5​​)。

所以这道题直接按min(∣Si∣,∣Sj∣)min(|Si|,|Sj|)min(∣Si∣,∣Sj∣)计算即可。 对于子序列,直接建一个“序列自动机”(第iii个点以后jjj字母第一个出现的位置)跑一下。 对于子串,我们就可以AC自动机或SAM预处理再做,总之很模板。

1005 GT and trees

众所周知,众数是一个很难搞的东东,很难用数据结构维护。

这里采用的是树上莫队的方法,由于还带修改,所以效率为N5/3N^{5/3}N​5/3​​ (NNN和QQQ同阶)

现在考虑维护这样一个操作:每次加一个数或者删除一个已经出现了的数,在线询问现在次数最大的数是多少。

本来可以很方便地开一个线段树维护一下,但是之前的效率已经很满了,加个log显然会T。

为了降下插入和删除的效率,我们可以利用块状数组。

具体的做法是:记f[i]f[i]f[i]表示权值i出现的次数,size[i]size[i]size[i]表示出现了iii次的权值个数。

然后对于sizesizesize的下标我们分块,假设块的大小为SSS,记best[i]best[i]best[i]表示∑size[k]\sum size[k]∑size[k],其中(i−1)∗S+1≤k≤i∗S(i-1) * S + 1 \leq k \leq i*S(i−1)∗S+1≤k≤i∗S

每次加入和删除一个点的时候,只需O(1)O(1)O(1)更新f和size和best数组。

查询的时候,我们倒序扫描每个块iii,若best[i]>0best[i] > 0best[i]>0那么答案肯定在这个块中。然后再在这个块里暴力寻找最后一个size[i]>0size[i] > 0size[i]>0的iii即可。

这样效率就是O(N5/3+N3/2)O(N^{5/3}+N^{3/2})O(N​5/3​​+N​3/2​​)

BestCoder Round #60 题解链接的更多相关文章

  1. HDU 5506 - BestCoder Round #60 - GT and set

    题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1003 题意 : 给N集 ...

  2. HDU 5505 - BestCoder Round #60 - GT and numbers

    题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...

  3. BestCoder Round #60/HDU 5505 暴力数学

    GT and numbers 问题描述 给出两个数NN和MM. NN每次可以乘上一个自己的因数变成新的NN. 求最初的NN到MM至少需要几步. 如果永远也到不了输出-1−1. 输入描述 第一行读入一个 ...

  4. BestCoder Round #60 1002

    Problem Description You are given two numbers NNN and MMM. Every step you can get a new NNN in the w ...

  5. BestCoder Round #60 1001

    Problem Description You are given a sequence of NNN integers. You should choose some numbers(at leas ...

  6. BestCoder Round #11 题解集合

    1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...

  7. BestCoder Round #60.1003.GT and set/HDU5506 dfs

    GT and set  Accepts: 35  Submissions: 194  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 655 ...

  8. BestCoder Round #16

    BestCoder Round #16 题目链接 这场挫掉了,3挂2,都是非常sb的错误 23333 QAQ A:每一个数字.左边个数乘上右边个数,就是能够组成的区间个数,然后乘的过程注意取模不然会爆 ...

  9. Educational Codeforces Round 60 (Rated for Div. 2) 题解

    Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...

随机推荐

  1. 年前辞职-WCF入门学习(5)

    前言 第五集比较简单,视频也只有7分多钟,但是用处还是挺大的.下面我会介绍. 本来想第六集一起介绍的,后来发现第六集内容比较多,有半个多小时,就不一起了.网站规定6小时内只能发布一篇文章到首页,,那我 ...

  2. 每天一个linux命令(40):watch命令

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  3. chromiun 学习《一》

    众所周知,Chrome是建立在开源的Chromium项目上的. 而且不得不说,学习并分析开源项目的代码对一个程序员的提高确实蛮大的.这篇博文我会记录一下学习过程中我遇到的一些问题,并分享学习中我所参考 ...

  4. CSS中font-style的斜体属性Italic oblique的区别

    要搞清楚这个问题,首先要明白字体是怎么回事.一种字体有粗体.斜体.下划线.删除线等诸多属性.但是并不是所有字体都做了这些,一些不常用的字体,或许就只有个正常体,如果你用Italic,就没有效果了~这时 ...

  5. Windows Server 2008 显示桌面图标

    相信有朋友们有安装使用过windows 2008 server服务器,刚安装好的时候,桌面上只有一个回收站的图标,它没有像windows 7或windows 8一样可以直接通过右击鼠标的菜单来设置,要 ...

  6. Syntax error, annotations are only available if source level is 1.5

    在项目上右键 -> Properties -> Java Compiler

  7. IOS 面试

    1. #import , #include的区别 @import防止类的重复引用,#import 确定一个文件只能被导入一次,这使在递归包含中不会出现问题. @class一般用于头文件中需要声明该类的 ...

  8. form的submit与onsubmit的用法与区别

    发生顺序:onsubmit -> submit1.阻止表单提单:<script>function submitFun(){    //逻辑判断    return true; //允 ...

  9. NYOJ298点的转换(矩阵十大问题之一)

    点的变换 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 平面上有不超过10000个点,坐标都是已知的,现在可能对所有的点做以下几种操作: 平移一定距离(M),相对X ...

  10. HD2444The Accomodation of Students(并查集判断二分图+匹配)

    The Accomodation of Students Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...