摘要:1. Watchmen1.1 题目描述给$n$个点,求曼哈顿距离等于欧式距离的点对数。1.2 基本思路由$|x_i-x_j|+|y_i-yj| = \sqrt{(x_i-x_j)^2+(y_i-yj)^2}$可以推出$x_i=x_j$或者$y_i=y_j$。所以变得超级简单了,排序后对两种情况分别累
阅读全文
摘要:挺有意思的一道题目。考虑长度为n的数组,重复n次,可以得到n*n的最长上升子序列。同理,也可以得到n*n的最长下降子序列。因此,把t分成prefix(上升子序列) + cycle(one integer repeating) + sufix(下降子序列)。当t<=2*n时,暴力解。注意数据范围。
阅读全文
摘要:manacher+dp.其实理解manacher就可以解了,大水题,dp就是dp[i]=dp[i>>1]+1如何满足k-palindrome条件。
阅读全文
摘要:误以为是求满足条件的substring总数(解法是KMP分别以Sbeg和Send作为模式串求解满足条件的position,然后O(n^2)或者O(nlgn)求解)。后来发现是求set(all valid substring), O(n^2)遍历起始和终止位置并利用set肯定超时。因此,利用字符串ha
阅读全文
摘要:题意是给定一棵树。同时,给定如下k个查询: 给出任意两点u,v,对u到v的路径所经过的边进行加计数。 k个查询后,分别输出各边的计数之和。思路利用LCA,对cnt[u]++, cnt[v]++,并对cnt[LCA(u, v)] -= 2.然后dfs求解各边的计数。
阅读全文
摘要:线段树的简单题目,做一个离散化,O(lgn)可以找到id。RE了一晚上,额,后来找到了原因。
阅读全文
摘要:这题目乍眼一看还以为是2-sat。其实很水的,O(n)就解了。枚举每个人,假设其作为凶手。观察是否满足条件。然后再对满足的数目分类讨论,进行求解。
阅读全文
摘要:这样类似的题目不少,很多都是一堆优化条件求最优解,这个题的策略就是二分+贪心。对时间二分, 对费用采用贪心。
阅读全文
摘要:这题目一看很牛逼,其实非常easy。求求最小公倍数,最大公约数,均摊复杂度其实就是O(n)。
阅读全文
摘要:SPFA.注意状态转移条件,ans的求解需要在bfs中间求解。因为只要到了地点n,则无需等待其他tourist。还是蛮简单的,注意细节。
阅读全文
摘要:显然这个图是一课树,看着题目首先联想到LCA(肯定是可以解的)。但是看了一下数据大小,应该会TLE。然后,忽然想到一个前面做过的题目,大概是在一定条件下树中某结点旋转成为根后查询最长路径。结果灵感就来了,主要思路是对于每个结点,第一次dfs得到两个变量到P结点的最大值以及次大值。然后,第二次dfs对
阅读全文
摘要:这道题目网上有几个题解,均有问题。其实就是简单的贪心+排序,没必要做的那么复杂。一旦tot+curv > v时,显然curv==2, 有三种可能:(1)取出最小的curv==1的pp,装入当前的p;(2)取出后续最大的curv==1的p,并且装入;(3)当前已经是最优的(即后续不存在curv==1的
阅读全文
摘要:思路是树形DP+状态压缩。其实仅有2个状态,奇数次来到x或者偶数次来到x。(因为对x的更新不同)。同时开辟visit数组,解决环。注意,一旦遇到环结果就是-1。DP数组存放第奇数/偶数次来到x时,对y的改变两。
阅读全文
摘要:枚举t加二分判断当前t是否可行,同时求出s。注意不能说|a[n]| <= |3-a[n]|就证明无解,开始就是wa在这儿了。可以简单想象成每当a[n]赢的时候,两人都打的难解难分(仅多赢一轮);而每当a[n]输的时候,一轮都没赢。在这个前提下,显然存在|a[n]| <= |3-a[n]|。
阅读全文
摘要:题意异常的简单。就是给定一个邻接矩阵,让你判定是否为树。算法1:O(n^3)。思路就是找到树边,原理是LCA。判断树边的数目是否为n-1。39-th个数据T了,自己测试2000跑到4s。算法2:O(n^2)。思考由图如何得到树,显然MST是可行的。因此,题目变为直接找到MST。然后通过树边构建目标矩
阅读全文
摘要:题目需要求啥很明确了。主要思想是先计算机联通块,然后每个块内找到一个最小值(以及该值的次数)。最小值和结果1,次数乘积为结果2。联通块tarjan可解。
阅读全文