
POJ
笑对这个世界的志贵
这个作者很懒,什么都没留下…
展开
-
【DAG && 拓扑】POJ - 3249 Test for Job
Problem Description 说的是一个人去找工作遇到了一道面试题,面试官要求给出一些城市和城市之间的道路,没到达一个城市,可能会赚一些钱,但是也可能会有损失。最终面试者的总所得会决定他是否会得到这份工作,那么显而易见的,总所得越多越好了。思路:给你n个点还有m条边,给你n个点的权值。经过的点都可以得到点上的权值,权值有负坑了我挺久的。让你求获得最大的权值。我们得将点值换成边值。设一翻译 2017-08-02 19:29:44 · 233 阅读 · 0 评论 -
【区间范围素数筛法】POJ - 2689 Prime Distance
Problem Description 输入a,b代表区间范围[a,b]。问你里面相邻素数距离最近的是那两个素数,相邻素数距离最远的是那两个素数。思路: 素数筛法复杂度是O(nloglogn)。因为b的范围爆int,直接跑肯定超时。我们可以开两个数组,数组prime[]用来筛[2, sqrt(b)),数组Prime[]用来筛[a, b]。因为b以内的合数的最小质因数一定不超过sqrt(b)翻译 2017-10-07 11:14:58 · 502 阅读 · 0 评论 -
【埃氏筛法】 OpenJ_Bailian - 3177 判决素数个数
Problem Description 输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。思路: 模板题,因为max(x, y)<=10^5。所以直接跑埃氏筛法这个即可。#include<bits/stdc++.h>using namespace std;#define nn 100055int prime[nn];void get_prime(int a, int b)翻译 2017-10-07 10:05:19 · 574 阅读 · 0 评论 -
【中国剩余定理 && 扩展欧几里德】 POJ - 1006 Biorhythms
Problem Description 题目大意参考博客:優YoU http://blog.youkuaiyun.com/lyy289065406/article/details/6648551思路: 中国剩余定理用来解决问题:求x ≡ai ( mod mi )(0 <= i < n)的解x其中m1,m2,m3…两两互质 令Mi = m1*m2*m3*…m(n-1)/mi。因为Mi 和 mi翻译 2017-10-06 14:30:16 · 231 阅读 · 0 评论 -
【状压dp && 矩阵快速幂】 POJ - 3420 Quad Tiling
Problem Description 给你一个4×N的矩阵,你可以填1×2的矩阵 or 2×1的矩阵,问你填满有多少种方案,需要取mod。思路: poj 2411的基础上加了个矩阵快速幂#include<cstdio>#include<cstring>using namespace std;struct node{ long long a[16][16];};nod翻译 2017-09-05 08:40:09 · 248 阅读 · 0 评论 -
【模线性方程 && 扩展欧几里德】POJ - 2115 C Looooops
Problem Description 题目理解参考了博客:優YoU http://blog.youkuaiyun.com/lyy289065406/article/details/6648546 其实就是让你求Cx=(B-A)(mod 2^k)方程的x值思路 我们先讨论ax ≡ b(mod)n 意思就是a和b关于模n同余。so:ax - b = ny, 转换一下 ax - ny = b。ax -翻译 2017-10-06 13:22:17 · 237 阅读 · 0 评论 -
【最小费流 && 模板题】POJ - 2195 Going Home
Problem Description 输入n,m,给你一个n*m的矩阵m代表人,H代表房子,每个人得进去一个房子,被进去的房子不能在进。人移动一单位距离需要花费1,问你最少花费思路: 建图,求最大流就好了,找出所有的人的坐标,找出所有的房子的坐标,每个人到所有房子建立一条边,流量为1,费用为距离。超级源点到人建边,流量为1,费用0。房子到超级汇点建边,流量1,费用0。#include<翻译 2017-09-25 19:45:29 · 275 阅读 · 0 评论 -
【主席树入门 && 区间内第k小的数】POJ - 2104 K-th Number
Problem Description 输入n, m代表有n个元素,m个访问。接下来输入n个元素。输入m行访问,每行有三个元素l r k。问你下标l - r里面第k小的数是几?思路: 学长讲堂blue学长很棒的给我们入了个门。自己也能手敲出来这题,也算理解这题了。主席树由n个线段树组成,每个线段树只有logn的节点,只保存存在该元素的节点。代码:#include<cstdio>#inc翻译 2017-09-22 11:47:22 · 290 阅读 · 0 评论 -
【最大流 && 输出路径】POJ - 3436 ACM Computer Factory
Problem Description 输入p, n代表一个机器由p个部件(0代表没有该部件,1代表有),n代表有n种转换方式。接下来n行每行输入,a[i], in[i][1] … in[i][p], out[i][1]…out[i][p]。例如:15 0 0 0 0 1 0,机器人身上的部件满足0 0 0可以转换成0 1 0,最大可以转换15台。问你最后产生1 1 1的机器人有几翻译 2017-09-20 18:02:08 · 322 阅读 · 0 评论 -
【最大流 && 拆点限流】POJ - 3281 Dining
Problem Dscription 输入 n, f, d分别代表有n头牛,f种食物,d种饮料。接下来n行,每行输入F D f[1]..f[F] d[1]..d[D]。代表牛1有F种喜欢的食物,D种喜欢的饮料,分别是f[1]..f[F], d[1]..d[D]。每种食物只能给一个牛吃,每种饮料也只能给一个牛喝,意思就是给了牛A,就不能给牛B了。问你最多有多少头牛。能吃到食物同时喝到饮料?翻译 2017-09-20 21:12:17 · 342 阅读 · 0 评论 -
【状态压缩dp 入门】POJ - 2411 Mondriaan's Dream
Problem Description 给你一个h,w的矩阵,你可以使用1*2或者2*1的矩阵将其填满,问你有多少种情况。参考博客:http://blog.youkuaiyun.com/shiwei408/article/details/8821853 pre,now的二进制代表一行怎么放。核心就是枚举出所有的pre->now的情况,然后用path[]数组存起来,然后跑h行,这一行为now这种二进制,翻译 2017-09-02 17:38:55 · 230 阅读 · 0 评论 -
【二分图多重匹配 && Dinic】POJ - 2289 Jamie's Contact Groups
Problem Description 给你m个组别,每个组别可以只能放特定的人。并最大限度地减少最大组的人数思路: 0-(m-1)代表人,m代表超级源点,n-(n+m)代表组别,n+m+1代表超级汇点。二分 人到超级汇点的流量,最大流求最大匹配,如果最大匹配 = n就减少流量。#include<cstdio>#include<cstring>#include<vector>#in翻译 2017-11-12 19:44:35 · 432 阅读 · 0 评论 -
【最小边覆盖 && 无向图】POJ - 3020 Antenna Placement
Problem Description 感兴趣的点用*表示 一个n*m的矩阵, 一个雷达可覆盖相邻的两个位置,一个感兴趣的点可被多个雷达覆盖, 至少需要多少个雷达,才能把所有的感兴趣的点覆盖掉。思路 对于不存在孤立点的图,最大匹配数 + 最小边覆盖数 = 顶点数 紧接着就是建图: 相邻的感兴趣的点可以到达,我们就给它们之间连接一条边。所以我们对于每个感兴趣的点都给它们一个翻译 2017-11-03 09:12:08 · 225 阅读 · 0 评论 -
【二分图多重匹配 && 最短路 && (快)最大流】POJ - 2112 Optimal Milking
Problem Description 有C头奶牛,K个挤奶站,每个挤奶器最多服务M头奶牛,奶牛和奶牛、奶牛和挤奶站、挤奶站和挤奶站之间都存在一定的距离。现在问满足所有的奶牛都能够被挤奶器服务到的情况下,行走距离的最远的奶牛的至少要走多远。思路: 求满足情况行走距离最远的那牛,所走的最短距离的问题 网络流 + 二分。题目给了奶牛和奶牛,奶牛和挤奶站,挤奶站和挤奶站之间的距离,我们得求翻译 2017-11-12 20:01:44 · 236 阅读 · 0 评论 -
【后缀数组 不重叠重复最长子串】POJ - 1743 Musical Theme
Problem Description 题目大概是给n个数组成的串,有多个“重复”且不重叠的子串的长度大于等于5,两个子串重复当且仅当长度相等且每一位的数字差都相等,的最长子串 例如给你1 2 4 5 11 6 7 9 10 16。 1 2 4 5 11, 6 7 9 10 16这两个就是重复子串,它们的差1 2 1 6 -5 1 2 1 6.思路: 我们就把相邻数的差求出来存数组里翻译 2017-12-12 18:35:32 · 315 阅读 · 0 评论 -
【折半枚举 && 二分】POJ - 2785 4 Values whose Sum is 0
Problem Description 给定各有n个整数的四个数列A, B, C, D。要从每个数列中取出1个数,使四个数的和为0。求出这样的组合的个数。当一个数列中有多个相同的数字时,把他们作为不同的数字看待。思路: 正常思路全枚举 O(n^4)肯定超时。不过将它们对半分成AB和CD再考虑,就可以快速解决了。 对于C,D枚举所有和的情况O(n^2), 对于A,B枚举所有和的情况O(翻译 2017-12-21 11:17:01 · 185 阅读 · 0 评论 -
【反转问题】POJ - 3279 Fliptile
Problem Description 农夫约翰直到聪明的牛产奶多。于是为了提高牛的至上他准备了如下游戏。有一个N*M的格子,每个格子可以翻转正反面,它们一面是黑色,另一面是白色。黑色的格子翻转后就是白色,白色的格子翻转过来则是黒色。游戏要做的就是把所有的格子都翻转成白色。不过因为牛蹄很大,所以每次翻转一个格子时,与它上下左右相邻接的格子也会被翻转。因为翻格子太麻烦了,所以牛都想通过尽可能少的次翻译 2017-12-21 10:09:33 · 311 阅读 · 0 评论 -
【反转问题】POJ - 3276 Face The Right Way
Problem Description N头牛排成了一列。每头牛或者向前或者向后。为了让所有的牛都面向前方,农夫约翰买了一台自动转向的机器。这个机器在购买时就必须设定一个数值K,机器每操作一次恰好使K头连续的牛转向。请求出为了让所有牛都能面向前方需要的最少的操作次数M和对应的最小的K。思路: 首先交换区间反转的顺序对结果是没有影响的,此外,可以知道对同一个区间进行两次以上的反转是多余的。翻译 2017-12-21 09:38:20 · 215 阅读 · 0 评论 -
【后缀数组 重叠重复字串个数大于k的最长长度】POJ - 3261 Milk Patterns
Problem Description 给你一个长度为n的数组(串),数组的数值范围1-1e6。让你求可重叠重复字串个数大于k的最长长度是多少 可重叠最长重复字串: 例如abcdbcdbcb,可重叠最长重复字串bcdbc。思路: 如果只是要找可重叠最长重复字串,就是k=2的意思。直接找height[]数组最大值即可。 但是这里k不一定是2。所以我们得找连续(k-1个)的h翻译 2017-12-12 17:06:18 · 223 阅读 · 0 评论 -
【尺取法】POJ - 3320 Jessica's Reading Problem
Problem Description 为了准备考试,Jessica开始读一本很厚的课本。要想通过考试,必须把课本中所有的知识点都掌握。这本书总共有m页,第i页恰好有一个知识点ai(每个知识点都有一个整数编号)。全书中同一个知识点可能会被多次提到,所以她希望通过阅读其中连续的一些页把所有的知识点都覆盖到。给定每页写到的知识点,请求出要阅读的最少页数。思路: 因为页数范围是1e9,不能开数组翻译 2017-12-20 21:59:22 · 370 阅读 · 0 评论 -
【最大化最小值】POJ - 2456 Aggressive cows
Problem Description 农夫约翰搭了一间有n间牛舍小屋。牛舍排在一条线上,第i号牛舍在ai的位置。但是他的M头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其他牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。思路: 最大化最小值的思路一般就是二分结果。#include<cstdio>#include<algorithm>翻译 2017-12-20 21:17:13 · 387 阅读 · 0 评论 -
【二分答案 保留两位小数】POJ - 1064 Cable master
Problem Description 有n条绳子,它们的长度分别为ai。如果从它们中切割出K条长度相同的绳子的话,这K条绳子每条最长能有多长?答案保留到小数点后2位。思路: 二分答案,判断是否满足,因为结果是小数,所以跑暴力。#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const i翻译 2017-12-20 21:00:03 · 330 阅读 · 0 评论 -
【Java 进制转换】POJ - 2305 Basic remains
Problem Description 输入一个整数b,代表b进制。输入两个b进制数p, m。 让你输出p%m后的b进制数思路: 用Java非常简单import java.io.*;import java.util.*;import java.math.*;public class Main{ public static void main(String[] arg翻译 2017-11-14 17:22:48 · 292 阅读 · 0 评论 -
【Java 八进制转换十进制】POJ - 1131 Octal Fractions
Problem Description 输入一个0-1的八进制小数。让你输出转换成十进制的值思路: Java学习中 八进制 123.456 十进制 1*8^2 + 2*8^1 + 3*8^0 + 4*8^(-1) + 5*8^(-2) + 6*8^(-3)import java.io.*;import java.util.*;import java.math.*;pub翻译 2017-11-14 10:57:18 · 443 阅读 · 0 评论 -
【边双连通分量 && LCA】POJ - 3694 Network
Problem Description 输入n,m分别代表有n台电脑,m条线路。接下来m行,每行u,v代表u-v之间有线路连接。输入q,代表有q次访问,每次访问输入u,v问你连接u-v后,还有几个桥思路: LCA是用来求缩点u - 缩点v之间有多少条桥先按边双连通分量缩点,按照缩点后建图,然后以1为根,建树,求每个点的父亲和深度。接着就是求LCA,经过过的点标记一下(经过的点另外构成了边双翻译 2017-09-19 11:35:50 · 410 阅读 · 0 评论 -
【边双连通 && 加几条边变成边双连通】POJ - 3177 Redundant Paths
Problem Description 输入n个点,m条边,边有重复,问你最少添加几条边,可以使得任意两个点,至少有两条不同的路径到达。其实就是问你最少添加几条边,使得图变成边双连通思路: 卡了挺久的,就因为有重边,还以为是自己的代码错误。求边双连通的姿势不对。既然有重边,缩点(边双连通缩点)后 判断度得思考思考,有两种方法,一种是用邻接矩阵存边,这样重边就没事了,第二种方法就是,有桥就代翻译 2017-09-18 11:34:08 · 528 阅读 · 0 评论 -
【强连通分量模板题 && 加几条边变强连通】POJ - 1236 Network of Schools
Problem Description 给你N个学校的网络,接下来N行,每行输出整数,以0退出。代表第i个学校的网络能到达这n个整数。(1)要你输出至少需要几个学校网络就可以遍布所有学校网络。(2)如果想学校网络能够两两相互到达至少需要加几条边(其实就是将整个图变成强连通需要加几条边)思路:求出强连通分量缩点(DAG图),(1)入度为0的点的个数代表第一问题的答案。(2)找出入度为0点的最大个翻译 2017-08-02 08:44:31 · 472 阅读 · 0 评论 -
【求一个点到各个点的来回花费和】POJ - 3268 Silver Cow Party
Problem Description 输入n,m,x代表n个城市,m条单向道路,求x点到各个点的回来花费和,中的最大和。接下来输入m条道路,每行u,v,w分别代表城市u,到城市v,需要花费w。思路:求x到各点的最小花费,在求各点到x的最小花费(需要把图逆过来在求x到各点的最小花费(因为原本假设一点到x最小花费,你把图逆过来后,就相当于求x到该点的最小花费)不理解可以在纸上画一画)。#incl翻译 2017-06-19 11:18:47 · 252 阅读 · 0 评论 -
【最多能够承受的最大重量】poj 1797 Heavy Transportation
Problem Description 输入T组测试数据,每组测试数据,输入n,m分别代表n个城市,m条道路接下来m行,每行u,v,w分别代表u,v两城市之间道路承受的重量。思路:让你求出从城市1到城市n最多能够运输最大重量,最短路的算法,改变下条件#include<cstdio>#include<iostream>#include<cstring>using namespace std翻译 2017-06-19 10:55:52 · 533 阅读 · 0 评论 -
【最短路中求至少需要的最短跳跃距离】poj 2253 Frogger
Problem Description 输入n,接下来有n个点的坐标。要你求出从第一个坐标点,到第二个坐标点,至少需要的最短跳跃距离(意思就是只要你满足这个值,你肯定能从第一个坐标点到达第二个坐标点)思路:改变下状态变成求,第一个坐标点到所有坐标点的至少需要的最短跳跃距离(坑点,double类型精度太高没法对,得float类型才可以,我内心是绝望的一直以为是自己算法错误)#include<cs翻译 2017-06-19 10:47:07 · 728 阅读 · 0 评论 -
【最短路各种方法求解一题(模板题)】POJ 2387 Til the Cows Come Home
Problem Description 输入T,N分别代表有T条通道,和N个地点。接下来T行u,v,w分别表示u地点于v地点之间通道消费,有重复边Sample Input 5 5 1 2 20 2 3 30 3 4 20 4 5 20 1 5 100Sample Output 90代码:dijkstra,就不带注翻译 2017-06-07 11:50:21 · 327 阅读 · 0 评论 -
【求树的重心】POJ - 3107 Godfather
Problem Description 输入n,代表有n个编号1-n的结点。接下来有n行,每行输入u,v分别表示u,v有联系。让你找出Godfather,其实就是找出树的重心,如果有多个满足这样的点,从小到大输出。思路:第一次做,所以是去网上学习的方法,发现他们都归类为树形dp,然而我dp可能有点差,理解了代码但是没能理解为何是dp。具体的解释看代码里面的注释,,,树的重心(找到一个点,其所有翻译 2017-06-17 09:55:26 · 338 阅读 · 0 评论 -
【BFS + 保存操作】POJ 3414 Pots
Problem Description 给你三个数据,分别表示两个杯子的体积,和要你装出来的体积,两个杯子可以互相倒,也可以倒掉水,也可以装满水。要你输出最少的操作步骤,包括如何操作的。代码:以前在自家OJ做过一样的题,但是那个题,不需要保存操作。。#include<cstdio>#include<algorithm>#include<cstring>#include<queue>#i翻译 2017-05-19 09:48:34 · 223 阅读 · 0 评论 -
【BFS】POJ 3126 Prime Path
Problem Description 输入T组数据,每组数据对应两个千位的素数,要你操作左边的素数变成右边的素数最少的变换(只能改变一个数字,而且变换成的数一定得是素数)次数。代码:需要注意的点就是,个位数肯定不能是偶数,千位数肯定不能是0#include<cstdio>#include<cstring>#include<queue>using namespace std;queue翻译 2017-05-19 09:53:28 · 441 阅读 · 0 评论 -
【BFS+保存路径】POJ 3984 迷宫问题
Problem Description 给你一个5*5的二维数组,表示一个迷宫,0可以走,1不可以走,问你从左上角到右下角,最短的路径,保证数据有唯一的解。代码:BFS从左上角跑到右下角就好了,没跑到一个点记录,是那个点到的这个点。后面翻转下路径输出就可以了#include<cstdio>#include<cstring>#include<vector>#include<queue>u翻译 2017-05-19 09:38:12 · 886 阅读 · 0 评论 -
【BFS】POJ 3087 Shuffle'm Up
Problem Description 给你T组数据,每组数据,输入一个n, 代表两幅扑克的数量,输入两幅扑克对应的字母,字母不同代表颜色不同,再输入一行,代表两个扑克混合在一起的结果。问你洗牌(交叉混合,第二幅扑克先在下)洗几次可以得到混合的扑克代码:一开始没理解好题目,以为那一副扑克在下面都可以,就分了两种情况,发现得不到样例的结果,后面发现是按一种情况洗牌而已#include<cstdi翻译 2017-05-19 09:15:07 · 243 阅读 · 0 评论 -
KMP 求最小循环节 POJ - 1961 Period
Problem Description 给你一个整数n,接下里有n个字符的字符串,到第i个字符的时候判断周期是否大于2,如果大于2同时是循环字符串,输出相应的长度,和循环了几次。Sample Input 3 aaa 12 aabaabaabaab 0Sample Output Test case #1 2 2翻译 2017-04-25 11:51:43 · 517 阅读 · 0 评论 -
【bellman-Ford判断正权回路】POJ - 1860 Currency Exchange
Problem Description 输入n,m,s,v,分别代表n中货币类型,m中兑换渠道,自己拥有的货币类型,自己拥有货币价值。接下来m行,每行a,b,rab,cab,rba,cba.分别代表a类型货币,b类型货币,a-b兑换率,a-b手续费,b-a兑换率,b-a手续费。**思路:判断自己拥有的货币类型出发,回到自己看看有没有正权回路,有就输出YES。#include<cstdio>#翻译 2017-06-19 11:40:17 · 363 阅读 · 0 评论 -
【spfa 判断负权回路】POJ - 3259 Wormholes
Problem Description 输入T组测试数据,每组测试数据输入n,M,W分别代表有n个点,接下来M行u,v,w代表u,v之间需要w才能到达。接下来W行,u,v,w代表u到v需要-w才能到达。思路:从1开始问你能不能让他时光倒流,就是有没有负权边#include<cstdio>#include<cstring>#include<queue>#define INF 0x3f3f3翻译 2017-06-19 11:48:03 · 470 阅读 · 0 评论 -
【Floyd 判断关系】POJ - 3660 Cow Contest
Problem Description 给你n头牛,m个关系。让你判断能确认排名的牛有几头。m行,每行u,v代表u比v强。Sample Input 5 5 4 3 4 2 3 2 1 2 2 5Sample Output 2思路:对于上面的样例能确定排名的牛是2,5。FLoyd把所有能联系的联系在一次,如果和n-1头牛有联系,就能确认排名#includ翻译 2017-06-24 10:42:10 · 219 阅读 · 0 评论