随笔分类 - OJ---HDU
摘要:题意:现在给定空空的三维平面,有加点操作和询问立方体点数。 思路:考虑CDQ套CDQ。复杂度是O(NlogN*logN*logN),可以过此题。 具体的,这是一个四维偏序问题,4维分别是(times,x,y,z);我们知道cdq可以求出t<=T,x=X,y<=Y,在套一层就可以z<=Z了。那么一个立
阅读全文
摘要:(7题弟弟。C题知道正解,懒得写了) A:^&^ HDU - 6702 题意:给出A,B。求一个最小的C,使得min=(A^C)&(B^C)最小。 思路:如果存在A和B都有的位,那么全选,就行了,这时结果min为0; 否则,选最小的那个,一个有,一个没有的那一位p,结果min=1<<p; #incl
阅读全文
摘要:题意:给定数组a[],求区间个数,满足区间的数各不同,而且满足maxval-len<=K; 思路:一看就可以分治做,对于当前的区间,从max位置分治。 对于这一层,需要高效的统计答案,那么对短的一边开始统计。 (这个过程很像启发式的逆过程,所以叫做启发式分治 1,对于数不同,这个可以预处理前缀和后缀
阅读全文
摘要:本题我只是个搬运工,主要是抢救补板子,所以自己就没写。https://blog.csdn.net/u013534123/article/details/78058997 题意: 大致题意是给你一个N*N的矩阵,然后告诉你阿诺德变换,即原来坐标为(x,y)的点变换一次后变成((x+y)%N,(x+2y
阅读全文
摘要:题意:给定带点权的树,问多少个连通块,其乘积<=M; N<=2000,M<1e6; 思路:连通块-->分治; 由于普通的树DP在合并的时候复杂度会高一个M,所以用依赖背包来做。 (当然,由于体积分布是离散的,可能有些选手用map也可以过,这样避免了每次都for(i,1,M),取决于数据吧)。 那么现
阅读全文
摘要:题意:给出A数组,B数组,你可以对A和B分别进行重排列,使得C[i]=A[i]^B[i]的字典序最小。 思路:对于这类题,显然需要建立字典树,然后某种形式取分治,或者贪心。 假设现在有了两颗字典树A,B,显然尽量让同方向的先匹配。 而且同一棵树的左右两边相互不影响,所以可以直接贪:如果A树上出发左走
阅读全文
摘要:题意:给定连通图,求出连通图的所有子图的颜色数。 一个图的颜色数,指最少的颜色数,给图染色,使得有边相邻的点之间颜色不同。 思路:首先想法是DFS枚举,然后计算颜色,发现对于给定图,求颜色不会求? 毕竟是很乱的无向图。 那么考虑DP:dp[s]=min(dp[s0]+1),s0是s的子集,且满足s^
阅读全文
摘要:题意:给定一棵树,有点权a[],有边权。 现在有M次修改点权的操作,输出每次修改后,Σ(a[i]^a[j])*dis(i,j); 思路:因为待修改,我们需要快速得到以及修改一个点到其他所有点的信息。 肯定就是动态点分治了啊。 而异或这个操作没有什么累加的性质,所以每一位拆开单独计算。 根据二进制位置
阅读全文
摘要:题意:给你n个寺庙,m个村庄,p条路,现在你要在这n+m个位置中选出若干个位置打井,每个位置打井的费用会告诉你,同时p条路也有修建费用,现在每个寺庙都住着一个和尚,问你最小的费用让这n个和尚都能喝上水。 思路:可以对照之前做的MST题目(https://www.cnblogs.com/hua-don
阅读全文
摘要:题意:给你n个工作集合,给你T的时间去做它们。给你m和s,说明这个工作集合有m件事可以做,它们是s类的工作集合(s=0,1,2,s=0说明这m件事中最少得做一件,s=1说明这m件事中最多只能做一件,s=2说明这m件事你可以做也可以不做)。再给你ci和gi代表你做这件事要用ci的时间,能获得gi的快乐
阅读全文
摘要:题意:给两种宝石,体积S1,S2,价值V1,V2,背包容量n,求最大收益。 所有数据都在32位整数范围内。 思路:只有两种物品的背包,显然不是常见的背包,应该从背包之外的思路下手。 1:可以猜想其中一个是数量少于1e5,暴力求,然后过了。 2:分类处理数据: 如果有物品体积>=sqrt(N),那么可
阅读全文
摘要:pro:给定一个N边形,然后给半径为R的圆,问是否可以放进去。 问题转化为多边形的最大内接圆半径。(N<50); sol:乍一看,不就是二分+半平面交验证是否有核的板子题吗。 然而事情并没有那么简单。 因为我们的多边形可能是凹多边形,而前面的方法只对凸多边形有效。 学习了下模拟退火的算法,这个随机算
阅读全文
摘要:pro:开始有一个字母虫,然后字母虫在每一天可以选择自己身上的部分字母变换,变换规则形如A->BC。 现状给定最终字母虫的字符串,求最少用了多少天。 如有规则A->BC,B->AC,C->AB;则ACAB可以见过三天(A-BC-ACC-ACAC)或者两天(A-BC-ACAB)得来。 规则不超过80,
阅读全文
摘要:pro: T次询问,每次给出N(N<1e8),求所有Σi^4 (i<=N,且gcd(i,N)==1) ; sol: 因为N比较小,我们可以求出素因子,然后容斥。 主要问题就是求1到P的4次幂和。 我们知道K次幂和是一个K+1次多项式。 这里有公式Pre=P*(P+1)*(2P+1)*(3P^2+3P
阅读全文
摘要:pro:给定N*M的矩阵,现在让你在每一行删去一个位置,然后形成新N*(M-1)的矩阵,问有多少种不同的新的矩阵。需要满足相邻行删去的位置不大于K。 (题目是01矩阵,其实任意矩阵都可以做,本题算法里只关心相邻的是否相同。 sol:dp[i][j]表示从上到下删,删到第i行,第i行删去第j列的不同矩
阅读全文
摘要:problem:给定N,K。表示你有数1到N,让你最多选择K个数,问有多少种方案,使得选择的数的乘积无平方因子数。N,K<500; solution:显然可以状压DP做,但是500以内的素数还是蛮多的,无法高效得DP。 但是我们注意到,大于sqer(N)的素数,同一类最多用一个,这不就是分组背包吗。
阅读全文
摘要:pro:给定N个数Xi(Xi<1e18),保证每个数的素因子小于2e3;问有多少种方案,选处一些数,使得数的乘积是完全平方数。求答案%1e9+7; N<300; sol:小于2e3的素数只有304个。选或者不选看成1和0,那么问题其实就是问%2意义下的自由元。 答案是2^自由元
阅读全文
摘要:pro:给定N*M的矩阵,每次操作一个位置,它会增加2,周围4个位置会增加1。给定初始状态,求一种方案,使得最后的数都为0;(%3意义下。 sol:(N*M)^3的复杂度的居然过了。 好像标程是M^3的,因为第一排确定了,后面的都确定了。所以我们只要设关于第一排的方程,那么跑下来,第N+1排的都为0
阅读全文
摘要:pro:给定N+1个点的树,有M对关键点,现在让你破坏最少的点,使得M对关键点不连通。 sol:贪心,我们把M对点按照LCA深度排序,每次破坏LCA。 如果一对点(u,v,lca),u-lca-v有点被破坏,则可以不用破坏新的点。 我们可以用dfs序+树状数组来处理。 如果破坏了一个点,则给它的子树
阅读全文
摘要:Description 有nn个城市,第ii个城市商品价格为aiai,从11城市出发依次经过这nn个城市到达n n城市,在每个城市可以把手头商品出售也可以至多买一个商品,问最大收益。 Input 第一行一整数T T表示用例组数,每组用例首先输入一整数nn表示城市数量,之后输出nn个整数ai ai
阅读全文