07 2019 档案
摘要:线段树+数论 看完这么一长串题目,现将有用的信息提取出来 首先$number*x+product*y=1$这个条件 如果要使$x$,$y$有解,那么$number$和$product$必须满足$\gcd (number,product)=1$ 那么将询问操作转化为求出$[1,product]$中有多
阅读全文
摘要:0/1分数规划+最小生成树 题意 有n个村庄,村庄在不同坐标和海拔,现在要对所有村庄供水,只要两个村庄之间有一条路即可,建造水管距离为坐标之间的欧几里德距离,费用为海拔之差,现在要求方案使得费用与距离的比值最小 n <= 1000 输入n行每行三个数x y z分别表示坐标与海拔 题目中所给条件,可以
阅读全文
摘要:小A是小B家的园丁。小B的家里有n棵树,第i棵树的横坐标为i。一天,小B交给小A一个任务,让他降低自己家中的某些树木的高度。这个任务对小A来说十分简单,因为他有一把极其锋利的斧头和一门独门砍树秘籍,能够轻易地砍断任何参天大树。小A的砍树方法有3种,都是沿着一条y=kx+b的直线砍一段区间的树,相同的
阅读全文
摘要:最大独立集 神仙题,感觉不止2200的难度 先要建图 可以发现无论有多少个连续的1操作,都是可以看做1次1操作 那么可以将以这1作为分组的界限,将连续的2操作分为一组 然后将每一个朋友姓名的字符串用map哈希成数字 此时将每一个朋友在哪一组出现过都处理出来 称两个朋友是冲突的,当且仅当这两个朋友同时
阅读全文
摘要:Alice和Bob两个人正在玩一个游戏,游戏有很多种任务,难度为p的任务(p是正整数),有1/(2^p)的概率完成并得到2^(p-1)分,如果完成不了,得0分。一开始每人都是0分,从Alice开始轮流做任务,她可以选择任意一个任务来做;而Bob只会做难度为1的任务。只要其中有一个人达到n分,即算作那
阅读全文
摘要:小B写了一个程序,随机生成了n个正整数,分别是a[1]..a[n],他取出了其中一些数,并把它们乘起来之后模p,得到了余数c。但是没过多久,小B就忘记他选了哪些数,他想把所有可能的取数方案都找出来。你能帮他计算一下一共有多少种取数方案吗?请把最后的方案数模1000000007后输出。小B记得他至少取
阅读全文
摘要:DP 首先可以发现要增加$m$个元素才对答案产生影响 那么记$dp[i][j]$为前$i$个且连续了$j$个元素的最大值 然后就是转移 一开始我对于每一个$i$,$j$都去枚举前$m$个元素进行转移,但这是不必要的 后来$jinzy$大佬将我的$dp$转移简化了,从原来$O(m)$的转移简化到了$O
阅读全文
摘要:DP单调栈优化 看到这道题可以很自然的想到DP 设$dp[i]$表示最后一个$ring$为$i$的最大高度 首先将$b$为第一关键字,$a$为第二关键字,升序排序元素 那么对于$i$来说,它下面的$ring$的所有能转移过来的$j$,要满足$j<i$,且$b[i]>a[j]$ 所以dp转移方程为$d
阅读全文
摘要:set预处理+DP 对于每一个时间点,记录开始于此时间的红包和结束于此时间的红包 那么在$O(n)$的复杂度就可以处理出每一个时间点的红包 然后将这些红包插入$set$中,以$w$为第一关键字,$d$为第二关键字排序 每次取出$set$中最大元素即是当前父亲要选的红包 现在Alice会打扰其父亲,所
阅读全文
摘要:线段树 对于$Easy$ $version$可以枚举极大值和极小值的位置,然后判断即可 但对于$Hard$ $version$明显暴力同时枚举极大值和极小值会超时 那么,考虑只枚举极小值 对于数轴上每一个点,记录开始和结束于这个点的区间 那么从1枚举到i时可以处理出当包含i点所有区间 所以用线段树维
阅读全文
摘要:字符串Hash 对于一个字符串,枚举长度,在字符串中用$hash$进行比较 比如对于区间[l,r],那么这一串字符的$hash$值为$hash[r]-base^{r-l+1}*hash[l-1]$ 进行枚举即可 复杂度为$n\sum_{i=1}^{n}\frac{1}{i}$ 由于$\int \fr
阅读全文
摘要:构造 考虑对于国王的坐标,可以将棋盘分成左上,左下,右上,右下四个区域 统计出来这些区域的黑车数量 如果向某一个方向走,那么除其方向反向的区域的黑车不用动以外,其他都要动 比如向右上走,那么除了左下的区域,其他的区域的黑车都要动 那么对于一个国王坐标,走到棋盘四个角中的一个角的步数,小于需要移动黑车
阅读全文
摘要:二分+dfs判环+拓扑序 我们的目标是以最小的代价,反转边破坏所有的环 首先可以发现题目中的$traffic$ $controllers$的数量为所反转边的最大权值 那么所以边权小于等于$traffic$ $controllers$的数量的边是都可以反转的 那么对于边权大于$traffic$ $co
阅读全文
摘要:$Splay$ #include <bits/stdc++.h> #define inf (int)1e9 using namespace std; const int N=1e5+100; int n,tot,root,val[N],sz[N],son[N][2]; int fa[N],sf[N]
阅读全文
摘要:并查集 首先先要读懂题目,a是b的食物的话,b的天敌是a,b的食物是a的天敌 比如,人吃鸡,鸡吃草,那么草吃人。。。。。 所以建3个并查集,+n时表示这是其食物,+2*n时表示这是其天敌 所以当x,y是同类当且仅当x的食物不是y,且x的天敌不是y 当x吃y当且仅当x和y不是同类,y的食物不是x 然后
阅读全文
摘要:带权并查集 对于每一列记录id[i]表示第i号战舰的序号,sum[i]表示第i号战舰所在列的战舰个数 对于每一个合并操作,无法对每一个所在当前列的战舰信息进行更新 所以只对队头战舰的信息进行修改,用类似线段树中懒标记的方法 当要对这一艘战舰进行访问时,对其信息进行修改 注意,在并查集中先要对其列首战
阅读全文
摘要:倍增 这道题最难的应该是预处理。。。 首先用$set$从后往前预处理出每一个点海拔差绝对值得最大值和次大值 因为当前城市的下标只能变大,对于点$i$,在$set$中二分找出与其值最接近的下标 然后再$set$中将左右各两个下标处理出来,取最大值和次小值 预处理完毕 将每一次小A和小B的开车看为一轮开
阅读全文
摘要:倍增+Floyd 首先令$g[i][j][k]$表示$i$到$j$的有没有长度为$2^{k}$的路径,1表示有,0表示没有 那么可以处理出有之间连边($u$->$v$)的两点$u$,$v$,$g[u][v][0]=1$ 然后再令$f[i][j]$表示i到j经过$2^{k}$的边的个数 那么只要存在一
阅读全文
摘要:Trie 题目中p数组的数的顺序是可以打乱的,所以将每一个pi的二进制形式插入01Trie里 然后枚举每一个ai在字典树中贪心的匹配,尽量走与当前二进制位的数字相同的边 如10010在走到第2位时,在字典树中走1边,因此能得到最小的数,进而字典序最小 在走完一个pi时,要在字典树中把pi删去 所以在
阅读全文
摘要:并查集 题目中是说将节点一个个摧毁,正着做并不好做 所以考虑在所有的星球摧毁后反着进行连边 在恢复一个节点后,则恢复了这个节点到之前已恢复的节点的连边,然后用并查集维护联通块即可 注意在同一个联通块中连边是不会改变联通块的个数的 所以只要处理联通块之间的边即可
阅读全文
摘要:二分+倍增 题目 题目中的最大校验值应由数组排序后,取出最大值和最小值,次大值和次小值……进行做差平方取和 所以在加入一个新的数时,校验值是不会下降的 那么可以发现,校验值是单调递增的,所以可以用二分对每一个固定的左段点找到满足条件的最大的右端点 所以l初始值设为1,不断对r进行二分,找到最大的点
阅读全文
摘要:Floyd 在之前原有的记录最短路的数组f[i][j]之外,再记录一个数组g[i][j]表示从点i到点j的最短路路径数量 当转移时枚举的中间节点k,只要f[i][j]被更新,g[i][j]被重置为f[i][k]*f[k][j] 那当f[i][j]==f[i][k]+f[k][j]时g[i][j]累加
阅读全文
摘要:DP 由图可以知道优先级相同的点都在一个“7”字形中 所以在走当前的优先级的点时最好从右下的点走到左上的点,或从从左上的点走到右下的点 那记dp[i][0]表示在走完第i个优先级时停在左上角的那个点 dp[i][1]表示在走完第i个优先级是停在右下角的那个点 答案就是max(dp[最大优先级][0]
阅读全文
摘要:二维偏序(逆序对) 因为风速vf,-w<=vf<=w,因此我们可以算出每一艘船到达原点的时间的取值范围 即取vf=w和vf=-w时,记ai为当vf=w时的用时,记bi为当vf=-w时的用时 所以现在问题转化:为每一元素有两个值ai和bi,求有多少对下标i,j满足a[i]<=a[j]且b[i]>=b[
阅读全文
摘要:dp+预处理 dp[i]表示第i天时的水位线有多少条, 然后你会发现这个dp是有后效性的,当第i天的m[i]>dp[i-1]时就要修改之前的dp值 因此我们预处理出每一天的至少要多少条水位线,记l[i]为多少条水位线 所以每天至少需要m[i]+1条水位线,然后我们从后往前枚举,记录now表示从后推出
阅读全文
摘要:倍增求LCA+最大生成树 题目给出的是一张图,在图上有很多算法无法实现,所以要将其转化为树 题中可以发现货车的最后的载重量是由权值最小的一条边决定的,所以我们求最大生成树 求完最大生成树后我们得到一个森林 现在转化为了求两点路径经过边的边权的最小值,用倍增算法进行计算 倍增求LCA时避免父亲倍增数组
阅读全文

浙公网安备 33010602011771号