上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 26 下一页
摘要: 优先队列模拟一下就好。#includeusing namespace std;priority_queueq;int main(){ int n; scanf("%d",&n); int t; scanf("%d",&t); for(int i = 2; i =t){ ... 阅读全文
posted @ 2015-08-30 09:36 陈瑞宇 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 简单题,求一下所有数的2和3的幂是任意调整的,把2和3的因子除掉以后必须相等。求lcm,爆了long long。我得好好反省一下,对连乘不敏感#includeusing namespace std;typedef long long ll;const int maxn = 1e5+5;ll a[ma... 阅读全文
posted @ 2015-08-30 09:36 陈瑞宇 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 算一下复杂度。发现可以直接暴。对于u枚举a和b,判断一下是否连边,更新答案。#includeusing namespace std;int n,m;const int maxn = 4001;#define PB push_backvector G[maxn];bool g[maxn][maxn];... 阅读全文
posted @ 2015-08-30 09:36 陈瑞宇 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 模版集合个数减少是因为匹配串集合中没被匹配过的一对串匹配了。所以就是找一个二分图最大匹配。因为集合X和Y是不好分开的,但是可以直接跑,两个集合都会跑一遍,所以一个匹配会被算两次,返回的时候除以2就行了。也有另外一种写法不用除以2的。#includeusing namespace std;const ... 阅读全文
posted @ 2015-08-29 21:08 陈瑞宇 阅读(570) 评论(1) 推荐(0) 编辑
摘要: 最短路问题,不过起点不只是1个,终点也不止1个,因此把不同电梯的楼层分别编号,相邻楼层之间连边,不同电梯的相同楼层之间连边。dij的时候一次性把所有起点压到队列中,如果直接套版可以加一超级源点s和所有起点连一条dist为0的边。需要维护的信息:为了判断之前电梯有没有出现相同楼层,需要维护一个楼层到点... 阅读全文
posted @ 2015-08-29 18:13 陈瑞宇 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个后缀表达式f(x),最多出现一次x,解方程f(x) = 0。读取的时候用一个栈保存之前的结点,可以得到一颗二叉树,标记出现'X'的路径,先把没有出现'X'的子树算完,由于读取建树的时候是由底向上的,这步可以在读取的时候顺带完成。注意'X'或'1/x'在某个结点和'0'相乘,那么'X'等... 阅读全文
posted @ 2015-08-29 14:50 陈瑞宇 阅读(680) 评论(2) 推荐(0) 编辑
摘要: 题意:求一个无向图的点连通度。把一个点拆成一个入点和一个出点,之间连一条容量为1的有向边,表示能被用一次。最大流求最小割即可。一些细节的东西:1.源点固定,汇点要枚举一遍,因为最小割割断以后会形成连通分量,在分割以后那个连通分量里的割会更大。2.每次枚举重建一下图。3.从入点进,出点出,才认为是经过... 阅读全文
posted @ 2015-08-28 22:28 陈瑞宇 阅读(725) 评论(1) 推荐(0) 编辑
摘要: 求所有点直接的平均最短距离,保存一下出现过的点,题目保证是所有点连通,Floyd求出最短路以后两个for统计一下。#includeusing namespace std;const int maxn = 101;int g[maxn][maxn];bool vis[maxn];vector p;co... 阅读全文
posted @ 2015-08-28 22:27 陈瑞宇 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 如果没有洞,那么任意两点的最短距离就是直线距离,洞里是瞬间的,所以看成一个点就行了(其实点也可以当作半径为0的洞来处理),洞到洞的最短距离都是圆心距离减去半径。剩下的就是求单源最短路径,是完全图,用不加堆优化的dijkstra就行了O(n^2)。#includeusing namespace std... 阅读全文
posted @ 2015-08-28 22:27 陈瑞宇 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 题意,有n个匀速动点,求最小生成树的改变次数。一句话总结:动态问题的一般做法是先求出一个静态的解,然后求出解发生改变的事件,事件按照时间排序,依次处理。先求出最开始的最小生成树(MST),当MST中的某条线段v长度被不在MST的线段u取代的时候,最小生成树才会发生变化,具体来说,已经知道之前的MST... 阅读全文
posted @ 2015-08-28 10:26 陈瑞宇 阅读(734) 评论(0) 推荐(1) 编辑
摘要: 题意:求混合图的欧拉路径。一句话总结:网络流,最主要在于建图,此题是将出度则是和流量联系在了一起,用最大流来调整边的指向。分析:这题的困难之处在于无向边只能用一次,相当于一个方向未定的有向边。首先用并查集判断图的连通性,(直接计数O(1),做1395 Slim Span学到的技巧)。我们知道有向图的... 阅读全文
posted @ 2015-08-27 20:01 陈瑞宇 阅读(351) 评论(2) 推荐(0) 编辑
摘要: 如果不允许转化'#'和'.'的话,那么可以直接在'#'和'.'之间连容量为b的边,把所有'#'和一个源点连接,所有'.'和一个汇点连接,流量不限,那么割就是建围栏(分割'#'和'.')的花费。问题是'#'和'.'是可以转化的,由刚才的思路,可以联想到,当'#'可以转化成'.'的时候,那么就不需要在它... 阅读全文
posted @ 2015-08-26 22:49 陈瑞宇 阅读(1397) 评论(1) 推荐(0) 编辑
摘要: 路径的花费和时间有关,路径的开关是周期性的,那么只要计算出当前时间,路径距离关闭还剩下的时间,如果大于t,那么可以通过,否则,只能等到下一次。如果下一次也不能通过,即t>a,这样的边应该在输入的时候忽略。每次只要考虑,到达某个点的最短时间,因为如果等待,解不会更优。#includeusing nam... 阅读全文
posted @ 2015-08-26 17:39 陈瑞宇 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 恰好属于一个圈,那等价与每个点有唯一的前驱和后继,这让人想到了二分图,把一个点拆开,点的前驱作为S集和点的后继作为T集,然后连边,跑二分图最小权完美匹配。写的费用流。。最大权完美匹配KM算法没看懂#includeusing namespace std;const int maxn = 200+6;s... 阅读全文
posted @ 2015-08-26 16:35 陈瑞宇 阅读(282) 评论(0) 推荐(0) 编辑
摘要: Floyd的变形,本质是动态规划,路径分成的两个部分中取最大值作为该路径的答案,在所有可行路径之中选一个最小值。#includeusing namespace std;const int maxn = 101;int d[maxn][maxn];const int INF = 0x3f3f3f3f;... 阅读全文
posted @ 2015-08-26 15:12 陈瑞宇 阅读(162) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 26 下一页