POJ
Winterfell30
这个作者很懒,什么都没留下…
展开
-
POJ 2773 Happy 2006 (二分+容斥)
题意求与n互质的第k个数。思路显然求计数问题的第k个,我们二分出来mid以内有多少个和n互质的数就可以了。求m以内和n互质的数的个数就是那个比较经典的co prime题了。代码#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue原创 2016-05-04 17:46:27 · 501 阅读 · 0 评论 -
POJ 1006 Biorhythms (中国剩余定理)
题意人的身体智力和情感都有高峰低估期,给出这三个的起始天和现在的天数,求还需要多少天能达到三个高峰。思路令这个起始天为a, b, c,那么达到的天数就是ans。 ans % 23 = a; ans % 28 = b; ans % 33 = c 解这个就可以了。因为数据比较少(为了巩固一下计算方法,就直接在函数里面计算了。代码#include <stdio.h> #include <string.原创 2016-05-16 21:01:04 · 433 阅读 · 0 评论 -
POJ 2891 Strange Way to Express Integers (中国剩余定理)
题意求最小的x,满足x%m[i]=r[i]。思路裸的不互质的中国剩余定理(顺便夸一下这个CRT2的板子真的挺好用的=。=代码#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <stack> #includ原创 2016-05-17 15:50:20 · 403 阅读 · 0 评论 -
POJ 3420 Quad Tiling (瓷砖问题+矩阵快速幂)
题意有一个树,每条边都有权值,求每一个点出发的链的最大权值和。思路很经典的树形dp题目,和树的直径的性质相关。 从任意点出发能到达的最远的点一定是直径的一个端点,然后再从这个端点出发能到达的最远的点就是另一个断点,中间的边就是这个树的直径。 我们用两个dfs,第一次维护一个点到他的子树的最长路,第二次用来更新结果。比如u点的最长路,要么从他到他的子树叶节点,要么是从u到达根节点加上根节点到距离根原创 2016-05-31 16:26:01 · 766 阅读 · 0 评论 -
HDOJ 5411 CRB and Puzzle (矩阵快速幂)
题意给出一个邻接矩阵,求走k步以内所有的路径数量。思路离散数学里面学的嘛,可达矩阵的k次方就是走k步时的可达矩阵,然后就转化成计算A+A2...AmA+A^2...A^m 然后想到了POJ的那个经典题目,通过对m二分来求,然后疯狂TLE= =(一个log都不能多吗。。。 最后想到了以前做的某个AC自动机的题也是求这个,给原矩阵加一维然后求幂之后直接对那一维相加就可以了。代码#include <s原创 2016-05-31 16:33:42 · 492 阅读 · 0 评论 -
POJ 1273 Drainage Ditches (最大流)
题意求一个边小于200点小于200的图的最大流。思路因为这里点比较少,直接用Edmonds_Karp(BFS)求就可以了,复杂度为O(E2V)O(E^2V),bfs的复杂度是O(E),增广路的次数为V*E Ford-Fulkerson(DFS)的增广路次数为C,复杂度为O(E*C),不适用于这题。代码#include <stdio.h> #include <string.h> #include <原创 2016-06-07 20:14:48 · 393 阅读 · 0 评论 -
POJ 3580 SuperMemo (Splay各种区间操作)
题意给出一个序列有6种操作 1.ADD x y D 2.REVERSE x y 3.REVOLVE x y T 4.INSERT x P 5.DELETE x 6.MIN x y x,y就是区间[x,y]思路Splay操作小合集。代码#include <stdio.h> #include <string.h> #include <iostream> #include <algorith原创 2016-06-03 12:38:32 · 670 阅读 · 0 评论 -
POJ1717 Dominoes (背包)
题意每个牌子由上部分和下部分构成,可以180度翻转,求令上部分和下部分的差值最小时的翻转次数。思路dp[i][j]表示当前为第i个格子,上面的和减去下面的差为j时最少翻转个数。因为有正有负所以加个maxn,然后因为数组再滚动一下就可以了。 刚开始WA了后来把内层循环直接改成6000到-6000就过了,还有一个可能RE的地方是sum的上下的和,最大是12000不是6000。代码#include <s原创 2016-06-30 15:36:23 · 951 阅读 · 0 评论 -
POJ 1155 TELE (树形背包)
题意1为根节点,有m个叶节点,其他为中间结点,每个结点的权值代表他愿意付出的钱,边的权值代表联通两节点的代价,求不亏损的情况下最多能到达多少个叶节点。思路另dp[u][i]表示根节点为u的子树此时装了i个叶节点的盈利情况(∑moneyi−∑Edgecosti\sum money_i - \sum Edgecost_i) 那么我们就能得到这样的状态转移方程: 如果u是叶节点dp[u][1]=1dp原创 2016-05-27 00:41:33 · 496 阅读 · 0 评论 -
POJ 1811 Prime Test (Miller-Robin+Pollard_rho)
题意判断一个大数是不是素数,如果不是输出最小的质因子。思路Miller-Robin+Pollard_rho,算是这两个算法的模板题吧。 感觉这个挺玄学的。。。要注意在找质因子的时候,gcd那里y-x0有可能是负的,因为这个疯狂TLE代码#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #i原创 2016-05-11 23:40:08 · 409 阅读 · 0 评论 -
POJ 3071 Football (概率DP)
题意有2n2^n个队伍,每次相邻的两个比赛一轮一轮淘汰求胜利概率最大的队伍。思路令dp[i][j]表示第i支队伍在第j轮胜利的概率,那么显然答案就是max(dp[i][n])max(dp[i][n]),然后dp到枚举他第j轮的对手卡住了,然后画了一个树形的赛程图就发现i在第j轮的对手实际上是以从下往上第j层为节点的i所在的那个子树的除了第一轮被i淘汰的队伍之外的其他队伍。 然后发下这个之后就能从二原创 2016-04-29 15:08:58 · 409 阅读 · 0 评论 -
POJ 1830 开关问题 (01高斯消元)
题意有n个开关,按动按钮可以改变灯泡的开关状态,有些开关之间是有联系的,给出初始状态和目标状态,求是否可行,如果可行,求方案数目。思路我们可以另矩阵[x1,x2...xn][x_1,x_2...x_n]来表示解集,即第i个开关需要按动的次数,最后的状态即[b1,b2...bn][b_1,b_2...b_n],原状态是[a1,a2...an][a_1,a_2...a_n],即A*X=B,这里没有要求解原创 2016-04-26 14:38:50 · 477 阅读 · 0 评论 -
POJ 1681 Painter's Problem (高斯消元)
题意和POJ的1222差不多,把一个格子变色然后相邻的4个也会变色,求令其全部变成黄色需要的最少步数。思路POJ1222当时直接状态压缩枚举过的,这题数据也比较小,应该可以状压DP来做,不过复杂度而论当然还是高斯消元要好。 我们可以先预处理出一个n2∗n2n^2*n^2的方程组然后搞死小圆(误 消元的时候求出自由变元存在数组里,然后状态压缩来枚举自由变元求一下利用这些自由变元求出目标状态(全0)原创 2016-04-26 20:53:01 · 389 阅读 · 0 评论 -
POJ 3744 Scout YYF I Scout YYF I (递推+矩阵快速幂)
题意有n个地方有地雷,初始站在1处,有p的概率往前走1步,1-p的概率往前走2步,求安全通过的概率。思路首先我们能想到的是直接递推即dp[i]=p∗dp[i−1]+(1−p)∗dp[i−2]dp[i]=p*dp[i-1]+(1-p)*dp[i-2]然后矩阵快速幂加速一下,但是这样做中间的地雷很难处理。 因为n很小我们就分段求,对每一个地雷求从前一个地雷到通过的概率,比如求通过第x个地雷的概率就是从原创 2016-04-29 12:14:29 · 528 阅读 · 0 评论 -
POJ 1743 Musical Theme (二分后缀数组LCP)
题意给出一段长度小于2e4的序列,如果有两个不重叠子段的一一相邻两个数之间变化情况相同就可以说这两段的是相同的theme。小于5视为0。思路首先我们先对序列进行处理,a[i] = a[i+1] - a[i],新序列即为变化情况的数列,问题转化成找到新序列的最长不重叠子段。 二分答案x然后可以利用lcp数组的性质找到所有符合条件的最左起点和最右起点,判断和x的大小关系即可。代码#include <s原创 2016-10-20 18:09:56 · 410 阅读 · 0 评论