09 2019 档案
摘要:题意:有N座山,M条道路。山有山高,路有困难值(即点权和边权)。现在Q次询问,每次给出(v,p),让求从v出发,只能结果边权<=p的边,问能够到达的山中,第K高的高度(从大到小排序)。 思路:显然,最小化最大边权,需要先得到生成树,三种思路。 第一种:离线+启发式合并,这里先不管。 第二种:Krus
阅读全文
摘要:题意:给定数组a[]的生成方式,然后b[i]=∑a[j] ,(i%j==0),求所有b[i]的异或和。所有运算%2^32; 思路:高维前缀和的思想,先筛出所有素数,然后把每个素数当成一维,那么分开考虑即可。复杂度O(NloglogN); 如果有这一维就加进去就可以了~神奇。
阅读全文
摘要:题意:给定N点,M边,每条边有两个属性(a,b),现在让你选N-1条边出来,然后使得∑a*∑b最小。N<200,M<1e4; 思路:我们把∑a看成x,∑b看成y,那么一个方案对应一个二维坐标(x,y)。假设我知道了其中两个方案[A,B],那么,如果另外一个方案C更优,则在二维平面上,C至少要满足在A
阅读全文
摘要:题意:给定N个数字,Q次询问,询问这个区间的最大加权众数是多少。 加权众数是指出现次数*数字大小。N,Q<1e5。 思路:不难发现可以N*sqrtN*logN的思路做,但是应该过不了。 这个Nsqrt是莫队的时间,log的支持加入和删除的数据结构的复杂度。 如果用配对堆的话,应该还是比较快的。 没有
阅读全文
摘要:题意:现在给定空空的三维平面,有加点操作和询问立方体点数。 思路:考虑CDQ套CDQ。复杂度是O(NlogN*logN*logN),可以过此题。 具体的,这是一个四维偏序问题,4维分别是(times,x,y,z);我们知道cdq可以求出t<=T,x=X,y<=Y,在套一层就可以z<=Z了。那么一个立
阅读全文
摘要:题意:询问区间有多少个连续的段,而且这段的颜色在[L,R]才算贡献,每段贡献是1。 有单点修改和区间查询。 思路:46min交了第一发树套树,T了。 稍加优化多交几次就过了。 不难想到,除了L这个点,其他的点都可以只统计这一段的段首。把位置看成x,颜色看成y,就成了二维平面就矩形内点的个数,这就是裸
阅读全文
摘要:题意:f(i)=i的幂次之和。 求(N+1-i)*f(i)之和。 思路:可以推论得对于一个素数p^k,其贡献是ans=(N+1)[N/(P^k)]+P^k(1+2+3...N/(P^k)); 我们分两部分统计答案即可,在p<=sqrt(N)时,可以暴力(阶乘那样一直除)统计答案。 p>sqrt(N)
阅读全文
摘要:题意:定义积性函数f(x)f(x)f(x),且f(p^k)=p^k*(p^k−1) (p是一个质数),求f(1)+f(2)+...f(n); 思路:板子题。重新打了一份装起来。
阅读全文
摘要:题意:给定X轴上的一些三角形,求面积并。 每个三角形的给出形式是Li,Ri,Xi,Yi,表示三个顶点分别是(Li,0);(Ri,0);(Xi,Yi),且满足Li<=Xi<=Ri; 思路:我们把这些三角形全部涂黑,就会发现只需要找到这些关键的“拐点”即可,最后求出每两个拐点之间形成的梯形的面积即可。
阅读全文
摘要:题意:给定N个点,然后给定一个半径为R的圆,问这个圆最多覆盖多少个点。 思路:在圆弧上求扫描线。 如果N比较小,不难想到N^3的算法。 一般这种覆盖问题你可以假设有两个点在圆的边界上,那么每次产生的圆去看多少个点在园内即可。 但是我们现在要更高效的做法。题目等价于,有N个半径为R的圆,问二维平面上一
阅读全文
摘要:题意:有N个不同的商品,每个商品原价是Pi元,如果选择打折,可以减少Di元。 现在加一种规则,每个商品有一个友好商品Fai,如果i用原价买,则可以免费买Fai。 现在问买到所有物品的最小价格。 思路:显然是一个内向树基环。 先把悬在环上的树都求出DP[][],然后再在链上同理跑一遍DP。 我们先看树
阅读全文
摘要:题意:给定N点N边的无向连通图,现在让你在图中找一点作为餐厅,使得最远点距离这点最近。 思路:为了保留整数,我们求最小直径,最后去除2。 直径来源于两部分: 1,在外向树中; 那么就是树的直接,一棵树求直径直接跑一边DP就可以了。(或者两遍BFS吧,麻烦一点而已),假设最大值为ans1。 2,可能通
阅读全文
摘要:(有向图)基DP:https://ac.nowcoder.com/acm/contest/140/B (无向图):bzoj3242 ,最小化最远距离。 (无向图):bzoj1791,求基环树直径。 (无向图):bzoj1040,基环树最大独立基。 #include<bits/stdc++.h> #d
阅读全文
摘要:题意:给定N,K,P,表示现在有一个集合{0, 1, ..., 2n - 1},问有多少个非空子集的异或和为K; 答案%P。(1 ≤ n ≤ 1018, 0 ≤ k ≤ min(2n - 1, 1018), 2 ≤ p ≤ 109, p is prime.) 思路:先抽离出一个线性基出来,然后非基部
阅读全文
摘要:题意:给定数组,求所有异或起来为0的集和的大小之和。 思路:由于是集合大小,我们换成考虑每个元素在多少个集合里有贡献。 先生成线性基。 对于没有插入线性基的元素x,贡献是2^(N-base-1),因为x选择之后,其他非基元素无论选还是不选,都可以调整基来使得异或和为0。 对于插入线性基的元素x,我们
阅读全文
摘要:题意:有N个宿舍(N<200),给出第一年每个宿舍有哪4个同学。现在给出N个4元组y[][4],表示这4个人想住一起,问最少多少人需要换宿舍。 思路:费用流,每个4元组y[]到每个宿舍连边,流量是1,费用是4-same。
阅读全文
摘要:#include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int maxn=600010; const int Mod=1e9+7; int c[maxn],fa[maxn]; int Laxt[maxn],Next[maxn],T
阅读全文
摘要:题意:给定N*M的矩阵,'*'表示可以通过,'#'表示不能通过,现在要找两条路径从[1,1]到[N,M]去,使得除了起点终点,没有交点。 思路:没有思路,就是裸题。 Lindström–Gessel–Viennot lemma a到b,c到d,两条路径完全没有交点的方案数=w[a,b]*w[c,d]
阅读全文
摘要:题意:给定N个数a[],现在用a形成一个新的数组b[],1<=b[i]<=a[i]。 问所有的方案的最大值之和。 思路:先排序。然后分段统计贡献,假设a[i-1]<a[i],那么[a[i-1]+1,a[i]]的贡献就是左边的所有方案*右边的合法方案,合法即是最大值这个区间内。 假设max=x,那么右
阅读全文
摘要:7题弟弟,被各位半小时13题的大佬打惨了(滑稽) 签到题就不写了。 F :Moving On (1247ms) 题意:给定大小为N的带点权,带边权的完全图,N<200。 然后Q次询问,每次给出(u,v,w),让你求在除了起点终点的其他途经点的点权都<=w的条件下的最短路。 思路:可以离线做的话,显然
阅读全文