ACM一些题目
Low Power
先二分答案,可以通过调整证明同一台机器选的两个芯片必然是提供能量数值相邻的两个。所以再贪心一下就可以了。
时间复杂度\(O(n \log n)\)。
Factors
假设\(k\)可以写成\(\prod p_i^{q_i}\),由于\(k\)要尽可能小,所以\(p_i\)是最小的几个质数,\(q_i\)递减。决定\(f(k)\)的值的,只与\(q_i\)有关,所以我们可以暴力出各个\(q_i\)的取值,由于\(k<2^{63}\),所以方案应该是很小的,好像只有\(10^4\)个,也就是说,不同的询问只有\(10^4\)个。所以我们可以预处理出所有的询问的答案。
时间复杂度\(O(10^4 + Q)\)。
Magical GCD
首先枚举区间的左端点\(L\)。
如果我们再次枚举右端点,我们可以发现一个问题:区间\([L,R+1]\)的\(gcd\)要么等于\([L,R]\)的\(gcd\),要么小于\([L,R]\)的\(gcd/2\),也就是说,\(gcd\)的值最多改变\(log 10^{12}\)次,即我们需要枚举的\(R\)的取值只有\(log 10^{12}\)个。所以我们使用二分来找到我们需要的\(R\)的取值。区间\(gcd\)可以使用RMQ。
时间复杂度\(O(n \log n \log 10^{12})\)。
unix纪元
考你会不会编程。不过网上的代码我见都是用time_t
,可惜我不会。
时间复杂度\(O(1)\)。
Zhu's multiset
怎么提交?
先二分答案,然后用个优先队列贪心。
时间复杂度\(O(n\log n \log 10^6)\),极有可能超时,囧。
Team Them Up!
如果两个人不认识,就将他们连一条边。然后就有若干个二分图,DP一下分配方案就好了。
时间复杂度\(O(n^2)\)。
感觉这题的重点是连边的方式,如果考虑选完全图的话,难度就很大了(反正我是不会做的)。
Boatherds
先算出所有点到根的距离,记为\(dep_v\),那么题目求的是,是否存在一个\(v\)和一个\(u\),使得\(dep_v+dep_u-2dep_{lca}=k\),\(k\)是题目求的路径长度,\(lca\)是这两个点的最近公共祖先。
我们可以采用启发式合并,每个点记一个set
,表示该子树含有的\(dep\)。对于一个点\(v\),要把它和它的所有孩子合并成一个set
。现在考虑将\(A,B(|A|<|B|)\)合并,逐一枚举\(B\)里的元素\(x\),对于一个询问\(k\),如果\(A\)存在元素\(k+2dep_v-x\)的话,就说明有一条经过点\(v\)的路径的长度为\(k\)。
时间复杂度\(O(n \log^2 n m)\)。
看到网上的一般做法是树分治,其中看到有一个很神奇的东西:给出一堆数,求从中选两个数,使得它们的和为\(k\)的方案数。
如果暴力采用set
之类的数据结构,是可以轻松做到\(O(n\log n)\)的,但是还有一个神奇做法:
方便起见,假设所有的数两两不相等,采用下面的算法:
l = 0, r = n - 1
while l < r
if al + ar > k
r = r - 1
if al + ar < k
l = l + 1
if al + ar == k
get a solution
l = l + 1
在\(O(n)\)的时间内可以完成。正确性是很显然的。
连环锁
原来这个根格雷码有关,但是如果不知道这个应该怎么办呢?
这里是我了解到的东西:
- 可以发现,连环锁每一个状态(除了000...00和100...000)都能转移到其他的两个状态,如果把状态变成点,转移变成边,那么就可以知道这一条链。格雷码就按顺序给这些状态编号。
- 格雷码与二进制之间的转移方式与异或相关:比如格雷码的第\(i\)位(\(1\)是最高位)等于其对应二进制数前\(i\)位(包括第\(i\)位)的异或值。
所以,解决这题的话,把格雷码转成二进制再变成十进制后相减就是答案了。
时间复杂度\(O(n^2)\)(需要高精度)。
Quad Tiling
裸题,直接使用矩阵乘法。
Garden
这题差不多所有人都做出来了,就我QAQ.
注意到\(k\)是固定的,也就是说任何时候,可以照相的区间个数是\(n-k+1\),我们维护这些区间和的最大值就可以了。
One-move checkmate
模拟即可,和棋不算将死!这里的和棋指黑国王可以不动。
ATP
二分答案,然后把竞赛的那棵完全二叉树贪心出来,注意要使用BFS,因为厉害的选手越靠近树的根就能够消灭更多的对手。
Word Rings
学习到了一种快速判负环的方法!
bool circle(u)
mark[u] = true
for any e(u,v)
if relax(u->v)
if circle(v) return true
mark[v] = false
return false
ACM一些题目的更多相关文章
- ACM -二分图题目小结
暂时只包括与最大匹配相关的问题. 求最大独立集,最小路径覆盖等等大多数题目都可以转化为求最大匹配用匈牙利算法解决. 1.最大匹配(边集) 此类问题最直接,直接用匈牙利算法即可. HDU 2063 过 ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- ACM - KMP题目小结 (更新中)
KMP算法题型大致有两类,一类是next数组的应用,一类是匹配问题. next数组大多数是求字符串周期,或者是与前缀后缀有关,也可以应用在DP中.需要对next数组有一定理解才能做得出. next数组 ...
- ACM 字符串 题目整理
AC自动机 UVa 11468 Substring AC自动机+概率DP. 注意要补全不存在的边. 为什么要补全不存在的边呢?补全以后可以直接找到状态的转移,即从所有子节点就可以实现所有状态转移. ...
- ACM 矩阵题目整理
先从最基础的矩阵快速幂加速递推开始. HDU 1005 Number Sequence |f[n-2],f[n-1]|* |0 B| =|f[n-1], B*f[n-2]+A*f[n-1]|=|f[n ...
- 搞ACM的你伤不起[转自RoBa]------(看一次,笑一次)
RoBa原创,转载请注明出处 劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用 ...
- 收集一些关于OI/ACM的奇怪的东西……
一.代码: 1.求逆元(原理貌似就是拓展欧几里得,要求MOD是素数): int inv(int a) { if(a == 1) return 1; return ((MOD - MOD / a) * ...
- 有一种感动叫ACM(记陈立杰在成都赛区开幕式上的讲话)
各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言.对于我来说,这是我第一次正式参加ACM的比赛.不过我跟ACM之间的缘分,大概在很早的时候就已经 ...
- [转]搞ACM的你伤不起(转自Roba大神)
劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟 ...
随机推荐
- WRTnode 的 HTTP Web 开关实验(2016-05-16)
前言 这里是节取自 物联网的任意门——WRTnode2R 评测 中的 http web 开关灯实验,所以有一些前置设置如果没有描述清楚可参考该处. 正文 步骤一:编辑一个 html 文件,放在 /ww ...
- Collection类学习笔记
binarySearch原理: public static index halfSearch(List<String> list, String key) { int max,min,mi ...
- Eclipse之报错信息及其解决方案
一.有很多人都喜欢开发js的时候用aptana,因此在eclipse中集成aptana插件是必须的,可是,在用link方式在eclipse中安装好aptana后,启动时会报如下错误 An intern ...
- Linux 网络编程: gethostbyname( ), getservbyname( )
前言 最近在学习网络编程,用到几个应该比较常用的网络编程函数,所以写篇博客来记录一下,毕竟学得快忘得也快.国庆节在宿舍写着博客看着各个景点人山人海倒也快哉~ gethostbyname( ) 这个函数 ...
- day1作业脚本
1.编写登录接口: - 输入用户名和密码 - 认证成功后显示欢迎信息 - 输错三次后锁定 2.编写多级菜单 - 三级菜单 - 可依次进入子菜单 第一次写python脚本,因为没有学到函数,所以写的有点 ...
- Python之路:Python 函数
一.函数式编程:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装 二. 函数的定义和使用 def 函数名(参数): ... 函数体 ... 函数的定义主要有 ...
- Chrome Firefox 自定义背景色
Chrome有个自定义背景色的文件 Custom.css 默认里面什么字都没写 html, body {background-color: #e0dcc0!important;} 这个颜色 ...
- 转:你真的懂得JS吗?
题目1 if (!("a" in window)) { var a = 1; } alert(a); // undefined, ~~~所有全局变量都是window的属性,声明语句 ...
- cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(五)-地图卷动
马里奥在平移的过程中,涉及到地图的卷动问题. 在这个游戏里,地图比窗口大,窗口只是显示了地图的一部分,因此马里奥在移动的时候,移动到一定位置之后要卷动地图,否则马里奥移动到窗口右边之后......那结 ...
- java学习之IO文件分割
package om.gh.homework; import java.io.*; /** * 实现分割文件; * @param file */ public class HomeWork { /** ...