BestCoder Round #60 题解链接
题解 题目
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}2k∗Anum≥Bnum。
最后把每个质因数的答案max起来即可。
感觉本场比赛没有trick(雾~),我就打算加入一个很经典的trick:
BBB可以刚好等于2632^{63}263,这样就要开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∗105),足以通过此题。
其实我们可以预处理使得效率变成O(105)O(10^5)O(105) ><然而出题人很良(lan)心(duo)。
1004 GT and strings
其实这题就是一个大暴力。
首先可以证明:如果对于每次询问,计算的效率是min(∣Si∣,∣Sj∣)min(|Si|,|Sj|)min(∣Si∣,∣Sj∣),
且把同样的询问记下来(map记忆化),效率是正确的。
我就感性地证明一下。首先我们来考虑如何hack这个算法。
首先因为效率是min的,我们询问的时候要尽量做到两个串长度一样。
(如果不一样的话,还不如把大的串分给小的串一点。)
那么数据一定是之前有一堆一样长且比较长的串(后面可能还存在较短的串凑数)。
设有P个比较长的串,有效的两两询问只有P2P^2P2级别的。
那么效率就是min(P2,100000)∗(L/P)min(P^2,100000)*(L/P)min(P2,100000)∗(L/P)
当$P = sqrt(N)$的时候取到最大效率O(N1.5)O(N^{1.5})O(N1.5)。
所以这道题直接按min(∣Si∣,∣Sj∣)min(|Si|,|Sj|)min(∣Si∣,∣Sj∣)计算即可。 对于子序列,直接建一个“序列自动机”(第iii个点以后jjj字母第一个出现的位置)跑一下。 对于子串,我们就可以AC自动机或SAM预处理再做,总之很模板。
1005 GT and trees
众所周知,众数是一个很难搞的东东,很难用数据结构维护。
这里采用的是树上莫队的方法,由于还带修改,所以效率为N5/3N^{5/3}N5/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(N5/3+N3/2)
BestCoder Round #60 题解链接的更多相关文章
- HDU 5506 - BestCoder Round #60 - GT and set
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1003 题意 : 给N集 ...
- HDU 5505 - BestCoder Round #60 - GT and numbers
题目链接 : http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=641&pid=1002 思路 : N有若 ...
- BestCoder Round #60/HDU 5505 暴力数学
GT and numbers 问题描述 给出两个数NN和MM. NN每次可以乘上一个自己的因数变成新的NN. 求最初的NN到MM至少需要几步. 如果永远也到不了输出-1−1. 输入描述 第一行读入一个 ...
- 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 ...
- BestCoder Round #60 1001
Problem Description You are given a sequence of NNN integers. You should choose some numbers(at leas ...
- BestCoder Round #11 题解集合
1001.Alice and Bob 签到题*1,只要x * 2 == n && y * 2 == m就满足条件. var m, n, x, y : int64; begin whil ...
- 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 ...
- BestCoder Round #16
BestCoder Round #16 题目链接 这场挫掉了,3挂2,都是非常sb的错误 23333 QAQ A:每一个数字.左边个数乘上右边个数,就是能够组成的区间个数,然后乘的过程注意取模不然会爆 ...
- Educational Codeforces Round 60 (Rated for Div. 2) 题解
Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...
随机推荐
- EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据
在前面的教程中,您完成School数据模型.在本教程中,您会读取和显示相关的数据 — — 那就是,实体框架将加载到导航属性的数据. 下面的插图显示页面,您将完成的工作. 延迟. 预先,和显式加载的相关 ...
- 第五章:javascript:队列
队列是一种列表,不同的是队列只能在末尾插入元素,在队首删除元素.队列用于存储按顺序排列的数据.先进先出.这点和栈不一样,在栈中,最后入栈的元素反被优先处理.可以将队列想象成银行排队办理业务的人,排队在 ...
- 修改ssh的访问端口号
[root@redis143 ~]# vim /etc/ssh/sshd_config 修改其中的:Port 10056 重启sshd服务 同时如果有防火墙规则的话,注意修改防火墙规则,或者关闭防火墙 ...
- SQL注入备忘单
Find and exploit SQL Injections with free Netsparker SQL Injection Scanner SQL Injection Cheat Sheet ...
- Java基础-设计模式之-代理模式Proxy
代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理 ...
- 【Gym 100015A】Another Rock-Paper-Scissors Problem
题 题意 Sonny出石头剪刀布的猜拳策略是 先出R,然后每连续两段都是打败前一段的出拳, 现在问你第n回合打败他要出什么. 分析 他的策略 R P S PSR SRP PSRSRPRPS SRPR ...
- ubuntu14.10建立热点wifi分享给手机
http://jingyan.baidu.com/article/363872ecd8f35d6e4ba16f97.html ubuntu14.10建立热点wifi分享给手机
- Web 测试经验总结
Web功能测试常用方法 1.页面链接检查每一个链接是否都有对应的页面,并且页面之间切换正确: 2.相关性检查删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确. 3.检查按钮的功能 ...
- Spring AOP中定义切点(PointCut)和通知(Advice)
如果你还不熟悉AOP,请先看AOP基本原理,本文的例子也沿用了AOP基本原理中的例子.切点表达式 切点的功能是指出切面的通知应该从哪里织入应用的执行流.切面只能织入公共方法.在Spring AOP中, ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享
http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章 <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...