
poj
文章平均质量分 59
巴黎没有欧莱雅你也不值得被拥有
发现自己近来好懒,好久没沉淀芝士了
展开
-
模板_poj1523SPF_割点以及点连通分支
poj1523题目链接题意: 图中是否有割点,去掉某个割点后有几个连通分量。block[i]是去掉割点i后的连通分支个数。割点:去掉这个点后,连通分支数比没去点这个点的连通分支数多1#include#include#includeusing namespace std;#define min(a,b) a<b?a:b #define max(a,b)原创 2017-04-28 10:12:38 · 626 阅读 · 0 评论 -
POJ1753 flip Game翻转棋盘
/*题目大意:有一个4*4的方格,每个方格中放一粒棋子,这个棋子一面是白色,一面是黑色。 游戏规则为每次任选16颗中的一颗,把选中的这颗以及它四周的棋子一并反过来,当所有的棋子都是同一个颜色朝上时, 游戏就完成了。现在给定一个初始状态,要求输出能够完成游戏所需翻转的最小次数, 如果初始状态已经达到要求输出0。如果不可能完成游戏,输出Impossible。 Sample Inputbwwb原创 2016-08-09 18:34:42 · 1370 阅读 · 0 评论 -
poj1459Power Network_最大流的增广路算法_多源点多汇点问题(Edmord_Karp)
题目链接题目大意:现在有一个发电站,需要给用户送电。解释一下输入数据:总结点数 nodenum 电站数power 用户数consumer 电缆线数link然后link行,起点-终点 发电量然后power行,每个电站的产电量然后consumer行,每个用户的用电量解题思路:这道题是最大流的入门题,只是变成了多源多原创 2017-04-22 11:06:55 · 699 阅读 · 0 评论 -
模板_poj1273Drainage Ditches_最大流问题_残留网络流增广解决(Ford-Fulkerson方法)
题目链接 最大流定理 如果残留网络上找不到增广路径,则当前流为最大流;反之,如果当前流不为最大流,则一定有增广路径。这里涉及到了一个残留网络.如果已经理解了什么是最大流,算法说起来就比较好理解了,在每次找到一条增广路之后,就去更新它的流量(正反向都要更新),每次更新后再继续原创 2017-04-21 16:29:02 · 486 阅读 · 0 评论 -
poj3020_最小覆盖路径(顶点个数-二分图最大匹配数)
poj3020 题目链接建议做这题前先做下poj3041题目链接3041那题是最小点覆盖3020是最小路径覆盖题意: *--代表城市,o--代表空地 给城市安装无线网,一个无线网最多可以覆盖两座城市,问覆盖所有城市最少要用多少无线。公式:,最小路径覆盖=总节点数-最大匹配数;但是由于在建图的时候建的是无向图,所以最大匹配数=求得的最大匹配数/原创 2017-04-20 10:22:56 · 1831 阅读 · 0 评论 -
poj3041_匈牙利算法_二分图最小覆盖点(最大匹配数)
题目链接这里是不是应该写下什么是匈牙利算法(找到了一个非常容易理解的一个讲解趣味算法),这位大佬已经讲的很详细了~~~题意:在一个n*n的网格中,有k个炸弹吧,每次可以删除一行或者一列,要清除这所有炸弹最少要删除几次。思路(copy:参考链接):将每行、每列分别看作一个点,对于case的每一个行星坐标(x,y),将第x行和第y列连接起来,例如对于输入:(1,原创 2017-04-19 20:07:39 · 462 阅读 · 0 评论 -
poj1573_搜索(广搜和深搜)
点击打开题目链接其实深搜和广搜都一样,没有太大的差别,因为每次都是只走了一个深搜:#include#includeint book[100][100];char map[100][100];int s;int n,m,count,flag;void dfs(int c,int r){ if(book[c][r]) { flag=1;原创 2017-04-17 13:50:51 · 428 阅读 · 0 评论 -
poj1236Network of Schools_强连通分量缩点(tarjan算法解决)
poj1236题目链接题目大意:有N个学校,从每个学校都能从一个单向网络到另外一个学校,两个问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2:至少需要添加几条边,使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。(就是最少加入几条边,让这个图变成强连通图)解题思路:首先找连通分量,然后看连通分量的入度为0点的总数,出原创 2017-04-24 14:43:35 · 408 阅读 · 0 评论 -
poj2186Popular Cows_ 强连通分支_缩点tarjan算法
题目链接 题意: 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头牛被所有的牛认为是受欢迎的。 先用tarjan求出每个强连通分量,再缩点,统计每个点的出度,如果有原创 2017-04-23 17:26:23 · 329 阅读 · 0 评论 -
模板_poj1201Intervals_差分约束系统解决(类区间问题)
poj1201题目链接题意:第一行输入n,下面输入n个限制条件,条件的格式为 ai bi ci, 0差分约数系统的含义,其实就是如果有n个变量在m个形如aj-ai>=bk(类似于求最长路径)条件下,求解的此不等式的方法。 而这种不等式的解法其实就是转化为图论的最小路的算法求解的。我们将上面的不等式边形后得到aj>=ai+bk正好就可以看做是从ai到aj权值是bk的一条原创 2017-04-24 21:01:15 · 748 阅读 · 0 评论 -
poj3159Candies_差分约束系统解决_转换(spfa算法)
真是迷之题啊,第一次用vector超时,不知道是怎么回事!了解数组实现邻接表题目链接题意:给n个人派糖果,给出m组数据,每组数据包含A,B,c 三个数,意思是B不能比A多超过C个,即B- A<= c 。最后求第n个同学 比 第1个同学最多多几个糖果。算了先说下学习的这个新算法吧;差分约束。 总共n个点,m对 A B c 表示B-A要求1和n的差值原创 2017-04-24 19:33:44 · 438 阅读 · 0 评论 -
poj3026Borg Maze_最小生成树(广搜+prim算法)
题目链接!题很简单,就是求最小生成树的,难点就在于将图转化成边(带权值),就是这一块不好转化。我想到了用广搜去找每个顶点到其他顶点的距离,但是在代码实现上有些困难,参考了别人的代码后就恍然大悟了,觉得在prim算法上会很简单,但是同样也遇到了问题,就是在dis[]初始值时候,不知道初始谁了。总认为要先将S(开始搜索的地方)加入第一个dis值中,这样的一个错误的想法就卡住了。看来还是原创 2017-04-18 09:22:32 · 379 阅读 · 0 评论 -
poj3255Roadblocks_次短路径
题目链接题意:某街区共有R条道路,N个路。道路可以双向通行。问1号路口到N号路口的次短路长度是多少?次短路指的比最短路路长度长的次短的路径。同一条边可能经过多次。思路是竟然是次短路,那么就是和最短相差了一条边(这条边是大于最短路径的最小值)多想下,所以一定是经过某一节点的(u,v)的边e(u,v);所以用到了源点到各个点的dis和终点到各个点的dis2;#include#原创 2017-05-03 09:07:24 · 611 阅读 · 0 评论 -
poj3352Road Construction_双连通分量(边)(tarjan算法之一)
poj3352题目链接题意:给出n个顶点,m条边,求至少添加几条边使这个图为双连通图。双连通图分为点连通和边连通图,其中他们之间还有着密切关系(具体可以根据自己需要深入了解)首先根据题意要求和求边连通的方法简单,我们选择用边连通的方法解决问题。将已经连通的图进行缩点,使之变成一棵树,那么最少添加的边个个数就是这棵树的(叶子节点数+1)/2;其实我们是根据每个节点的low原创 2017-04-27 11:16:49 · 587 阅读 · 0 评论 -
poj1328_Radar Installation(贪心区间解决)
(poj 1328 题)讲解:不再以雷达为中心找能最大覆盖岛屿的面积,而是一岛屿为中心,一最大距离d为半径找这个岛屿如果想要被覆盖,雷达所能在的位置区间。把n个区间按照左边的大小排序,我们比较右边的大小来找有多少个独立的区间,独立区间的个数就是需要雷达的个数。(记住公共区间需要缩小区间范围(当存在包含关系的时候要更新比较区间max的大小))这种题存在double 浮点型的题一定要仔细,原创 2017-04-12 20:29:00 · 346 阅读 · 0 评论 -
poj2060Taxi Cab Scheme_最小覆盖路径问题
题目链接题意: 租车公司有n个预约, 每个预约有时间和地点, 地点分布在二维整数坐标系上, 地点之间的行驶时间为两点间的曼哈顿距离(|x1 - x2| + |y1 - y2|)。一辆车可以在运完一个乘客后运另一个乘客, 条件是此车要在预约开始前一分钟之前到达出发地, 问最少需要几辆车搞定所有预约。给出一些预约的起始时间,出发地和目的地,问至少需要多少车可以满足所有的预约原创 2017-04-29 17:47:48 · 525 阅读 · 0 评论 -
poj1094_Sorting It All Out_拓扑排序
poj1094题目链接有三种情况: 1.有序 2.无序 3.有环拓扑排序可以判断是否有环或有序,除此以外就是无序了。并且1,3情况下只要判断后之后的输入就无影响,2必须要把所有顶点遍历完后才能确定。建议在把排序时候把每次入度为0的顶点输出调试一下,更有助与理解。#include#incl原创 2017-04-19 21:29:02 · 243 阅读 · 0 评论 -
poj2632_(模拟法)
题目贴的代码,这题我写了一下午了,无语了不想在做了#include #include #include using namespace std;const int maxn = 100 + 10;int G[maxn][maxn];int dx[] = {0, 1, 0, -1};int dy[] = {1, 0, -1, 0};struct Robots原创 2017-04-13 20:49:28 · 331 阅读 · 0 评论 -
poj1068_(构造法/模拟法)
看题或者提交点击这里哦~题意:一个括号表达式可以按照如下的规则表示,就是每个右括号之前的左括号数。比如(((()()()))),每个右括号之前的左括号数序列为P=4 5 6 6 6 6,而每个右括号所配对的左括号是距离他的第几个W=1 1 1 4 5 6.现在给定P,输出W。讲解在这里~: 首先说哪坑吧!就在那个n值那里!n (1 n (1 怎么原创 2017-04-13 15:02:31 · 635 阅读 · 0 评论 -
poj2109_(数学公式)
(题在这~)#include#includeint main(){ double n,p; while(~scanf("%lf%lf",&n,&p)) { printf("%.0lf\n",pow(p,1/n)); } return 0;} 看了别人的代码,二分+高精度的,以后遇到这种问题(大范围的题),就提醒了我要首先想到用二分算法来缩小数据范围或许这题用这原创 2017-04-13 09:25:42 · 342 阅读 · 0 评论 -
poj1789_最小生成树
poj1789最小生成树#include#includeusing namespace std;struct node{ int u,v,w; }edge[2000505];int p[2005];int cmp(node a,node b){ return a.w<b.w;}int find(int x){ return p[x]==x?x:p[x]=fi原创 2017-04-20 11:15:03 · 291 阅读 · 0 评论 -
poj2485_最小生成树
poj2485题目链接#include #include#define N 505int map[N][N];int dis[N],book[N];int main(){ int t; scanf("%d",&t); while(t--) { memset(book,0,sizeof(book)); int n,i,j,k; int count=0; sca原创 2017-04-20 11:17:31 · 230 阅读 · 0 评论 -
poj1258_最小生成树
poj1258题目链接#include#include#define inf 0x3f3f3fint map[105][105];int dis[105];bool vis[105];int main(){ int i,j,n,sum,count; while(~scanf("%d",&n)) { memset(dis,0x3f,sizeof(dis)); mem原创 2017-04-20 11:19:14 · 335 阅读 · 0 评论 -
模板_poj2299Ultra-QuickSort_归并排序qiu
题目链接题意: 给出你一个数字序列,让你输出用冒泡排序需要换多少次?两个数(a, b)的排列,若满足a > b,则称之为一个逆序对。有多少个逆序对就要换多少次,又因为冒泡排序是从后往前面交换的,归并是分成了若干个有序对从left,mid+1进行比较的。是从前往后的比较交换的。这里的一个规律就是交换的个数是:也就是记录A序列找到第一个比B某一个大的数,他后面还余下的数的个数就是原创 2017-05-02 20:02:01 · 379 阅读 · 0 评论 -
poj1364King_差分约束系统
题目链接题意:现在假设有一个这样的序列,S={a1,a2,a3,a4...ai...at}现在给出一个不等式,使得ai+a(i+1)+a(i+2)+...+a(i+n)ki首先给出两个数分别代表S序列有多少个,有多少个不等式不等式可以这样描述给出四个参数第一个数i可以代表序列的第几项,然后给出n,这样前面两个数就可以描述为ai+a(i+1)+...a(i+n),即从i到原创 2017-04-26 14:56:34 · 332 阅读 · 1 评论