摘要:
. 阅读全文
摘要:
水。。。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<queue>usingnamespacestd;constintMAXN=510;constintMAXM=510*510;constintINF=0x3f3f3f3f;structEdge{intv,w;intnext;}edge[MAXM],edge2[MAXM];intn,m;intcnt,cnt2;intscnt,top,tot;intfirst[MAXN] 阅读全文
摘要:
点击浏览题目大意:/Files/g0feng/胡老师的跨国逃亡.doc关于这道题,是我在学习图论时一本参考书上看到的题目,觉得有趣,就写了写。大概思路:第一次我思考时,首先是找到A国中的边界点,然后找出1到边界点距离的最小值,然后通过通过spfa枚举边界点的去找离2的最小值,但这样应该会超时。于是我将地图预处理了一下,首先找到1离A中所有的点的最短路,然后去找2离B中所有的点的最短路。这里需要注意一下的就是怎么样去保证d[i]一定是代表一个国家之内的最小值,这里我们可以加一个判断,即vis[v] == f。记得把初始值d[src]置为0,这样,我们最后求得的距离一定是国家与国家之间的最小值。然 阅读全文
摘要:
每次枚举一个顶点,然后计算它到各个点的最大值,然后去顶点中最小的一个。#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>#include<map>usingnamespacestd;constintMAXN=110;constintINF=0x3f3f3f3f;intd[MAXN][MAXN];intn,m;voidinit(){for(inti=1;i<MAXN;i++){for(intj=1;j& 阅读全文
摘要:
大意不再赘述。 关于这道题目,我们可以抽象一下,即在保证货车不超过道路给定的最小限重量的情况下,使得货车装载的货物的重量最大。即一个顶点到另一个顶点所有路径中的最小的最大权值。CODE:#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cstdlib>#include<map>usingnamespacestd;constintMAXN=220;constintINF=0x3f3f3f3f;intd[MAXN][MAXN] 阅读全文
摘要:
关键在于模型的抽象与理解。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>#include<map>#include<cmath>usingnamespacestd;constintMAXN=510;structnode{intcostM;inttot;intx1,y1,x2,y2;}a[MAXN];intG[MAXN][MAXN];intxlink[MAXN],ylink[MAXN];boolvis[MAXN];intnx, 阅读全文
摘要:
匹配必须大于或者等于P,学生人数必须大于P。CODE:#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>usingnamespacestd;constintMAXN=310;constintMAXM=310*310;intfirst[MAXN],xlink[MAXN],ylink[MAXN];boolvis[MAXN];intG[MAXN][MAXN];intnx,ny;voidinit(){memset(G,0,sizeof(G));memset(xlink, 阅读全文
摘要:
一开始我以为是最小支配集,后来胡乱YY一下,以为最小支配集 == 最大独立数 == N-最大匹配,结果给我胡乱AC了。后来去网上搜搜解题报告才知道是最小路径覆盖。CODE:#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>usingnamespacestd;#defineMAXN130#defineMAXM20010intG[MAXN][MAXN];intxlink[MAXN];intylink[MAXN];boolvis[MAXN];intnx,ny,m;in 阅读全文
摘要:
水题,题目比较长,描述的题意太长。CODE:#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>usingnamespacestd;#defineMAXN25#defineINF0x3f3f3f3fintn,times;longlongd[MAXN][MAXN];voidinit(){for(inti=1;i<=20;i++){for(intj=1;j<=20;j++){if(i==j)d[i][j]=0;elsed[i][j]=INF;}}}vo 阅读全文
摘要:
水水更健康。建立正、反向图。CODE:#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<queue>usingnamespacestd;constintINF=0x3f3f3f3f;constintMAXN=1010;constintMAXM=100010;structEdge{intv,next,w;}edge[MAXM];intn,m,src;intcnt;intfirst[MAXN],d[MAXN],ans[MAXN];int 阅读全文
摘要:
大意:有两台机器A和B。机器A有n中工作模式,B有m种工作模式。给定k个作业,每换一个模式需要重启一次,让你求出完成k个作业机器最小的重启次数。机器A和B的初始模式为0。思路:任务i在A的mode_x与B的mode_y都可以做的话,那么就连一条边。这样问题就转换成了边最小覆盖的问题,而最小覆盖又可以通过最大匹配来求解。在写邻接表时要注意一个问题,就是在模式0完成的工作不需要重启,因此可以用 u*v的大小来判断是否连边。邻接表:#include<iostream>#include<cstdlib>#include<cstdio>#include<cstr 阅读全文